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