前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flutter尽然还能有这种操作!!!

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

作者头像
Android技术干货分享
发布2019-05-05 11:46:35
4860
发布2019-05-05 11:46:35
举报
文章被收录于专栏:Android技术分享Android技术分享
Android开发,有些系统功能不符合我们的开发需求,可能回去看看源码,考虑怎么去覆写实现,或者考虑直接拷贝源代码,自己实现,当然如果代码依赖的很复杂,那么拷贝就不是一个明智的选择了。

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

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

image

问题代码 在方法acceptGesture(DragGestureRecognizer)

代码语言:javascript
复制
 _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是初始偏移值,所以导致了这个抖动 而,我们只需要把它改成

代码语言:javascript
复制
 _state = _DragState.accepted;
      /// 1
      final Offset delta = Offset.zero;
      /// 2
      final Duration timestamp = _lastPendingEventTimestamp;
      /// 3
      _pendingDragOffset = Offset.zero;

也就是 delta 设置为0 就好了

总结

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.04.18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Android开发,有些系统功能不符合我们的开发需求,可能回去看看源码,考虑怎么去覆写实现,或者考虑直接拷贝源代码,自己实现,当然如果代码依赖的很复杂,那么拷贝就不是一个明智的选择了。
  • 基于以上,flutter的一个顽疾,滑动控件(如果没有设置physics)里面子界面如果可以点击,那么父控件开始滑动式,会有一个抖动
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档