我需要根据数据构建一个小部件,如下所示。 我需要先运行CircularProgressIndicator。我的问题是我需要从服务器1中获取数据。如果服务器1中没有数据,请停止CircularProgressIndicator并显示“未找到注册”小组件。如果服务器1有数据,则从服务器2获取详细信息数据。如果服务器2没有数据,则显示“临时数据不可用”小组件。如果服务器2具有数据,则显示“服务器2数据小部件”
Run loading animation widget (CircularProgressIndicator)
- Get Data from Server 1
- If Server 1 Data is okay
- Get Data from Server 2 using Server 1 Data item value
- If Server 2 Data is okay
- Show Server 2 Data Widget
- Else
- Show “Temporarily Data is not available” Widget
- Else
- Show “No Registration Found” Widget
我尝试创建一个布尔变量,并在主构建窗口小部件中尝试显示该页面。但是我一直收到错误消息,并不断显示“未找到注册”小组件,几秒钟后,当我使用setState收集服务器2数据时,它显示了“服务器2数据小组件”。但是它从不显示CircularProgressIndicator。如我上面所解释的,如何基于if else语句构建小部件的任何想法。
bool _runLoading = true;
bool _data1 = false;
bool _data2 = false;
return _runLoading == true
? _buildLoadingAnimation
: _data2 == true
? _buildServer2Data
: _buildNoDataFound
答案 0 :(得分:1)
我认为可能是这样的:
Future makeRequest1() {
// make first request
}
Future makeRequest2() {
// make second request
}
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: makeRequest1(),
builder: (context, snapshot) {
if (snapshot.hasData) {
if ([Server 1 Data is okay]) {
return FutureBuilder(
future: makeRequest2(),
builder: (context, snapshot) {
if (snapshot.hasData) {
if ([Server 2 Data is okay]) {
return Server2DataWidget();
} else {
return TemporarilyDataIsNotAvailableWidget();
}
} else {
return CircularProgressIndicator()
}
});
} else {
return NoRegistrationFoundWidget();
}
} else {
return CircularProgressIndicator();
}
});
}