Kuc*_*aya 5 asynchronous async-await dart firebase-realtime-database flutter
我在 main 中使用 async wait,因此用户必须在进入应用程序之前在启动屏幕中等待。
void main() async {
await Firebase.initializeApp();
String? x;
await FirebaseDatabase.instance.ref().child("data").once().then((snapshot) {
Map data = snapshot.snapshot.value as Map;
x = jsonEncode(data);
});
return ChangeNotifierProvider<DataModel>.value(
value: DataModel(data: x),
child: MaterialApp()
);
}
Run Code Online (Sandbox Code Playgroud)
如果用户在没有互联网连接的情况下进入应用程序,他们将永远卡在启动屏幕上。如果还有互联网连接速度慢的用户,他们会在启动屏幕上停留更长时间。
所以无论互联网连接问题是什么,我想设置最多 5 秒只处于等待状态,如果超过,则跳过该部分并直接进入应用程序。
将 Firebase api 调用传递给函数,使该方法返回 future,
Future<String?> getData() async {
await FirebaseDatabase.instance.ref().child("data").once().then((snapshot) {
Map data = snapshot.snapshot.value as Map;
return jsonEncode(data);
});
}
Run Code Online (Sandbox Code Playgroud)
然后在 main 方法上,使用您创建的方法附加超时
void main() async {
await Firebase.initializeApp();
String? x = await getData().timeout(Duration(seconds: 5), onTimeout: () {
return null };
return ChangeNotifierProvider<DataModel>.value(
value: DataModel(data: x),
child: MaterialApp()
);
}
Run Code Online (Sandbox Code Playgroud)
因此,如果您的 api 花费的时间超过 5 秒,那么它会退出并返回 null
| 归档时间: |
|
| 查看次数: |
904 次 |
| 最近记录: |