我正在尝试使用多个jsons请求创建仪表板,但我希望该请求一个接一个地工作,例如当完成第一个请求时启动第二个请求,当第二个完成时启动第三个请求,而第三个完成时启动N。>
我的列表代码:
new CustomScrollView(
cacheExtent: height * 6,
slivers: [
new SliverList(
delegate: new SliverChildListDelegate(
[
new RelatorioVendPeriodoAPeriodo(),
new RelatorioMensals(),
new RelatorioDiasDaSemanas(),
new RelatorioVendasTotalidasPorPeriodo(),
new RelatorioDasVendasTotsProdutos(),
]
)
)
]
),
这个新类调用,为我返回请求。有人知道如何延迟吗?
答案 0 :(得分:0)
首先,当没有必要的数据时,父窗口小部件应返回进度条。
一个服务将被称为initState以从后端获取数据。数据准备就绪后,将调用setState()来重绘窗口小部件。
看这个例子:
class _TestWidgetState extends State<TestWidget> {
var data;
@override
void initState() {
data = NetworkService.getData().then((data) {
setState(() {
this.data = data;
});
});
}
@override
Widget build(BuildContext context) {
if (data == null) {
return CircularProgressIndicator();
} else {
return
new CustomScrollView(
cacheExtent: height * 6,
slivers: [
new SliverList(
delegate: new SliverChildListDelegate(
[
new RelatorioVendPeriodoAPeriodo(data: data),
new RelatorioMensals(data: data),
new RelatorioDiasDaSemanas(data: data),
new RelatorioVendasTotalidasPorPeriodo(data: data),
new RelatorioDasVendasTotsProdutos(data: data),
]
)
)
]
);
}
}
}
class NetworkService {
final JsonDecoder _decoder = new JsonDecoder();
static String data1;
static String data2;
static getData() async {
if (data1 == null || data2 == null) {
await fetchFromServer();
}
return {'data1': data1, 'data2': data2};
}
static fetchFromServer() async {
data1 = (await http.get('url')).body;
data2 = (await http.get('url')).body;
}
}
答案 1 :(得分:0)
Future.delayed(const Duration(milliseconds: 500), () {
print(" This line is executed after 5 seconds");
});