天天饱

如果你只做自己能力范围之内的事情,就永远没法进步

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

 

posted @ 2019-09-09 11:17  天天饱  阅读(5318)  评论(1编辑  收藏  举报