入门篇:
App入口函数
void main() {
runApp(myApp());
}
入口app return MateriallApp()
一个类vc功能的Widget,return Scalffold,包括appBar(导航条),body(页面内容)
widget类接收外部调用时的参数
使用StatelessWidget描述展现不变化页面
使用StatefulWidget控制页面不同状态下交互
StatefulWidget 需要多一个 State类,并在widget内重写createState(),
State类中,
重写initState 初始化和控制变化量,以及动画描述类Animation和AnimationControler
重写Widget build构建页面描述,构建时,可从对应widget读取变量
页面跳转使用Navigator.push等操作,使用Routes进行路由配置,路由可以讲Widget的创建和字符串绑定 ,这样可以push (字符串)跳转对应Widget
常用控件Container(类似view),Row,Column (类似UIStackView),Image(自带本地和网络展示),Text(展示文本到屏幕上),RaisedButton,TextField,DatePicker,Dialog/Alert,ListView
通过SizedBox插入元素之间,控制元素间隔
本地存储shared_preferences
文件存储path_provider
With>Extends. Implements>extesion
中级篇重要组件:
GridView 网格列表
自定义ListView,Cell,初始化时不指定cell container的高度,内部会自适应。
网络请求,json转化
定时器Timer,dispose中要销毁timer
协议WidgetsBindingObserver(监听app生命周期resumed、inactive、pause、detached)
Widget,State生命周期(create-initState-didChangeDependencies-build<-setState-deactivate-dispose-end
推送-整合极光
通知Notification
数据共享InheritedWidget。保存依赖,局部刷新
全局状态管理工具provider
动画实现Animation,AnimationController,可以使用提供好的Tween具体实现、和其他内置好的动画
PlatformView 可以嵌入不同平台的原生view
屏幕适配:ScreenUtil
Extension使用,扩展基础类的方法
建立开发代码模版
高级篇
ListView原理及优化
多线程
context理解
平台差异化解决MethodChannel
flutter性能优化
卡顿排查:DevTools
避免build执行耗时操作,因为会频繁调用
使用isolate进行cpu密集型操作
拆分巨大的Widget,避免饭后大树,widget会享有更细粒度的重建和复用,setState时会重建Widget。
多使用const,这样避免更新不需要变的widget组件
可选组件不要时,使用nil。而不是Box
ListView使用builder方法,只会绘制可见数据,即懒加载。
长列表,使用itemExtent
半透明效果使用图片替代、AnimatedOpacity
RepaintBoundary分离多变和不变的图层
Flutter 知识点汇总
https://blog.csdn.net/sinat_17775997/article/details/106723787?spm=1001.2101.3001.6650.20&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-20-106723787-blog-107877470.t5_layer_eslanding_C_4&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-20-106723787-blog-107877470.t5_layer_eslanding_C_4&utm_relevant_index=20