dart - 如何检查当前路线是哪条?

我想使用抽屉导航到不同的路线,但如果我已经在该路线上,我不想每次点击它时都打开一个新的路线实例,而是我更喜欢在这种情况下新路线未开通。到目前为止,这是我的代码:

Widget build(BuildContext context){
    return new Drawer(
      child:
          new ListView(
            children: <Widget>[
              new ListTile(
                title: new Text("NewRoute"),
                onTap: () {
                    Navigator.of(context).pop;
                    Navigator.of(context).pushNamed('/NewRoute');
                }
              )
           )
     )
}

我想使用条件语句来检查我们是否在某个路线上。我知道有一种方法可以使用 Route 类的 isCurrent 来检查我们当前所在的 Route

https://docs.flutter.io/flutter/widgets/Route/isCurrent.html

虽然我不确定如何实现它。

提前谢谢你!

最佳答案

Navigator 不暴露当前路由。

您可以做的是使用 Navigator.popUntil(callback) 作为 popUtil 将当前 Route 传递给回调,其中包括它的名字和东西。

final newRouteName = "/NewRoute";
bool isNewRouteSameAsCurrent = false;

Navigator.popUntil(context, (route) {
  if (route.settings.name == newRouteName) {
    isNewRouteSameAsCurrent = true;
  }
  return true;
});

if (!isNewRouteSameAsCurrent) {
  Navigator.pushNamed(context, newRouteName);
}

https://stackoverflow.com/questions/50817086/

相关文章:

flutter - 带 flutter 的最低安卓版本

flutter - 如何将大小设置为 CircularProgressIndicator?

dart - PageView : Disable the default scrolling an

listview - 在构建期间调用 setState() 或 markNeedsBuild

dart - Android Studio 3.0.1 上未显示新的 Flutter 项目向导

android - 如何将消息从 Flutter 传递到 Native?

dart - 在 Dart 中枚举或映射具有索引和值的列表

dart - 在 Flutter 中的屏幕之间传递数据

http - Flutter http 包不存在

flutter - 如何在 flutter 中为文本添加阴影?