【发布时间】:2021-09-07 14:52:36
【问题描述】:
点击“打开列表”按钮时,应用会创建一系列列表以供将来显示。我发现当列表中的项目数量增加时,这些计算可能需要一点时间(2、3 秒)。因此,为了获得更好的用户体验,我想添加类似于加载指示器的内容,告诉用户“正在准备列表”。 在我的应用程序中,我使用包加载指示器:它工作正常。 所以我想在这种情况下使用它。 这就是我所做的:
- 我将创建函数的“void”列表转换为“Future Void”。
- 我在插入“OPEN LIST BUTTON”的函数中添加了 async 关键字。
但是……由于某种原因,它从不显示加载指示器……
这是代码(UI 部分):
onMenuOuvrir: () async {
DialogBuilder(context).showLoadingIndicator(
text: 'Ouverture de la liste', color: Colors.black45);
uD.setSelectedCarnetList(
index, uD.userInfo!.carnetList![index].ref!);
await uD.getListReady();
DialogBuilder(context).hideOpenDialog();
Navigator.pushReplacementNamed(
context, EditCarnetScreen.id);
},
这是代码(提供者/后端部分):
Future<void> getListReady() async {
await createBufferCarnetWordBank();
await createBufferCarnetList();
await createBufferGrammarList();
await createBufferLevelList();
setEditMode(false);
clearSearchList();
}
函数“createBuffer...List”都是 Future 类型。
我做错了什么?
我实际上发现问题出在其他地方......不是在创建列表,而是在 EditCarnetScreen 中构建“listview.builder”。
所以现在的问题是……我们如何在处理此任务时显示某种指示器……它似乎是“在屏幕之间”……
【问题讨论】:
标签: flutter dart asynchronous