flutter - 即使导航到新页面后,Flutter 主页也会刷新
问题描述
我正在使用 mobx 状态管理,我在 Flutter App 中遇到了一些奇怪的事情
我的应用中有 2 个屏幕,主屏幕和第二页
我正在从主屏幕调用我的第二个屏幕,如下所示,
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const DayBookScreen(),
settings: RouteSettings(arguments: somedata)))
.then((onGoBack));
下面是我的第二个屏幕构造函数
class DayBookScreen extends StatefulWidget {
const DayBookScreen({Key? key}) : super(key: key);
@override
_DayBookScreenState createState() => _DayBookScreenState();
}
class _DayBookScreenState extends State<DayBookScreen> {
TextEditingController _textController = TextEditingController();
}
当我在第二个屏幕上更改任何内容时,主屏幕正在刷新并且正在调用所有 api。
下面是我的颤振医生-v
Flutter (Channel stable, 2.0.4, on Microsoft Windows [Version 10.0.19042.1348], locale en-US)
• Flutter version 2.0.4 at C:\flutter
• Framework revision b1395592de (8 months ago), 2021-04-01 14:25:01 -0700
• Engine revision 2dce47073a
• Dart version 2.12.2
我该如何解决?
解决方案
我没有使用 Mobx 的经验,但它是响应式编程,您所经历的只是状态更新的正常行为。
首先,当你推送一个新屏幕时,它不会从堆栈中删除,除非你用第二个屏幕替换你当前的主屏幕,并且没有返回的选项。我想这不是你需要的。所以想象一下第二页在主页之上。当你用 Mobx 改变一些东西时,家仍然充满活力和令人耳目一新。
如果您不想再次调用所有 API,您应该将它们放在类似“initState”的方法中,或者在您的 mobx 配置中使用类似的方法。通常,initState 是第一次创建小部件时调用一次的方法。
推荐阅读
- r - 从后面 n 行的其他列数据创建一个新列
- java - 在 ArrayList 中显示 ArrayList 的内容
- javascript - 网站上的 Facebook Messenger,每个页面都有不同的问候信息
- javafx - 将 STL 文件转换为 TriangleMesh 对象
- php - 如何使用 PHP 从上传到 localhost 的一个 html 文件重定向到磁盘上的另一个 html 文件?
- mercurial - Mercurial:文件拆分为两个文件,如何跟踪更改?
- java - 这是一个关于反转字符串的问题
- mysql - MySQL 将 2 列与同一个表连接起来
- android - APK 包中 .properties 文件的用途是什么?
- r - 遍历列并计算满足R中条件的行