1.showModalBottomSheet数据未刷新
2.采用setState刷新,页面没有被重新绘制
3.数据是在showModalBottomSheet内部刷新的,用的方法是setDialogState
4.或者在showModalBottomSheet前就加载完成数据,比如我之前的版本是_getDio.then(showModalBottomSheet…),接口调完再弹出表单
showModalBottomSheet(
context: context,
builder: (BuildContext bc) {
// 数据未传回时显示圆圈加载中,true表示加载中,还用来防止反复加载
var hasLoadding = true;
return StatefulBuilder(
builder: (context, setDialogState){
// 防止接口被反复加载
hasLoadding?_getTableData(_dataList[index]['majorName'],
_dataList[index]['schoolName']).then((value) =>
setDialogState((){
// 在此处做数据的重新赋值,dialog算新页面,setstate的页面刷新没有影响到showModalBottomSheet出的页面
tableList = value;
hasLoadding = false;
})
):print('加载完成');
return hasLoadding?Container(
child: Center(
child: CircularProgressIndicator(),
),
):
Stack(
children: <Widget>[
Container(
height: 60.0,
width: double.infinity,
color: Colors.black54,
),
Container(
height: 300,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(25),
topRight: Radius.circular(25),
)),
),
Container(
//color: Colors.red,
height: 300,
child: FlatButton(
onPressed: () {
print('点击了表格');
},
child: Container(
alignment: Alignment.center,
padding:
EdgeInsets.only(top: 33.0),
child: ShowCollegeDetailTable(
majorName: _dataList[index]
['majorName'],
schoolName: _dataList[index]
['schoolName'],
tableList: tableList,
forecastRank: forecastRank),
),
),
),
],
);
}
);
});