一般情况下,我们使用tab切换的时候希望操作完毕之后,能够记住上个页面的状态,

但是使用Flutter的BottomNavigationBar的

时候默认是不记录页面状态的,即切换页面会导致重新加载。

这对我们来说很痛苦,而且非常的浪费资源

如果要想我们的页面在切换完毕之后记录之前的状态。需要一下几个步骤:

1、在包含BottomNavigationBar的页面中,body应该返回IndexedStack或者Pageview

@override
Widget build(BuildContext context) {return Scaffold(backgroundColor: mainBgColor,appBar: AppBar(elevation: 0.0,title: Text('Hello Flutter'),),body: IndexedStack(index: _currentIndex,children: _tabBodies,),bottomNavigationBar: BottomNavigationBar(currentIndex: _currentIndex,type: BottomNavigationBarType.fixed,backgroundColor: Colors.white,selectedItemColor: bottomTabSelectColor,items: _bottomTabs,onTap: setTabSelect,),);
}

2、想要保持状态的页面必须是StatefullWidget,并且在相应的页面的state中混入AutomaticKeepAliveClientMixin类

重写wantKeepAlive方法并返回true

class MemberPage extends StatefulWidget {@override_MemberPageState createState() => _MemberPageState();
}
class _MemberPageState extends State<MemberPage> with AutomaticKeepAliveClientMixin {@overridevoid initState() {print('初始化${this.widget.toStringShort()}');super.initState();}@overrideWidget build(BuildContext context) {return Scaffold(body: Center(child: Text('个人中心'),),);}@overridebool get wantKeepAlive => true;
}

Flutter 之页面状态保持相关推荐

  1. 16-Flutter移动电商实战-切换后页面状态的保持AutomaticKeepAliveClientMixin

    底栏切换每次都重新请求是一件非常恶心的事,flutter 中提供了AutomaticKeepAliveClientMixin 帮我们完成页面状态保存效果. 1.AutomaticKeepAliveCl ...

  2. 页面状态javascript 判断 iframe是否加载成功

    这段时间一直在学习页面状态之类的问题,现在正好有机会和大家分享一下. 最近在做产品的维护,修改一些老的bug.有个bug是jsp页面在加载的时候请求一个iframe.在页面显示的过程当中,窗口会长久的 ...

  3. 四:理解Page类的运行机制(例:基于PageStatePersister的页面状态存取)

    有人说类似gridview datalist这样的控件最好不要用在高并发,IO大的网站中 企业应用中为了快速开发到可以用一用 因为这是一类"沉重"的组件 我们姑且不谈这种看法的正确 ...

  4. vue的html自动刷新,Vue页面刷新记住页面状态的实现

    环境 vue项目,页面有搜索.筛选项等. 需求 页面跳转,切换或者刷新,希望可以记住用户在页面的筛选状态 方案v1 vue有提供一种缓存组件的解决方案 - keep-alive. 缓存不活动的组件实例 ...

  5. flutter bloc_如何使用BLoC模式处理Flutter中的状态

    flutter bloc Last year, I picked up Flutter and I must say it has been an awesome journey so far. Fl ...

  6. html 修改按回退键的url,location.hash保存页面状态的技巧

    hash 属性是一个可读可写的字符串,该字符串是 URL 的锚部分(从 # 号开始的部分). 语法 location.hash 在我们的项目中,有大量ajax查询表单+结果列表的页面,由于查询结果是a ...

  7. 自动化运维工具之Zabbix发现_自动注册及web页面状态监控(四)

    网络发现(Network Discovery) **网络发现是zabbix最具有特色的功能之一,它能根据用户实现定义好的规则自动添加监控主机和服务等 -->speed up Zabbix dep ...

  8. spring boot之http,页面状态跳转与异常处理实战

    spring boot之http,页面状态跳转与异常处理实战 参考文章: (1)spring boot之http,页面状态跳转与异常处理实战 (2)https://www.cnblogs.com/yu ...

  9. flutter检测网络状态

    flutter检测网络状态 原来使用的插件connectivity已经停止使用,现在使用的是新版的connectivity_plus 插件地址:https://pub.dev/packages/con ...

  10. 路由跳转时的页面状态保存

    前言 我们在开发网页时,经常会遇到一种情况--在一个页面对页面初始状态进行了修改(如已请求到的数据.表单数据.滚动高度等等),跳转到另外一个页面之后再返回到原页面(路由回退),原页面需要保持原先的状态 ...

最新文章

  1. [java手把手教程][第二季]java后端博客系统文章系统——No10
  2. Android 第三方之MPAndroidChart
  3. 成功解决RuntimeError: Decompression ‘SNAPPY‘ not available.  Options: [‘GZIP‘, ‘UNCOMPRESSED‘]
  4. lazada食品类目如何做好运营,来提升店铺销量?
  5. angular4 学习日志(一 依赖注入)
  6. 华为云 - 公有云产品 - OBS计费说明
  7. python面试必考知识点_python编程面试中必考的知识点,数据类型全解,笔记超全面...
  8. 【二叉树】牛客网:二叉树的镜像
  9. Python学习笔记 03 Python对象
  10. SpringBoot修改内置tomcat版本
  11. python将图片变成水墨画
  12. python曲线拟合准确度评估_使用Python SciPy量化曲线拟合的质量
  13. datastage错误之Consumed more than 100,000 bytes looking for record delimiter; aborting
  14. Js中调用调用打印和自动生成条形码
  15. web课程设计 基于html+css+javascript+jquery女性化妆品商城
  16. Powerdesinger使用心得
  17. day08 操作索引脏读、幻读、不可重复读 python复习
  18. 国际上公认的IT证书
  19. not marked as ignorable
  20. JAVA——实现各国中英文名称互译功能的查询程序

热门文章

  1. 1500个javascript特效
  2. 解决Ubuntu设置静态ip网络连接失败的问题
  3. Windows批处理bat文件
  4. pytorch 基本数学运算
  5. Colibri 片段化学空间的兴起
  6. makefile是如何自动生成的
  7. 我用AI生成了这些明星一生的样貌变化 | 已填坑附源码
  8. MySQL5.7 配置优化
  9. 什么是埋点?简述埋点的操作流程
  10. 可以自学计算机考证吗