首页 > 解决方案 > 有没有办法保留子有状态小部件的状态?

问题描述

嗨,伙计们,我对这件事有点陌生,但是请问有什么办法可以保留有状态小部件的状态,而不是每次调用时都重新构建小部件

--假设我有一个 PageView 作为我的主页,它的孩子都是有状态的小部件......在页面滑动时,我希望它在列表中构建孩子一次,而不是在每次页面更改时重新构建

--这是我的代码,

!!!

return PageView(

onPageChanged: (cardIndex) {},

scrollDirection: Axis.horizontal,

children: <Widget>[

ChatPage(),

UploadPage(),

NotifyPage(),

Settings()

]
);

...谢谢

标签: flutterdartwidgetstatefulflutter-pageview

解决方案


您可以使用AutomaticKeepAliveClientMixin在 State 类中调用的 mixin 类并覆盖该wantKeepAlive方法并返回true

例子:

class ChatPage extends StatefulWidget{
   @override
  _ChatPageState createState() => _ChatPageState();
}

class _ChatPageState extends State<ChatPage> with
   AutomaticKeepAliveClientMixin<ChatPage> {

 @override
 bool get wantKeepAlive => true;   // <- override this method

  @override
  Widget build(BuildContext context) {
    return ....
  }
}

更多信息可以参考这篇在 Flutter 中实现 Persistent Tab bar 的文章https://medium.com/@diegoveloper/flutter-persistent-tab-bars-a26220d322bc


推荐阅读