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

文章讨论了在Android开发中,如何针对不满足需求的系统功能进行源码修改,包括覆写或直接拷贝源代码。特别提到了Flutter框架中滑动控件的抖动问题,通过分析和修改`acceptGesture`方法内的代码解决了这一问题。此外,文章强调了Flutter允许直接修改系统代码带来的便利性,并提供了Dart语法的学习章节概述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

img

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

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

img

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 就好了

img

总结

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

更多Flutter资料可以扫描下方二维码免费领取!!

目录

在这里插入图片描述

第一章 为什么 Flutter 是跨平台开发 的终极之选

  • 01 这是为什么?
  • 02 跨平台开发
  • 03 什么是 Flutter
  • 04 Flutter 的特性

在这里插入图片描述

第二章 在 Windows 上搭建 Flutter 开发环境

  • 01 使用镜像
  • 02 系统要求
  • 03 获取 Flutter SDK
  • 04 编辑器设置
  • 05Android 设置

在这里插入图片描述

第三章 编写您的第一个 Flutter App

在这里插入图片描述

第四章 Flutter 开发环境搭建和调试

  • 1.开发环境的搭建
  • 2.模拟器的安装与调试
  • 3.开发环境的搭建
  • 4.模拟器的安装与调试

在这里插入图片描述

第五章 Dart 语法篇之基础语法(一)

一、Hello Dart
二、数据类型
三、变量和常量
四、集合(List、Set、Map)
五、流程控制
六、运算符
七、异常
八、函数

在这里插入图片描述

第六章 Dart 语法篇之集合的使用与源码 解析(二)

一、List
二、Set
三、Map
四、Queue
五、LinkedList
六、HashMap
七、Map、HashMap、LinkedHashMap、SplayTreeMap
区别

八、命名构造函数 from 和 of 的区别以及使用建议

在这里插入图片描述

第七章 Dart 语法篇之集合操作符函数与 源码分析(三)

  • List item

在这里插入图片描述

第八章 Dart 语法篇之函数的使用(四)

在这里插入图片描述

第九章 Dart 语法篇之面向对象基础(五)

在这里插入图片描述

第十章 Dart 语法篇之面向对象继承和 Mixins(六)

在这里插入图片描述

第十二章 Dart 语法篇之类型系统与泛型 (七)

在这里插入图片描述

第十三章 Flutter 中的 widget

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值