【发布时间】:2022-06-19 18:02:07
【问题描述】:
我想在flutter中打开页面时运行下载Future函数,但是它被多次调用。
我想实现本文中第二个这样的解决方案:
https://flutterigniter.com/future-async-called-multiple-times/
(初始化后记忆未来,这样init函数就不会被多次调用) 但是在他的解决方案中,他像这样初始化未来
Future<String> _future;
这在当前版本的 dart 中不再可能,我想知道是否有等价物,我尝试使用 Late 关键字并将其初始化为 null,但两者都不起作用。
这是当前的代码以及我想要的代码 目前:
class _ARState extends State<AR> {
@override
void initState() {
super.initState();
WidgetsBinding.instance?.addPostFrameCallback((_) {
_downloadFiles();
});
}
Future<dynamic> _downloadFiles() async {
// some downloading function that is getting run multiple times ....
}
Widget build(BuildContext context) {
return FutureBuilder<dynamic>(
future: _downloadFiles(),
builder: /// stuff i want built
}
我想要它:
class _ARState extends State<AR> {
Future<dynamic> _future;
@override
void initState() {
super.initState();
WidgetsBinding.instance?.addPostFrameCallback((_) {
_downloadFiles();
});
}
Future<dynamic> _downloadFiles() async {
// some downloading function that is getting run multiple times ....
}
Widget build(BuildContext context) {
return FutureBuilder<dynamic>(
future: _future,
builder: /// stuff i want built
}
【问题讨论】:
-
已经尝试过了,页面只是无限期加载
标签: flutter asynchronous dart-null-safety