目的:
切换tab后保留tab的状态,避免initState
方法重复调用
默认情况:
从上图可以发现当点击tab1的时候,对应的initState
方法就会被调用。而点击第2、3个tab的时候并不会重复触发initState
方法(第2、3个tab对应的页面已处理过)。
解决办法 添加AutomaticKeepAliveClientMixin,并实现对应的方法bool get wantKeepAlive => true;,同时build方法实现父方法 super.build(context); 看下AutomaticKeepAliveClientMixin里面的一个说明:
class UserPageV2 extends StatefulWidget {
@override _UserPageV2State createState() => _UserPageV2State();
}
class _UserPageV2State extends State<UserPageV2> with AutomaticKeepAliveClientMixin {
@override bool get wantKeepAlive => true;
@override void initState() {
super.initState();
print('------UserPageV2---------');
}
@override Widget build(BuildContext context) {
super.build(context);
return Container(
alignment: Alignment.center,
child: Text('我的'),
);
}
}