Flutter学习笔记(四)项目实践
鸣谢:
首先谢谢大佬们的开源,学习中参考过的项目及文档: FlutterUnit 、 flutter_shuqi 、Flutter中文网、 Flutter 老孟
项目简介:
该项目主要是练手所用,把学到的东西整理一下,做个小项目,算是对学习的一种总结吧。要学的还有很多,加油吧,打工人。 嘿嘿,不多说,先上图:
主要涵盖内容:仿豆瓣电影列表、仿微博主页置顶、动画启动页、轮播图、复杂列表处理、下拉刷新、Loading图、侧滑Cell等。
主要涵盖内容:登录、二维码展示、加载网页、主题色切换、搜索、静态存储、国际化等。
通过该项目的练手,自己学会了很多,也了解了更多关于Flutter的知识,这周公司也开始了纯Flutter新项目,加油吧,嘿嘿。
项目问题:
当然也遇到了很多问题,学习的过程,就是遇到问题,解决问题的过程。
- 很多按钮点击默认有水波纹效果,如何全局去除 splashColor
MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData(
// 去除全局水波纹效果
splashColor: Colors.transparent,
highlightColor: Colors.transparent,
),
home: MainScreenPage(),
);
- 切换tab后保留tab的状态,避免 initState 方法重复调用 AutomaticKeepAliveClientMixin
添加AutomaticKeepAliveClientMixin
,并实现对应的方法
bool get wantKeepAlive => true;
,
同时build
方法实现父方法 super.build(context);
- setState() called after diapose() 网络请求成功前退出了页面,State 被从对象树销毁
if (mounted) {
setState(() {
this._books = dataModel.books;
});
}
- 滑动Sliver列表时,修改状态栏颜色无效 AnnotatedRegion
使用AnnotatedRegion修改状态栏字体颜色,没有作用,要在下面的 SliverAppBar 中设置
SliverAppBar(
brightness:
navAlpha > 0.5 ? Brightness.light : Brightness.dark, //修改状态栏颜色
),
- TextField 弹出键盘时,出错 SingleChildScrollView
可以使用 SingleChildScrollView 包裹内容处理
- initState 中请求数据,展示Loading报错处理 Future.delayed
void initState() {
super.initState();
Future.delayed(Duration.zero, () {
_loadData();
});
}
- 对于接口返回的字符串数据,不可以直接使用
isEmpty
判空,因为返回null时,会报错
if (str != null && str != "") {
print("success");
}
感谢第三方库的贡献:
cupertino_icons、 dio、 qr_flutter、 fluttertoast、 shared_preferences、 cached_network_image、 provider、 webview_flutter、 carousel_slider、 flutter_easyrefresh、 flutter_spinkit、 flutter_slidable
I’m not perfect. But I keep trying.
奉上项目地址:flutter_demo
转载自:https://juejin.cn/post/6915049633962000392