2

我正在使用 3 个屏幕的颤振应用程序。

MainActivity开到ActivityClass1并且ActivityClass1将开ActivityClass2。现在,当我Navigator.pop(context),从 ActivityClass2 中获取时,它将显示堆栈中的 ActivityClass1。但这一次我需要采取行动initState()ActivityClass1因为我需要在ActivityClass1.

有什么方法可以调用它也维护我的堆栈initState()- >吗?我也尝试过 for而不是使用on但这会清除我的堆栈。ActivityClass1MainActivityActivityClass1Navigator.of(context).pushAndRemoveUntil(Navigator.pop(context),ActivityClass2

4

3 回答 3

1

Navigator.pushFutureMaterialPageRoute传递给它时返回 a 。您可以等待Future以了解其他视图何时弹出。

例子,

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

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

于 2021-03-31T18:12:14.683 回答
0

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

Navigator.push(
  context,
  MaterialPageRoute(builder: (context) => SecondRoute()),
);
于 2021-03-27T18:22:42.327 回答
0

如果你想重新开始屏幕的初始状态,你可以在你想返回的时候使用 pushReplacement 而不是 Pop() 。这个对我有用:

使用 pushReplacement 转到 ActivityClass2 并返回到 ActivityClass1

活动类 2 -> 活动类 1

Navigator.pushReplacement(
  context,
  MaterialPageRoute(
    builder: (context) => ActivityClass1(),
  ),
);
于 2021-03-27T18:16:47.950 回答