Flutter 总结

268 阅读2分钟

Tabbar控件实现

SingleTickerProviderStateMixin 实现 Tab 的动画切换效果

每个 Tab 对应的 StatefulWidget 的 State ,需要通过 with AutomaticKeepAliveClientMixin ,然后重写 @override bool get wantKeepAlive => true; ,就可以实不重新构建的效果了
PageView 实现图片轮播的效果
FadeInImage.assetNetwork 可以设置占位图的Image

小部件生命周期:

didUpdateWidget 外部组件有更新,会执行子组件的这个方法, 去更新widget
高级特性解除状态

  • 抽离成组件

List list = List(); list ..add(HomeScreen)..add(PageScreen); ..用完之后还是返回list

在flutter中页面的概念是widget

123.4456.toStringAsFixed(2) 四舍五入

app实战

import 'package:http/http.dart' as http async 和awit 同时使用

dart异步处理

延迟加载:

Future.delayed(Duration(milliseconds: 400), () => Scaffold.of(context).openEndDrawer());

可以用async 和awit 写成同步调用

Future和node js promise 相同

等分用弹性布局 ,比如三等分使用Flex, Expanded {flex:2},宽度去掉就自动填满整个屏幕

SizeBox 用来修饰子组件大小
定位:Positioned 层叠覆盖

Wrap 流式布局
spacing :横向间距 runSpacing:垂直间距

限制类容器BoxConstraints 有最小高度和宽度

获取上一个页面传过来的参数
页面: 在 无状态组件 接收上一个页面传过来的参数

RouteSettings settings = ModalRoute.of(context).settings;

Map<String, dynamic> arguments = settings.arguments;   

return Scaffold(body: xxxxPage(arguments: arguments));
xxxxPage是有状态组件

Dart下 ??,??= ,AA ?? "999" 表示如果AA为空,返回999、
AA ??= "999" 表示如果AA为空,给AA设置为999

   Future对象表示异步操作的结果,dart中,很多一步操作的方法都会返回一个Future对象,   
   Future对象只有两种状态,completed和error。对象的then方法可以传递一个状态为completed时的回调函数。  
   async…await  简化Future操作,不需要设置回调。

Flutter 的实战技巧
InheritedWidget