【发布时间】:2021-04-10 13:48:34
【问题描述】:
我通过以下方式导航到新屏幕
final result = await Navigator.of(context, rootNavigator: true).push(
MaterialPageRoute(
builder: (BuildContext context) => PreLog(
),
),
);
if (result != null) {
print("Back");
}
在 PreLog 里面按照以下方式进入了其他几个屏幕;
Navigator.of(context, rootNavigator: true).pushReplacement(
MaterialPageRoute(
builder: (BuildContext context) => MyMap(
),
),
);
在最后一屏我按照以下方式返回;
Navigator.of(context).pop("value");
我希望该值返回到第一个屏幕。但它没有。 如何从最后一个屏幕返回值?
我已根据以下回复修改了我的问题。
在主屏幕中,我正在推送 PopTest 小部件
final result = await Navigator.of(context).push(
MaterialPageRoute(
builder: (BuildContext context) => PopTest(),
),
);
print(result);
我正在从 PopTest 加载另一个替换小部件“PopTest2”
class PopTest extends StatefulWidget {
@override
_PopTestState createState() => _PopTestState();
}
class _PopTestState extends State<PopTest> {
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
RaisedButton(
child: Text("Exit"),
onPressed: () {
Navigator.of(context).pop("value from 1");
},
),
RaisedButton(
child: Text("Load Next"),
onPressed: () async {
final result2 = await Navigator.of(context).pushReplacement(
MaterialPageRoute(
builder: (BuildContext context) => PopTest2(),
),
);
},
),
],
);
}
}
class PopTest2 extends StatefulWidget {
@override
_PopTestState2 createState() => _PopTestState2();
}
class _PopTestState2 extends State<PopTest2> {
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
RaisedButton(
child: Text("Exit"),
onPressed: () {
Navigator.of(context).pop("value from 2");
},
),
],
);
}
}
如果我从 PopTest 退出,我会得到一个返回值。
但如果我从 PopTest2 退出,我不会得到返回值。
谁能提供一些帮助?
【问题讨论】:
-
大家好,谁能提供一些帮助?
-
我认为问题可能是我将替换推送到推送的小部件。但我不明白为什么我不能返回值......
-
撞……..
标签: flutter navigation return