flutter盡然還能有這種操做!!!

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

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

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

問題代碼 在方法acceptGesture(DragGestureRecognizer)java

_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是初始偏移值,因此致使了這個抖動 而,咱們只須要把它改爲android

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

也就是 delta 設置爲0 就行了bash

總結

對於flutter 改源碼,會當即生效,即便是多人開發這個更改工做量也是很小的。並且能夠直接更改系統代碼!!!能夠直接更改系統代碼!!!能夠直接更改系統代碼!!!
所以flutter的擴展自用度,真的不可思議,(至少在flutter底層代碼沒被寫進Android系統前是這樣的。。。)spa

相關文章
相關標籤/搜索