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);