flutter 保持页面状态
import 'package:flutter/material.dart';
import 'KeepAliveDemo.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.green, //定义主题风格 primarySwatch
),
home: KeepAliveDemo(),
);
}
}
import 'package:flutter/material.dart';
import 'package:flutter_app/MyHomePage.dart';
class KeepAliveDemo extends StatefulWidget {
_KeepAliveDemoState createState() => _KeepAliveDemoState();
}
/*
第一步:with是dart的关键字,意思是混入的意思,
就是说可以将一个或者多个类的功能添加到自己的类无需继承这些类,
避免多重继承导致的问题。
SingleTickerProviderStateMixin 主要是我们初始化TabController时,
需要用到vsync ,垂直属性,然后传递this
*/
class _KeepAliveDemoState extends State<KeepAliveDemo> with SingleTickerProviderStateMixin {
TabController _controller; @override
void initState(){
super.initState();
_controller = TabController(length:3, vsync: this);
}
@override //第二步保持页面状态返回true
bool get wantKeepAlive => true;
//重写被释放的方法,只释放TabController
@override
void dispose(){
_controller.dispose();
super.dispose();
} @override
Widget build(BuildContext context) {
return Scaffold(
appBar:AppBar(
title:Text('Keep Alive Demo'),
bottom:TabBar(
controller: _controller,
tabs:[
Tab(icon:Icon(Icons.directions_car)),
Tab(icon:Icon(Icons.directions_transit)),
Tab(icon:Icon(Icons.directions_bike)),
],
)
),
body:TabBarView(
controller: _controller,
children: <Widget>[
MyHomePage(),
MyHomePage(),
MyHomePage()
],
)
);
}
}
效果:

flutter 保持页面状态的更多相关文章
- Flutter 之页面状态保持
一般情况下,我们使用tab切换的时候希望操作完毕之后,能够记住上个页面的状态, 但是使用Flutter的BottomNavigationBar的 时候默认是不记录页面状态的,即切换页面会导致重新加载. ...
- Flutter保持页面状态AutomaticKeepAliveClientMixin
使用bottomNavigationBar切换底部tab,再切换回来就会丢失之前的状态(重新渲染列表,丢失滚动条位置). 解决方法 使用 AutomaticKeepAliveClientMixin 重 ...
- Flutter实战视频-移动电商-16.补充_保持页面状态
16.补充_保持页面状态 修正一个地方: 设置了item的高度为380 横向列表为380.最终build的高度也增加了50为430. 增加了上面的高度以后,下面那个横线划掉的价格可以显示出来了. 但是 ...
- Flutter移动电商实战 --(16)切换后页面状态的保持AutomaticKeepAliveClientMixin
底栏切换每次都重新请求是一件非常恶心的事,flutter 中提供了AutomaticKeepAliveClientMixin 帮我们完成页面状态保存效果. 1.AutomaticKeepAliveCl ...
- 09 Flutter底部Tab切换保持页面状态的几种方法
IndexedStack:保此所有页面的状态: AutomaticKeepAliveClientMixin:保此部分页面的状态: 修改的页面代码: 页面效果: Tabs.dart import 'pa ...
- 16-Flutter移动电商实战-切换后页面状态的保持AutomaticKeepAliveClientMixin
底栏切换每次都重新请求是一件非常恶心的事,flutter 中提供了AutomaticKeepAliveClientMixin 帮我们完成页面状态保存效果. 1.AutomaticKeepAliveCl ...
- 巧用location.hash保存页面状态
在我们的项目中,有大量ajax查询表单+结果列表的页面,由于查询结果是ajax返回的,当用户点击列表的某一项进入详情页之后,再点击浏览器回退按钮返回ajax查询页面,这时大家都知道查询页面的表单和结果 ...
- Windows Phone开发(9):关于页面状态
原文:Windows Phone开发(9):关于页面状态 按照一般做法,刚学会如何导航,还是不够的,因为要知道,手机里面的每个页面,就如同Web页面一样,是无状态的. 啥是无状态?如果我们玩过Web开 ...
- 四:理解Page类的运行机制(例:基于PageStatePersister的页面状态存取)
有人说类似gridview datalist这样的控件最好不要用在高并发,IO大的网站中企业应用中为了快速开发到可以用一用因为这是一类"沉重"的组件我们姑且不谈这种看法的正确性(我 ...
随机推荐
- linux系统编程之进程(五)
今天继续学习系统编程,学习的主题还是进程,今天主要讨论的是守护进程相关的概念,开始进入正题: 什么是守护进程: 守护进程的创建步骤: 在描述它之前,首先得先了解两个概念:进程组.会话期: ...
- Handling skewed data---Error metrics for skewed(偏斜的) classes(precision&recall)
skewed classes skewed classes: 一种类里面的数量远远高于(或低于)另一个类,即两个极端的情况. 预测cancer的分类模型,如果在test set上只有1%的分类误差的话 ...
- Stone Game
Description There is a stone game.At the beginning of the game the player picks n piles of stones in ...
- SQL Server Default Trace查看是谁对数据库进行了DDL操作
在我们的工作中可能会遇到这样一种情形.由于数据库中某些对象被altered/created/deleted,造成我们的应用程序crash. 当我们把问题解决之后,老板可能会问发生了什么?为什么会这样? ...
- html 摄像头画面水平翻转
<video onloadedmetadata="" id="inputVideo" autoplay muted playsinline>< ...
- python 使用 tibco ems
emshelper.py #encoding=utf-8 import jpype jvmpath=r"C:\Program Files\Java\jre1.8.0_161\bin\serv ...
- 定位的盒子叠放顺序z-index
1.正常情况,按照顺序,最后的盒子在最上面,默认z-index为02.当使用z-index,数字越大,越优先显示在上面3.注意,只要定位的盒子才可以使用该方法 <body> <div ...
- Python学习之--用户输入以及运算
一. 用户输入:input 1. 函数input() 让程序暂停运行,等待用户输入一些文本. 2.使用int()将字符串转为数值 二.运算:+-*. 1.求模运算符 (%)将两个数相除并返回余数: 2 ...
- linux (core dump)调试
转自 http://www.cnblogs.com/hazir/p/linxu_core_dump.html Linux Core Dump 当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内 ...
- Vic-软件测试-开始软件测试
前言 大家好,我是 Vic,今天给大家带来开始软件测试的概述,希望你们喜欢 软件测试 软件测试的基本概念.方法.常用测试工具的使用 常用测试工具的使用性能自动化测试工具:jmeter.loadrunn ...