有没有办法保留子状态小部件的状态?

时间:2019-12-24 15:31:46

标签: flutter dart widget stateful flutter-pageview

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

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

-这是我的代码,

!!!

return PageView(

onPageChanged: (cardIndex) {},

scrollDirection: Axis.horizontal,

children: <Widget>[

ChatPage(),

UploadPage(),

NotifyPage(),

Settings()

]
);

...谢谢

1 个答案:

答案 0 :(得分:0)

您可以在State类中使用名为AutomaticKeepAliveClientMixin的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 https://medium.com/@diegoveloper/flutter-persistent-tab-bars-a26220d322bc中实现Persistent Tab栏的文章