第一个 activity 的 initState() 方法在从另一个 activity 获取弹出堆栈后未初始化

initState() method of first activity is not initializing after taking popback stack from the aother activity

我正在开发使用 3 个屏幕的 flutter 应用程序。

MainActivity 开到 ActivityClass1ActivityClass1 将开到 ActivityClass2。现在,当我从 ActivityClass2 获取 Navigator.pop(context), 时,它将显示堆栈中的 ActivityClass1。但是这次我需要使用 ActivityClass1initState() 因为我需要刷新 ActivityClass1.

上的一些数据

有没有什么方法可以调用 ActivityClass1initState(),它还能维护我的 MainActivity -> ActivityClass1 堆栈? 我也尝试过 Navigator.of(context).pushAndRemoveUntil( 而不是在 ActivityClass2 上使用 Navigator.pop(context), 但这会清除我的堆栈。

如果你想重新启动屏幕的初始状态,你可以使用pushReplacement代替Pop()当你想回来的时候。 它对我有用:

使用 pushReplacement 转到 ActivityClass2 并返回到 ActivityClass1

ActivityClass2 -> ActivityClass1

Navigator.pushReplacement(
  context,
  MaterialPageRoute(
    builder: (context) => ActivityClass1(),
  ),
);

不使用 Navigator.of(context).pop,而是使用:

Navigator.push(
  context,
  MaterialPageRoute(builder: (context) => SecondRoute()),
);

Navigator.push returns a Future 当传入的 MaterialPageRoute 被解析。您可以 await Future 以了解其他视图何时弹出。

示例,

Navigator.of(context).push(MaterialPageRoute(
  builder: 
    (context) => NewView(),
  ),
).then((_) {
  // Call setState() here or handle this appropriately
});

所以现在当我回到我的 Activity Class1 时,这个方法将有助于在返回屏幕时采取任何行动,只需使用 Navigator.pop(context),