如何在方向更改时保留Flutter中的选定选项卡



我在Flutter中有一个带有选项卡的应用程序,当我通过将设备从纵向旋转到横向来改变方向时,小部件树将被重建,小部件的状态将被重置。效果是所选选项卡被重置回第一个选项卡。我想防止在方向更改期间重置状态,这样所选选项卡就不会也更改。

在State类中,我使用AutomaticKeepAliveClientMixin,并设置了:

@override
bool get wantKeepAlive => true;

但这似乎没有任何效果。

有没有一种方法可以确保在设备旋转时保留我的所有应用程序和小部件状态?

如果有帮助的话,我可以发布代码,尽管我认为这是一个相当通用的问题,有一个我还没有想到的简单答案。

谢谢!

事实证明,在追踪我的Widget树之后,我发现我最顶层的Widget被声明为Stateless,并且我在.build方法中放置了一行代码,导致每次重建Widget时都会重置整个应用程序的状态,尤其是在方向更改时。

为了修复此问题,我将小部件更改为Stateful,并将此代码移动到initState方法的state类中。一旦我这样做了,我的问题就解决了,因为这门课的状态不会受到方向改变的影响。

雷米的评论是对的。

损失了整整一天的编码,但学到了很多。:-(

对于任何可能遇到类似问题的人,请仔细查看你放入.build方法中的任何代码,并意识到它将在任何时候重新构建小部件时被调用。

仍在学习长笛,但总体印象深刻。

最新更新