Flutter 如何在方向更改时保持颤振中的选定选项卡?

Flutter 如何在方向更改时保持颤振中的选定选项卡?,flutter,orientation,state,Flutter,Orientation,State,我有一个应用程序,它的标签在flatter中,当我通过将设备从纵向旋转到横向来改变方向时,小部件树会被重建,小部件的状态会被重置。其效果是所选选项卡重置回第一个选项卡。我希望防止在方向更改期间重置状态,以便选定的选项卡也不会更改 在我的State类中,我使用AutomaticEpaLiveClientMixin并设置: @override bool get wantKeepAlive => true; 但这似乎没有任何效果 有没有办法确保在旋转设备时保留我的所有应用程序和小部件状态 如果

我有一个应用程序,它的标签在flatter中,当我通过将设备从纵向旋转到横向来改变方向时,小部件树会被重建,小部件的状态会被重置。其效果是所选选项卡重置回第一个选项卡。我希望防止在方向更改期间重置状态,以便选定的选项卡也不会更改

在我的State类中,我使用AutomaticEpaLiveClientMixin并设置:

@override
bool get wantKeepAlive => true;
但这似乎没有任何效果

有没有办法确保在旋转设备时保留我的所有应用程序和小部件状态

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


谢谢

事实证明,在追溯到我的小部件树之后,我发现我最上面的小部件被声明为无状态,并且我在.build方法中放置了一行代码,导致每次重新构建小部件时,整个应用程序的状态都会被重置,尤其是在方向改变时

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

雷米的评论是对的

花了整整一天的时间编写代码,但学到了很多东西。:-)

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


仍在学习颤振,但总体印象深刻。

事实证明,在我的小部件树中追踪所有路径后,我发现我最上面的小部件被声明为无状态,我在.build方法中放置了一行代码,这导致每次重建小部件时,整个应用程序的状态都会被重置,尤其是在方向改变时

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

雷米的评论是对的

花了整整一天的时间编写代码,但学到了很多东西。:-)

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


仍在学习颤振,但总体印象深刻。

您能添加一些示例吗?很可能是你的小部件树出了问题,但事实上,这是不可能发生的。请分享你的代码。谢谢。。。我刚刚重新创建了一个简单的示例,正如您所建议的,它没有发生。我使用的是作用域模型,我怀疑我在树中的某个错误位置声明了ScopedModelScenedent。我现在正在努力隔离它。。。一旦我这样做了,我会更新这篇文章。谢谢你的建议!你能补充一些例子吗?很可能是你的小部件树出了问题,但事实上,这是不可能发生的。请分享你的代码。谢谢。。。我刚刚重新创建了一个简单的示例,正如您所建议的,它没有发生。我使用的是作用域模型,我怀疑我在树中的某个错误位置声明了ScopedModelScenedent。我现在正在努力隔离它。。。一旦我这样做了,我会更新这篇文章。谢谢你的建议!