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() ], ) ); } }
效果:
最后,关注【码上加油站】微信公众号后,有疑惑有问题想加油的小伙伴可以码上加入社群,让我们一起码上加油吧!!!
posted on 2019-08-23 21:04 LoaderMan 阅读(1028) 评论(0) 编辑 收藏 举报