Flutter-踩坑细节

1.Container中使用height: double.infinity,上层必须为弹性布局,如Expanded、row、colum。
2.TextField 不能直接放到 Row 里面,需要添加Expanded,
去除内边距:TextField - decoration - contentPadding: EdgeInsets.all(0),
3.Container中color不能与装饰中的color同时出现。
4.每次插件或者相关环境更新都需要 flutter doctor检查修复。
5.onTap点击事件无效或者卡顿的时候,考虑给下层的Container添加color。
6.Row、Colum主轴方向默认的长度是最大的。
7.tab中添加自定义控制器,需要抽出来单独写,例如with TickerProviderStateMixin, 因为tabcontroll只能继承一个with。
8.Flutter中TabBarView切换状态保存:
9.避免setState导致的内存泄漏:
if (mounted) {
setState(() {});
}

TabBarView会添加N多个子的Widget控件,直接在这些子控件中,需要保存状态的控件的State实现一下 AutomaticKeepAliveClientMixin ,然后 wantKeepAlive 返回一个True就可以可以了,保存代码,模拟器刷新后,会发现切换状态不会重置状态了

json序列化:(map转实体)
dependencies:
json_annotation: ^3.0.0
analyzer: 0.38.2
dev_dependencies:
flutter_test:
sdk: flutter
build_runner: ^1.7.0 // 暂时不要改变
json_serializable: ^3.2.0 // 暂时不要改变

1.网页中生成实体
https://caijinglong.github.io/json2dart/index.html
2.把生成文件导入项目中
2.执行命令,生成.g文件
Terminal运行:flutter packages pub run build_runner build --delete-conflicting-outputs(删除后重建)

await关键字必须在async函数内部使用
调用async函数必须使用await关键字

你可能感兴趣的:(Flutter-踩坑细节)