【发布时间】:2022-11-20 20:38:49
【问题描述】:
我需要在一个小部件中运行 async 方法,但该小部件仍在等待 async 方法结束。
所以我有这段代码:
class MainList extends StatelessWidget {
final List<TemplateData> list;
TemplatesList({required this.list});
@override
Widget build(BuildContext context) {
final int index = (templates.length / 2).round();
final listLeft =
list.sublist(0, index);
final listRight=
list.sublist(index, templates.length);
return SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.all(8),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Flexible(child: _List(templateData: listLeft)),
Flexible(child: _List(templateData: listRight)),
],
),
),
);
}
}
class _List extends StatefulWidget{
final List<TemplateData> fileNames;
const MemeList({required this.fileNames});
@override
State<StatefulWidget> createState() => _MemeListState();
}
class _ListState extends State<_List>{
late List fileDownloaded;
@override
void initState() {
super.initState();
fileDownloaded = widget.fileNames.map((e) => false).toList();
downloadPreviews(widget.fileNames);
}
@override
Widget build(BuildContext context) {
return Column(
children: [for (String file in widget.fileNames) MyItem(name: file, is_downloaded:fileDownloaded[widget.fileNames.indexOf(file)],)],
);
}
Future downloadFiles(List<TemplateData> fileNames) async {
fileNames.forEach((file) async{
await downloadFile(file);
setState(() {
fileDownloaded[widget.fileNames.indexOf(file)] = true;
});
}
});
}
}
在我的应用程序中,我有两个列表,一个在左边,一个在右边。构建应用程序时,会逐渐为每个列表下载文件。我的问题是第一个列表(左侧)的下载速度比第二个快。我想要的是同时下载它们。我是编程的初学者,所以我需要你的帮助。
【问题讨论】:
标签: flutter list dart asynchronous android-widget