我有一个类似的问题。
如何使用 GridView 从服务器放置 JSON 数据 --Flutter
我必须在库比蒂诺皮克中显示 JSON 数据。 但是我不知道如何设法将数据放在该小部件上。
我想在页面首次初始化时保留 JSON 数据。 我想知道如何保存Future
数据并将其转换为选择器小部件。
按下按钮时。调用以下方法。 我想在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();
}
},
);
},
);
}
成功了!!!谢谢。