Flutter:如何根据你来自哪里弹出/导航到不同的路线

标签 flutter dart navigator

我有一个可以来自应用程序各个部分的小部件。我该怎么做,如果我来自 StatefulWidget1 推送,它会直接将我带到主小部件,如果我来自 StatefulWidget2 推送,它会在堆栈具有的路由。

我当前的 WillPopScope 函数总是转到主小部件。下面评论说我输入了我想做的伪代码。

return WillPopScope(
  onWillPop: () async {
      Navigator.of(context).popUntil((route) => route.isFirst);
    //if(the route name of the parent widget where i come via push == analysis)
    //Navigator.of(context).popUntil((route) => route.isFirst);
    // else
    //Navigator.of(context).pop();
    return false;
  },
  child: Scaffold( ...

我已经搜索过了,但找不到任何对这个问题有用的东西。

最佳答案

您可以在您的类中传递一个可以从应用程序的各个部分访问的属性。

class YourClass extends StatefulWidget {
  final String whereICameFrom;
  
  YourClass({@required this.whereICameFrom});
  
  @override
  YourClassState createState() => YourClassState();
}

并且在您的 WillPopScope 中,您可以在 switch case 中使用此属性,例如:

onWillPop: () async {
     switch(widget.whereICameFrom){
        case "StatefulWidget1":
          Navigator.of(context).popUntil((route) => route.isFirst);
          break;
        case "StatefulWidget2":
          Navigator.of(context).pop();
          break;
     }
    return false;
  },

关于Flutter:如何根据你来自哪里弹出/导航到不同的路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64881565/

相关文章:

firebase - Firestore - 查询数组字段中对象的过滤器位置

string - 如何在 Flutter 中将 Unicode 字符串转换为正确的字符串(中文)

android-studio - 用于 Flutter 驼峰式大小写(字符串)的 Android Studio 实时模板?

Dart:如何从类中获取 "Type"

android - react native navigator.geolocation.getCurrentPosition 不工作

flutter - 导航不会使用自定义小部件更新 TabBarView 主体

flutter - 错误 : Unable to create dart snapshot for flutter tool

javascript - 使用 jQuery 的 Dart JavaScript 互操作回调

javascript - React Native,NavigatorIOS,undefined 不是一个对象(评估 'this.props.navigator.push')

javascript - 开 Jest : Mocking navigator. 存储.坚持