微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

flutter尽然还能有这种操作!!!

Android开发,有些系统功能不符合我们的开发需求,可能回去看看源码,考虑怎么去覆写实现,或者考虑直接拷贝源代码,自己实现,当然如果代码依赖的很复杂,那么拷贝就不是一个明智的选择了。

webp

这个弹窗有可能你遇到过,当我们修改代码文件的时候,androidsutido会弹出这个弹窗,给你一个提示,大多数时候我们关了这个弹窗,会当什么都没发生过,但是我们如果点下确定的,是可以改代码的,wtf!!!
虽然在java这边跑的是class,但是在Flutter这边,改了就会生效了!!!

基于以上,Flutter的一个顽疾,滑动控件(如果没有设置physics)里面子界面如果可以点击,那么父控件开始滑动式,会有一个抖动

webp

问题代码方法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 就好了

webp

总结

对于Flutter 改源码,会立即生效,即使是多人开发这个更改工作量也是很小的。而且可以直接更改系统代码!!!可以直接更改系统代码!!!可以直接更改系统代码!!!
因此Flutter的扩展自用度,真的难以想象,(至少在Flutter底层代码没被写进Android系统前是这样的。。。)


webp

关于Flutter的全部学习内容,我们这边都有系统的知识体系以及进阶视频资料,有需要的朋友可以加群免费领取安卓进阶视频教程,源码,面试资料,群内有大牛一起交流讨论技术;点击链接加入群聊【腾讯@Android高级架构】
包括自定义控件、NDK、架构设计、混合式开发工程师(React native,Weex)、性能优化、完整商业项目开发等)

webp

                                                                Android高级进阶视频教程


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐