【问题标题】:Flutter Navigator.pushNamed with params returns null带有参数的 Flutter Navigator.pushNamed 返回 null
【发布时间】:2020-04-23 12:13:30
【问题描述】:

在命名路由导航中,我需要传递一些参数,但在目的地,该值为 null。这是我的代码:

onSelected: (value){
    Navigator.pushNamed(context, '${value['namedRoute']}', arguments: '${value['apiUrl']}');
  },

在我的目标屏幕上:

class DetailList extends StatefulWidget {
  final String apiUrl;

  DetailList({Key key, @required this.apiUrl,}) : super(key: key);

  @override
  _DetailList createState() => _DetailList();
}

class _DetailList extends State<DetailList> {
  final Color bgcolor = HexToColor('#ffffff');

  ApiResponse<List<Detail>> detailList;
  int countDetails = 0;

  DetailListBloc _detailListBloc;

  @override
  void initState() {
    print('init=${widget.apiUrl}');

    super.initState();
    _detailListBloc = DetailListBloc(widget.apiUrl);
  }
  .....

这里的打印输出是'init=null'。我不知道问题出在哪里,因为我关注了this link。任何帮助将不胜感激。

编辑

感谢您的所有帮助。我找到了this link,它准确地描述了我正在寻找的东西,它就像一个魅力。

【问题讨论】:

    标签: flutter flutter-navigation


    【解决方案1】:

    这不是你提取参数的方式,这里是如何:

      @override
      void initState() {
        print('init=${ModalRoute.of<String>(context).settings.arguments}');
    
        super.initState();
        _detailListBloc = DetailListBloc(widget.apiUrl);
      }
    

    reference

    编辑:因为initState() 中的上下文可能不会立即准备好,根据this,您可以使用:

    @override
      void initState(){
        Future.delayed(Duration.zero,(){//you can await it if you want
          print('init=${ModalRoute.of<String>(context).settings.arguments}');
          _detailListBloc = DetailListBloc(widget.apiUrl);  
        });
        super.initState();
      }
    

    【讨论】:

    • 好的,但我需要 initState() 中的参数。你能告诉我把这部分代码放在哪里吗?
    • 你可以把它放在新推送的小部件中的任何地方,我会编辑答案
    • 这是我收到的错误:在构建 Builder 时抛出了以下断言:在 _DetailList.initState() 完成之前调用了dependOnInheritedWidgetOfExactType<_modalscopestatus>() 或dependOnInheritedElement()。
    猜你喜欢
    • 2022-10-21
    • 2020-06-14
    • 2021-06-27
    • 1970-01-01
    • 2020-06-06
    • 2021-06-07
    • 1970-01-01
    • 2020-08-23
    • 2021-09-28
    相关资源
    最近更新 更多