这个弹窗有可能你遇到过,当我们修改代码源文件的时候,androidsutido会弹出这个弹窗,给你一个提示,大多数时候我们关了这个弹窗,会当什么都没发生过,但是我们如果点下确定的,是可以改代码的,wtf!!! 虽然在java这边跑的是class,但是在flutter这边,改了就会生效了!!!
image
问题代码 在方法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系统前是这样的。。。)