梦想还是要有的,万一忘了咋办?

0%

Flutter

网站

FlutterApp代码结构

1
2
3
4
5
6
7
8
9
flutter_app
├── android
├── fonts
├── l10n-arb
├── images
├── ios
├── jsons
├── lib
└── test
1
2
3
4
5
6
7
lib
├── common
├── l10n
├── models
├── states
├── routes
└── widgets
文件夹 作用
common 工具类,比如方法类、网络接口类、全局静态类等
l10n 国际化相关的类
models Json文件对于的DartModel
states 保存App中需要夸组件共享的状态类
routes 存放路由页面类
widgets APP内封装的一些Widget组件

积累

开屏广告返回到首页

1
2
3
//连续两次push
Navigator.push(main);
Navigator.push(AdPage);

SafeArea

可以看到SafeArea通过MediaQuery来检测屏幕尺寸,使应用程序的大小能与屏幕适配。
然后返回了一个Padding Widget 来包裹住我们编写的页面。这样我们的页面就不会被异形屏幕给遮挡住了。

滚动组件嵌套问题

例如两个listview嵌套在一起,会报错

1
Viewports expand in the scrolling direction to fill their container

被嵌套滚动组件 用Expanded 包一下。

listview 嵌套column问题

RenderFlex children have non-zero flex but incoming height constraints are unbounded.

原因:
ListView垂直方向的计算是包裹子View的,也就是说子View必须有一个明确的高度,或者尽可能小的高度,而不能是无限高。
Row是横向排列,在Row中使用Expanded是填充水平方向的剩余空间,这和ListView的这一特性没有冲突,可以使用。
而Column是竖直排列,在Column中使用Expanded是填充竖直方向的剩余空间,这将和ListView的这一特性发生冲突,因为ListView将无法计算自己的子View的高度
解决方案:IntrinsicHeight可以根据子控件的高度,智能调整自身高度.

FutureProvider 不可以更新数据

FutureProvider 只是简单的FutureBuilder 包装,不具备数据更新能力。

###