我在主函数(main)中使用了async await关键字,这样用户就需要在启动画面等待一段时间后才能进入应用程序。
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()
);
}
如果有用户进入应用程序时没有网络连接,他们将永远停留在启动画面上。如果有慢速网络连接的用户,他们将更长时间地停留在启动画面上。
因此,无论网络连接问题是什么,我想设置一个最多只能等待5秒的等待时间,如果超过这个时间,跳过该部分直接进入应用程序。
once()
时,它实际上抛出了一个错误:"Error: [firebase_database/unknown] Error: Client is offline."。请参见https://dev59.com/o7X3oIgBc1ULPQZFu29w#71459638以获取我的测试结果。 - Frank van Puffelentry-catch-finally
和.catchError()
,也一直卡在启动画面上。我认为目前还没有解决方法来捕获互联网连接错误。timeout
解决了我的问题。 - Kucing Malaya