Flutter中AutomaticKeepAliveClientMixin,切换tab后保留tab的状态,避免initState方法重复调用

1,441 阅读1分钟

目的:

切换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('我的'),
    );
  }
}