我在导航器中递归添加路由.可能有20个或更多视图.Pop按宣传方式工作,但我想弹出索引1,并删除所有推送历史记录.有没有办法用像... returntoIndex0这样的东西替换这个pop命令...
new ListTile(
title: new RaisedButton(
child: new Text("POP"),
onPressed: () {
var route = new MaterialPageRoute(
builder: (BuildContext context) =>
new NextPage3(value:"hi there from 3"),
);
Navigator.pop(context);
},
),
),
Run Code Online (Sandbox Code Playgroud)
// ================================================ ========
meh*_*afi 82
如果您确切知道应该执行多少次流行音乐:
例如对于 2 个流行音乐:
count = 0;
Navigator.popUntil(context, (route) {
return count++ == 2;
});
Run Code Online (Sandbox Code Playgroud)
mil*_*oss 34
如果您使用MaterialPageRoute创建路由,则可以使用此命令:
Navigator.popUntil(context, ModalRoute.withName(Navigator.defaultRouteName))
Run Code Online (Sandbox Code Playgroud)
Navigator.defaultRouteName反映应用程序启动的路径.以下是更详细地说明它的代码片段:
child: InkWell(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Image(
image: AssetImage('assets/img/ic_reset.png'),),
Text('Change my surgery details',
style: TextStyle(color: Colors.blue, decoration: TextDecoration.underline),),
],
),
onTap: () =>
Navigator.popUntil(context, ModalRoute.withName(Navigator.defaultRouteName))
),
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
Edw*_*Liu 34
如果不使用命名路由,则可以使用
Navigator.of(context).popUntil((route) => route.isFirst);
Run Code Online (Sandbox Code Playgroud)
dav*_*d72 25
对我来说,我在推送新页面时使用了这个:
widget = MyWidget();
Route route = CupertinoPageRoute(builder: (context) => widget, settings:RouteSettings(name: widget.toStringShort()));
Navigator.push(context, route);
Run Code Online (Sandbox Code Playgroud)
然后返回特定页面:
Navigator.of(context).popUntil((route) => route.settings.name == "MyWidget");
Run Code Online (Sandbox Code Playgroud)
这里 Dashboard() 是屏幕名称。所以这将弹出所有屏幕并转到 Dashboard() 屏幕。
Navigator.of(context).pushAndRemoveUntil(
MaterialPageRoute(builder: (c) => Dashboard()),
(route) => false)
Run Code Online (Sandbox Code Playgroud)
小智 7
你也可以这样做
Navigator.of(context)
.pushNamedAndRemoveUntil('/Destination', ModalRoute.withName('/poptillhere'),arguments: if you have any);
Run Code Online (Sandbox Code Playgroud)
用例是转到所需的屏幕并根据需要弹出屏幕。
有关更多信息,您可以查看这篇解释其他解决方案的帖子
| 归档时间: |
|
| 查看次数: |
16896 次 |
| 最近记录: |