flutter - 如何在方向更改时保留 Flutter 中的选定选项卡?
问题描述
我在 Flutter 中有一个带有 Tabs 的应用程序,当我通过将设备从纵向旋转到横向来改变方向时,小部件树被重建并且小部件的状态被重置。效果是将所选选项卡重置回第一个选项卡。我想防止在方向更改期间重置状态,以便所选选项卡也不会更改。
在我的 State 类中,我使用 AutomaticKeepAliveClientMixin 并设置了:
@override
bool get wantKeepAlive => true;
但这似乎没有任何效果。
有没有办法确保在设备旋转时保留我的所有应用程序和小部件状态?
如果有帮助,我可以发布代码,尽管我希望这是一个相当笼统的问题,并有一个我还没有想到的简单答案。
谢谢!
解决方案
事实证明,在回溯到我的 Widget 树之后,我发现我最顶层的小部件被声明为无状态,并且我在 .build 方法中放置了一行代码,导致整个应用程序的状态被重置每次重建小部件时 - 特别是在方向更改时。
为了解决这个问题,我将小部件更改为有状态,并将这段代码移到状态类的 initState 方法中。一旦我这样做了,我的问题就解决了,因为这个类的状态不受方向变化的影响。
雷米的评论是正确的。
一整天的编码浪费了,但学到了很多东西。:-)
对于可能遇到类似问题的任何人,请仔细查看您放入 .build 方法的任何代码,并意识到它会在任何时候重新构建小部件时被调用。
仍在学习 Flutter,但总体印象深刻。
推荐阅读
- javascript - 按多个键过滤 JSON 数据
- java - 如何确保用户正在通过我的应用程序通过 POST 请求进行身份验证?
- php - 使用codeigniter将数据形成数据库
- android - 如何使用ffmpeg在android中的视频上添加gl过渡?
- ios - CALayer 导致 ARC 内存泄漏
- c# - 使用 cmd.parameter c# 创建动态查询
- r - 使用 grid.arrange 排列多个绘图列表
- lazarus - 在命令行参数中使用带有 TProcess 的德语字符
- windows - Docker - 为什么 docker 更新主机文件?
- jenkins - 如何从 Jenkins 进行两次 SSH?