首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确读取上下文(ModalRoute.of).settings.arguments?

如何正确读取上下文(ModalRoute.of).settings.arguments?
EN

Stack Overflow用户
提问于 2019-05-13 16:25:17
回答 1查看 7.4K关注 0票数 4

我对flutter感到困惑,当我想从statefulwidget (initstate)中读取参数并将其访问到widget build中时,该变量仍然为null。如何正确地阅读它?我的代码如下:

代码语言:javascript
复制
import 'package:flutter/material.dart';
import 'package:caritokoonline_v2/components/ResultForm.dart';
import 'package:caritokoonline_v2/podo/SearchBarangRequest.dart';

class ResultBarangActivity extends StatefulWidget {
  SearchBarangRequest searchBarangRequest;

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

class _ResultBarangActivityState extends State<ResultBarangActivity> {
  final _scaffoldKey = GlobalKey<ScaffoldState>();


  @override
  void initState(){


    Future.delayed(Duration.zero,(){
      setState(() {
        widget.searchBarangRequest = ModalRoute.of(context).settings.arguments;
        print(widget.searchBarangRequest.keyword);
      });
    });

    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    if (widget.searchBarangRequest == null) return Scaffold(); //this line is always executed

    return ResultForm(
      scaffoldKey: _scaffoldKey,
      title: widget.searchBarangRequest.keyword,
      subTitle: widget.searchBarangRequest.hargaRange.toString(),);
  }
}

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-14 17:35:31

我知道错在哪里了,

因此,我创建了全局变量(标题、副标题)并从searchBarangRequest赋值,如下所示:

String title = "";String subtitle = "";

代码语言:javascript
复制
class _ResultBarangActivityState extends State<ResultBarangActivity> {
  final _scaffoldKey = GlobalKey<ScaffoldState>();


  @override
  void initState(){


    Future.delayed(Duration.zero,(){
      setState(() {
        widget.searchBarangRequest = ModalRoute.of(context).settings.arguments;
        title       = widget.searchBarangRequest.keyword;

        subtitle    = "${Utils().kondisiToString(widget.searchBarangRequest.kondisiBarang)} | ${widget.searchBarangRequest.hargaRange.toString()}";


        // print(widget.searchBarangRequest.keyword);

        getProducts(widget.searchBarangRequest);
      });
    });

    super.initState();
  }
}

而且它工作得很完美!谢谢。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56108384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档