Flutter 如何在Flatter中使用Navigator.pop()方法传递多个值?
Flutter 如何在Flatter中使用Navigator.pop()方法传递多个值?,flutter,flutter-layout,Flutter,Flutter Layout,Navigator.pop方法只能返回一个值,但我需要返回多个值。 是否有任何方法可以使用Navigator.pop()返回多个值 我以前使用过Navigator.push,但当我将多个变量从多个页面推到一个页面时,会显示构造错误 我被困在这里好几天了 请帮帮我 提前感谢。创建一个包含所有数据的新数据结构类。 您也可以使用map或list,但如果数据结构发生更改,它可能是错误源。您可以通过两种方式pop: Navigator.of(context).pop(object); 或 无论哪种方式,
Navigator.pop
方法只能返回一个值,但我需要返回多个值。
是否有任何方法可以使用Navigator.pop()
返回多个值
我以前使用过Navigator.push
,但当我将多个变量从多个页面推到一个页面时,会显示构造错误
我被困在这里好几天了
请帮帮我
提前感谢。创建一个包含所有数据的新数据结构类。
您也可以使用map或list,但如果数据结构发生更改,它可能是错误源。您可以通过两种方式
pop
:
Navigator.of(context).pop(object);
或
无论哪种方式,我都用object
标记了该方法的可选返回值
如果希望返回多个值,则需要将它们框在对象、class
或Map
或其他对象中
与类的装箱将如下所示:
class BoxedReturns{
final int a;
final int b;
BoxedReturns(this.a, this.b);
}
//stuff
Navigator.of(context).pop(BoxedReturns(1,2));
您可以通过使用映射来做类似的事情,尽管我更愿意使用类方法:
Navigator.of(context).pop({"a":1,"b":2});
类似的问题来自Deepak Thakur的代码片段
class DetailsClassWhichYouWantToPop {
final String date;
final String amount;
DetailsClassWhichYouWantToPop(this.date, this.amount);
}
void getDataAndPop() {
DetailsClassWhichYouWantToPop detailsClass = new DetailsClassWhichYouWantToPop(dateController.text, amountController.text);
Navigator.pop(context, detailsClass); //pop happens here
}
new RaisedButton(
child: new Text("Edit"),
color: UIData.col_button_orange,
textColor: Colors.white,
onPressed: getDataAndPop, //calling pop here
),
要通过
Navigator.pop()
返回多个值,您可以做两件事(当然还有更多的方法,但这些是一些基本方法):
1。创建保存这些数据的模型:
classyourclass{
字符串firstVar;
字符串二次变量;
int thirdVar;
新闻(
{this.firstVar,
这是第二个变量,
这是第三次});
}
在要使用Navigator.pop()返回数据的视图中:
。。。
pop(上下文,YourClass('test','test2','1');
2。使用Map
保存嵌套(在我的例子中是tupel):
。。。
Map myData=new Map();
myData['test']=1;
myData['test2']=2;
pop(上下文,myData);
简单示例:
您可以通过结果参数发送自定义对象
推到新屏幕并从中获取结果:
导航到新屏幕等待then()或complete()事件发生
pushToNewScreen() {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => NewScreen()),
).then((value) {
// if value is true you get the result as bool else no result
if (value != null && value == true) {
print('Do something after getting result');
} else {
print('Do nothing');
}
});
}
发生某些事件时从新屏幕获取数据
ontap: (){
// pass your custom object inlace of bool value
Navigator.pop(context, true);
}
你可以使用地图
final data = { "key1" : "value1", "key2" : "value2" };
Navigator.of(context).pop(data);
为什么要使用Navigator.pop()
返回多个值?你们想制定什么样的逻辑?我只想从不同的页面获取数据,然后将这些数据作为api的输入。我想做momondo应用程序在航班搜索中做的事情。我们如何访问结果值?我得到了类似于error的错误:没有为类“Object”定义getter“amount”。
并且程序没有编译。@skadoosh,需要重现您的问题。你能不能给一个新问题加上密码,然后ping我的名字。谢谢
final data = { "key1" : "value1", "key2" : "value2" };
Navigator.of(context).pop(data);