【问题标题】:Flutter pass json data to new Stateful WidgetFlutter 将 json 数据传递给新的 Stateful Widget
【发布时间】:2020-02-27 19:54:09
【问题描述】:

我在颤振中将 json 数据传递给新的有状态小部件。我可以在调试控制台中看到数据不为空,但有状态的小部件接收到空数据。

我尝试了其他传递数据类型,但仍然不起作用。

我该如何解决这个问题?任何帮助

这里是代码

导航代码

    void goToFilteredList() async {
         jsonData =await postQuotationFilteredList(
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            false,
            false,
            null,
            null);
        print(jsonData);
      await Navigator.push(
            context,
            MaterialPageRoute(
                builder: (context) => FilteredQuotationList(jsonData)));


      }

有状态的小部件

class FilteredQuotationList extends StatefulWidget {
  final List<Map<String, dynamic>> jsonData;
  FilteredQuotationList(this.jsonData);

  static const String routeName = "/filteredquotationlist";
  @override
  State<StatefulWidget> createState() =>
      FilteredQuotationListScreen(this.jsonData);
}

jsonData 具有相同的类型,并且有缺点,此代码接收到空数据。

 class FilteredQuotationListScreen extends State<FilteredQuotationList> {
      List<Map<String, dynamic>> jsonData;

      FilteredQuotationListScreen(List<Map<String, dynamic>> jsonData) {
        this.jsonData = jsonData;
      }

      @override
      Widget build(BuildContext context) {

        print("filtreleme ekranı");

        print(jsonData);
        return Scaffold(
          body: quotationFilteredListItems(jsonData),
        );
      }

      ListView quotationFilteredListItems(List<Map<String, dynamic>> jsonData) {

        print("quotation filtered list items");

        List<GetQuotationModel> getQuotationModel =
            GetQuotationModel.fromJson(jsonData);
        print(getQuotationModel.length);
        return ListView.builder(
          itemCount: 3,
          itemBuilder: (BuildContext context, int position) {
            return Card(
              color: Colors.amberAccent,
              elevation: 2.0,
              child: ListTile(
                leading: CircleAvatar(
                  backgroundColor: Colors.green,
                  child: Text("getQuotationModel.quoteNumber"),
                ),
                title: Text("this."),
              ),
            );
          },
        );
      }
    }

【问题讨论】:

    标签: android json flutter dart


    【解决方案1】:

    首先,这不是您应该使用通过构造函数提供数据的有状态小部件的方式。基本上,State 对象可以免费访问 Widget 对象的任何参数。

    这是一个应该如何使用的例子。

    class MyWidget extends StatefulWidget {
      MyWidget({
        Key key,
        @required this.myParameter,
      }) : super(key: key);
    
      final String myParameter;
    
      @override
      _MyWidgetState createState() => _MyWidgetState();
    }
    
    class _MyWidgetState extends State<MyWidget> {
      @override
      Widget build(BuildContext context) {
        return Text(widget.myParameter); // the widget accessor is included in every State
      }
    }
    

    然后使用它看起来像这样:

    @override
    Widget build(BuildContext context) {
      return MyWidget(myParameter: "Hurray!");
    }
    

    如果这能解决您遇到的问题,请告诉我。

    【讨论】:

      猜你喜欢
      • 2021-09-26
      • 2020-06-06
      • 2020-12-17
      • 1970-01-01
      • 2021-10-17
      • 2021-05-26
      • 2021-09-01
      • 2019-07-26
      • 2019-07-08
      相关资源
      最近更新 更多