Flutter项目中,如果切换tabar,initState方法会被反复重调,无法保持页面的状态。若想保持原有状态,切换页面时不再调用initState方法,只需要通过 with
给页面的状态管理类实现一个特征-------使用AutomaticKeepAliveClientMixin。同Vue中的使用原理一样
第一步:在State类中混入 AutomaticKeepAliveClientMixin这个类
class _MovieListState extends State<MovieList> with AutomaticKeepAliveClientMixin{....
第二步:在这个类里面定义一个wantKeepAlive
函数 值为true
@override
// TODO: implement wantKeepAlive
bool get wantKeepAlive => true;
完整代码
//有状态控件,必须结合一个状态管理类,来进行实现
class _MovieListState extends State<MovieList> with AutomaticKeepAliveClientMixin {
@override
// TODO: implement wantKeepAlive
bool get wantKeepAlive => true;
@override
void initState() {
// TODO: implement initState
super.initState();
getMovieList();
}
//渲染当前这个movielist 控件的UI结构
Widget build(BuildContext context) {
return ListView.builder()
}
}