Flutter保持頁面狀態(tài)AutomaticKeepAliveClientMixin

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();
  }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容