Flutter实现TabBarView切换页面时每个页面只initState一次
在 TabBarView 组件中切换页面时,子页面每次均会重新 initState 一次,导致每次都切换页面均会重绘,如下图

如果需要只在第一次进页面 initState 一次,后面再进入页面不再 initState ,需要在子页面加上以下内容
首先在继承的类后面加上 with AutomaticKeepAliveClientMixin
with AutomaticKeepAliveClientMixin
然后在类中加入
@override bool get wantKeepAlive => true; ///see AutomaticKeepAliveClientMixin
最后在build中加入
super.build(context); /// see AutomaticKeepAliveClientMixin
完整代码如下
import 'package:flutter/material.dart';
class Pages extends StatefulWidget{
@override
_PagesState createState() => _PagesState();
}
class _PagesState extends State<Pages> with AutomaticKeepAliveClientMixin{
@override
bool get wantKeepAlive => true; ///see AutomaticKeepAliveClientMixin
@override
Widget build(BuildContext context) {
super.build(context); /// see AutomaticKeepAliveClientMixin
// TODO: implement build
return Container();
}
}
完成效果如下,此时仅在第一次进入页面时会执行initState


浙公网安备 33010602011771号