首页 > 解决方案 > 即使导航到新页面后,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

我该如何解决?

标签: flutterdartmobx

解决方案


我没有使用 Mobx 的经验,但它是响应式编程,您所经历的只是状态更新的正常行为。

首先,当你推送一个新屏幕时,它不会从堆栈中删除,除非你用第二个屏幕替换你当前的主屏幕,并且没有返回的选项。我想这不是你需要的。所以想象一下第二页在主页之上。当你用 Mobx 改变一些东西时,家仍然充满活力和令人耳目一新。

如果您不想再次调用所有 API,您应该将它们放在类似“initState”的方法中,或者在您的 mobx 配置中使用类似的方法。通常,initState 是第一次创建小部件时调用一次的方法。


推荐阅读