繁体   English   中英

如何在 CupertinoPicker 中显示来自服务器的 json 数据

[英]How to show json data from server in CupertinoPicker

我有一个类似的问题。

如何使用 GridView --Flutter 从服务器放置 JSON 数据

我需要在 CupertinoPicker 中显示 JSON 数据。 但是我不知道如何设法将数据放在该小部件上。

我想在页面第一次初始化时保留 JSON 数据。 我想知道如何保留Future数据并将其转换为 Picker Widget。

当按下按钮时。 调用以下方法。 我想在CupertinoPicker上展示seasons (未来)。

cupertinoModalPopup(){
    showModalBottomSheet(
      context: context,
      builder: (BuildContext context){
        return CupertinoPicker(
          onSelectedItemChanged: (int index){
            setState(() {
              _pickerSelectedIndex = index;
            });
          },
          itemExtent: 32.0,
          children: seasons.map((season) => Text(season)).toList(),
          scrollController: FixedExtentScrollController(initialItem: _pickerSelectedIndex)
        );
      });
[
  {"id":1,"season_end":"1999/01","season_name":"First","season_start":"1999/08"}, 
  {"id":2,"season_end":"1999/07","season_name":"Second","season_start":"1999/02"}, 
  {"id":3,"season_end":"2000/01","season_name":"Third","season_start":"1999/08"}, 
  {"id":4,"season_end":"2000/07","season_name":"Forth","season_start":"2000/02"}
]

请给我一些建议。

谢谢。

最后,我用以下代码组成了小部件。

cupertinoModalPopup(){
    showModalBottomSheet(
        context: context,
        builder: (BuildContext context){
          return FutureBuilder(
            future: seasons,
            builder: (BuildContext context, AsyncSnapshot <List<Season>> snapshot){
              if(snapshot.connectionState == ConnectionState.done) {
                if (snapshot.hasError) {
                  return Text('${snapshot.error}');
                }
                if (!snapshot.hasData) {
                  return Text('No Data Found');
                }
                return CupertinoPicker(
                    onSelectedItemChanged: (int index){
                      setState(() {
                        _seasonSelectedIndex = index;
                        _seasonSelected = snapshot.data[index].season_name;
                      });
                    },
                    itemExtent: 32.0,
                    children: snapshot.data.map((season) => Text(season.season_name)).toList(),
                    scrollController: FixedExtentScrollController(initialItem: _seasonSelectedIndex)
                );
              }else{
                return const CircularProgressIndicator();
              }
            },
          );
        },
    );
}

有效!!! 谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM