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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM