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

相关文章
相关标签/搜索