Flutter切換tabar后不會保留tabbar狀態(tài) ,Flutter中為了節(jié)約內(nèi)存不會保存widget的狀態(tài),widget都是臨時變量。當(dāng)我們使用TabBar,TabBarView是我們就會發(fā)現(xiàn),切換tabar,initState又會被調(diào)用一次。
怎么為了讓tabar一直保存在內(nèi)存中,不被銷毀?
添加AutomaticKeepAliveClientMixin,并設(shè)置為bool get wantKeepAlive => true;,這樣就能一直保持當(dāng)前不被initState了。
class TestListView extends StatefulWidget {
@override
_ChatPageState createState() => _ChatPageState();
}
//1.添加with AutomaticKeepAliveClientMixin
class _TestListViewState extends State<TestListView>
with AutomaticKeepAliveClientMixin {
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
//3.添加 super.build(context) 必須添加
super.build(context);
return Container();
}
//2.添加 bool get wantKeepAlive => true
//不會被銷毀,占內(nèi)存中
@override
bool get wantKeepAlive => true;
}
1.添加with AutomaticKeepAliveClientMixin
class _TestListViewState extends State<TestListView>
with AutomaticKeepAliveClientMixin{}
2.添加 bool get wantKeepAlive => true,是否保保持頁面不變
@override
bool get wantKeepAlive => true;
3.添加 super.build(context) 必須添加
@override
Widget build(BuildContext context) {
//3.添加 super.build(context) 必須添加
super.build(context);
return Container();
}