fangmd / blogsource

6 stars 0 forks source link

Flutter 知识点 #41

Open fangmd opened 3 years ago

fangmd commented 3 years ago

Flutter: 1.22.5 dart: 2.10

fangmd commented 3 years ago

key

https://segmentfault.com/a/1190000011276853

key的作用:

Flutter是受React启发的,所以Virtual Dom的diff算法也参考过来了(应该是略有修改),在diff的过程中如果节点有Key来比较的话,能够最大程度重用已有的节点(特别在列表的场景),除了这一点这个Key也用在很多其他的地方这个以后会总结一下。总之,这里我们可以知道key能够提高性能,所以每个Widget都会构建方法都会有一个key的参数可选,贯穿着整个框架。

fangmd commented 3 years ago

遇到的问题

  1. TextField:

焦点问题;

iOS 下双击,长按 bug (多语言问题)

  1. WebView

目前已经出官方正式版本

  1. 第三方服务支持不到位

比如 IM环信,umeng统计

  1. Material Design,Widget 的样式自带内容很多,通常还是基于原始组件按照 UI 再开发
fangmd commented 3 years ago

父子 Widget 传值/交互

  1. 父->子 传值

通过子Widget构造函数传值

ChangeNotifier/ValueNotifier 传值,刷新界面(观察者模式)

使用状态管理方案 Provider / InheritedWidget

使用 EventBus 方案

  1. 子->父 传值

父 Widget 给子 Widget 设置回调函数,子 Widget 调用回调函数给 父 Widget 传值

Controller 模式传值

使用状态管理方案 Provider / InheritedWidget

使用 EventBus 方案