Flutter 之页面状态保持
一般情况下,我们使用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 之页面状态保持相关推荐
- 16-Flutter移动电商实战-切换后页面状态的保持AutomaticKeepAliveClientMixin
底栏切换每次都重新请求是一件非常恶心的事,flutter 中提供了AutomaticKeepAliveClientMixin 帮我们完成页面状态保存效果. 1.AutomaticKeepAliveCl ...
- 页面状态javascript 判断 iframe是否加载成功
这段时间一直在学习页面状态之类的问题,现在正好有机会和大家分享一下. 最近在做产品的维护,修改一些老的bug.有个bug是jsp页面在加载的时候请求一个iframe.在页面显示的过程当中,窗口会长久的 ...
- 四:理解Page类的运行机制(例:基于PageStatePersister的页面状态存取)
有人说类似gridview datalist这样的控件最好不要用在高并发,IO大的网站中 企业应用中为了快速开发到可以用一用 因为这是一类"沉重"的组件 我们姑且不谈这种看法的正确 ...
- vue的html自动刷新,Vue页面刷新记住页面状态的实现
环境 vue项目,页面有搜索.筛选项等. 需求 页面跳转,切换或者刷新,希望可以记住用户在页面的筛选状态 方案v1 vue有提供一种缓存组件的解决方案 - keep-alive. 缓存不活动的组件实例 ...
- 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 ...
- html 修改按回退键的url,location.hash保存页面状态的技巧
hash 属性是一个可读可写的字符串,该字符串是 URL 的锚部分(从 # 号开始的部分). 语法 location.hash 在我们的项目中,有大量ajax查询表单+结果列表的页面,由于查询结果是a ...
- 自动化运维工具之Zabbix发现_自动注册及web页面状态监控(四)
网络发现(Network Discovery) **网络发现是zabbix最具有特色的功能之一,它能根据用户实现定义好的规则自动添加监控主机和服务等 -->speed up Zabbix dep ...
- spring boot之http,页面状态跳转与异常处理实战
spring boot之http,页面状态跳转与异常处理实战 参考文章: (1)spring boot之http,页面状态跳转与异常处理实战 (2)https://www.cnblogs.com/yu ...
- flutter检测网络状态
flutter检测网络状态 原来使用的插件connectivity已经停止使用,现在使用的是新版的connectivity_plus 插件地址:https://pub.dev/packages/con ...
- 路由跳转时的页面状态保存
前言 我们在开发网页时,经常会遇到一种情况--在一个页面对页面初始状态进行了修改(如已请求到的数据.表单数据.滚动高度等等),跳转到另外一个页面之后再返回到原页面(路由回退),原页面需要保持原先的状态 ...
最新文章
- [java手把手教程][第二季]java后端博客系统文章系统——No10
- Android 第三方之MPAndroidChart
- 成功解决RuntimeError: Decompression ‘SNAPPY‘ not available. Options: [‘GZIP‘, ‘UNCOMPRESSED‘]
- lazada食品类目如何做好运营,来提升店铺销量?
- angular4 学习日志(一 依赖注入)
- 华为云 - 公有云产品 - OBS计费说明
- python面试必考知识点_python编程面试中必考的知识点,数据类型全解,笔记超全面...
- 【二叉树】牛客网:二叉树的镜像
- Python学习笔记 03 Python对象
- SpringBoot修改内置tomcat版本
- python将图片变成水墨画
- python曲线拟合准确度评估_使用Python SciPy量化曲线拟合的质量
- datastage错误之Consumed more than 100,000 bytes looking for record delimiter; aborting
- Js中调用调用打印和自动生成条形码
- web课程设计 基于html+css+javascript+jquery女性化妆品商城
- Powerdesinger使用心得
- day08 操作索引脏读、幻读、不可重复读 python复习
- 国际上公认的IT证书
- not marked as ignorable
- JAVA——实现各国中英文名称互译功能的查询程序