第一个 activity 的 initState() 方法在从另一个 activity 获取弹出堆栈后未初始化
initState() method of first activity is not initializing after taking popback stack from the aother activity
我正在开发使用 3 个屏幕的 flutter 应用程序。
MainActivity
开到 ActivityClass1
,ActivityClass1
将开到 ActivityClass2
。现在,当我从 ActivityClass2 获取 Navigator.pop(context),
时,它将显示堆栈中的 ActivityClass1。但是这次我需要使用 ActivityClass1
的 initState()
因为我需要刷新 ActivityClass1
.
上的一些数据
有没有什么方法可以调用 ActivityClass1
的 initState()
,它还能维护我的 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),
。
我正在开发使用 3 个屏幕的 flutter 应用程序。
MainActivity
开到 ActivityClass1
,ActivityClass1
将开到 ActivityClass2
。现在,当我从 ActivityClass2 获取 Navigator.pop(context),
时,它将显示堆栈中的 ActivityClass1。但是这次我需要使用 ActivityClass1
的 initState()
因为我需要刷新 ActivityClass1
.
有没有什么方法可以调用 ActivityClass1
的 initState()
,它还能维护我的 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),
。