Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振-使用.popintil返回数据_Flutter_Dart_Navigator - Fatal编程技术网

Flutter 颤振-使用.popintil返回数据

Flutter 颤振-使用.popintil返回数据,flutter,dart,navigator,Flutter,Dart,Navigator,我一直在使用Navigator.pop并轻松地将数据传回一个屏幕。但是,如果使用Navigator.popUntil,将对象传递回目标屏幕的可接受方式是什么?没有。这也是没有意义的,因为结果应该返回到推送路由的路由 如果确实必须这样做,请使用多个pop调用: // Widget of Route A: String resultOfC = await Navigator.push(context, routeB); // Widget of Route B: String resultOfC

我一直在使用
Navigator.pop
并轻松地将数据传回一个屏幕。但是,如果使用
Navigator.popUntil
,将对象传递回目标屏幕的可接受方式是什么?

没有。这也是没有意义的,因为结果应该返回到推送路由的路由

如果确实必须这样做,请使用多个
pop
调用:

// Widget of Route A:
String resultOfC = await Navigator.push(context, routeB);


// Widget of Route B:
String resultOfC = await Navigator.push<String>(context, routeC);
Navigator.pop(context, resultOfC); // pass result of C to A


// Widget of Route C:
Navigator.pop(context, 'my result'); // pass result to B
//路由A的小部件:
String resultOfC=await Navigator.push(上下文,routeB);
//路线B的小部件:
String resultOfC=await Navigator.push(上下文,routeC);
Navigator.pop(上下文,resultOfC);//将C的结果传递给A
//路线C的小部件:
Navigator.pop(上下文“我的结果”);//把结果传给B

您可以使用
路由设置中的
参数
将数据传回特定的
路由

例如:


//在MaterialApp中
材料聚丙烯(
onGenerateRoute:(设置){
开关(设置.名称){
案例“/”:
返回物料路线(
设置:路由设置(名称:“/”,参数:Map()),/(1)
建设者:()=>主页()
);
}
}
)
//在主页中
Navigator.of(context.push)(MaterialPage路由(生成器:(\u)=>StuffPage())
.然后{
final arguments=ModalRoute.of(context).settings.arguments作为映射;
最终结果=参数['result'];
};
//在填充页中
Navigator.of(context.popintil)((route){
如果(route.settings.name=='/')){
(route.settings.arguments作为映射)['result']='something';
返回true;
}否则{
返回false;
}
});

注意:您必须初始化
参数
否则它将为空,这就是(1)

的目的。我已经回答了这个问题,这可能会帮助您@Zulfiqar。看起来您正在将数据发送到一个级别。但要求是通过多个级别返回。您希望返回多少屏幕?多大(或什么类型)您想要传递的数据?没有
通用的
答案,根据以上问题的答案考虑一些解决方法。看看这是否有助于在视图中显示这些数据,而
popUntil
则不会。因此,如果我们也能够popUntil并传递数据,那会更好。是的,还有其他方法。我想知道OP试图做什么。这可能是一个概念问题,他如何使用
导航器
。这一定是一个公认的答案。我认为它在每种情况下都能工作。干得好@hunghd
路由设置(名称:“/”,参数:Map())
这是最重要的一行代码,一旦我弹回来,我需要清除参数。有什么办法吗?