Flutter盡然還能有這種操作!!!

Android開發,有些系統功能不符合我們的開發需求,可能回去看看源碼,考慮怎麼去覆寫實現,或者考慮直接拷貝源代碼,自己實現,當然如果代碼依賴的很複雜,那麼拷貝就不是一個明智的選擇了。

這個彈窗有可能你遇到過,當我們修改代碼源文件的時候,androidsutido會彈出這個彈窗,給你一個提示,大多數時候我們關了這個彈窗,會當什麼都沒發生過,但是我們如果點下確定的,是可以改代碼的,wtf!!!
雖然在java這邊跑的是class,但是在flutter這邊,改了就會生效了!!!

基於以上,flutter的一個頑疾,滑動控件(如果沒有設置physics)裏面子界面如果可以點擊,那麼父控件開始滑動式,會有一個抖動

問題代碼 在方法acceptGesture(DragGestureRecognizer)

 _state = _DragState.accepted;
      /// 1
      final Offset delta = _pendingDragOffset;
      /// 2
      final Duration timestamp = _lastPendingEventTimestamp;
      /// 3
      _pendingDragOffset = Offset.zero;

當我們開始拖動的時候會執行以上代碼,_pendingDragOffset 是用於判斷是否開始拖動的,當 _pendingDragOffset >kTouchSlop 則調用acceptGesture確認開始滑動,而這個時候 _pendingDragOffset 是 大於kTouchSlop的至少是18px,這個值的重置在3處,,而1處的delta是初始偏移值,所以導致了這個抖動 而,我們只需要把它改成

 _state = _DragState.accepted;
      /// 1
      final Offset delta = Offset.zero;
      /// 2
      final Duration timestamp = _lastPendingEventTimestamp;
      /// 3
      _pendingDragOffset = Offset.zero;

也就是 delta 設置爲0 就好了

總結

對於flutter 改源碼,會立即生效,即使是多人開發這個更改工作量也是很小的。而且可以直接更改系統代碼!!!可以直接更改系統代碼!!!可以直接更改系統代碼!!!
因此flutter的擴展自用度,真的難以想象,(至少在flutter底層代碼沒被寫進Android系統前是這樣的。。。)

好了,寫到這裏也結束了,在文章最後放上一個小小的福利,以下爲小編自己在學習過程中整理出的一個關於Flutter的學習思路及方向,從事互聯網開發,最主要的是要學好技術,而學習技術是一條慢長而艱苦的道路,不能靠一時激情,也不是熬幾天幾夜就能學好的,必須養成平時努力學習的習慣,更加需要準確的學習方向達到有效的學習效果。
由於內容較多就只放上一個大概的大綱,需要更及詳細的學習思維導圖的加羣 Android IOC架構設計免費獲取。
羣內還有免費的高級UI、性能優化、架構師課程、NDK、混合式開發(ReactNative+Weex)微信小程序、Flutter全方面的Android進階實踐技術資料,並且還有技術大牛一起討論交流解決問題。

點贊+加羣免費獲取 Android IOC架構設計

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章