flutter 保持页面状态
2024-08-26 14:51:58
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()
],
)
);
}
}
效果:
最新文章
- .Net多线程编程—System.Threading.Tasks.Parallel
- 不在 sudoers 文件中。此事将被报告。
- JavaScript开发的技巧
- CSS书写建议参考
- asp检测数字类型函数
- Linux命令行与图形界面切换方法
- hdu 2048 神、上帝以及老天爷(错排)
- Fragment实现底部选项卡切换效果
- HTML文件中使用Java程序
- ASP.NET Cache
- 高效删除 ListItem
- PHP代码为什么不能直接保存HTML文件——&;gt;PHP生成静态页面教程
- Cracking the coding interview--Q1.7
- LeetCode——Add Binary
- C语言程序设计第二次作业—————顺序结构改
- LVS负载均衡基础介绍及NET、DR模式配置
- Spring Boot 静态资源路径分析
- GA-H61M-DS2 BIOS SETTING
- SQL Server中自定义函数:用指定的分隔符号分割字符串
- Arria10调试问题集之——480转成270中DDR4 IP重新生成的问题