Firebase 当internet连接不工作时,如何向firestore添加数据?

Firebase 当internet连接不工作时,如何向firestore添加数据?,firebase,flutter,google-cloud-firestore,flutter-layout,Firebase,Flutter,Google Cloud Firestore,Flutter Layout,我是一个新手,在互联网连接不起作用时,我试图向firestore添加数据, 例如,我在添加数据之前检查了internet连接,但在检查连接时,我的internet连接可能工作,而在添加数据时,由于数据包用完或连接不稳定,internet连接可能无法工作。在这种情况下,它不会返回错误。在flatter中,Then()在数据添加到服务器之前不会触发,因此,我如何检查pendingWrites?我应该等到数据添加到缓存后再检查pendingWrites。当Internet连接不起作用时,添加数据的最佳

我是一个新手,在互联网连接不起作用时,我试图向firestore添加数据, 例如,我在添加数据之前检查了internet连接,但在检查连接时,我的internet连接可能工作,而在添加数据时,由于数据包用完或连接不稳定,internet连接可能无法工作。在这种情况下,它不会返回错误。在flatter中,Then()在数据添加到服务器之前不会触发,因此,我如何检查pendingWrites?我应该等到数据添加到缓存后再检查pendingWrites。当Internet连接不起作用时,添加数据的最佳方式是什么

这是我的密码

 SavePersonalData(this.firstName, this.lastName, this.birthDay, this.gender, 
this.userID, this.context);

 Future<void> saveUserData(){
return users.collection('users').doc(userID)
    .set({
  'first_name': firstName,
  'last_name': lastName,
  'birth_day': birthDay,
  'user_id': userID,
  "gender": gender==0?"Male":"Female",
  'account_created_on': FieldValue.serverTimestamp(),
})
    .then((value) => `//This is does not trigger until internet connection works`





 Navigator.push(context, MaterialPageRoute(builder: (context)=> SelectImage()))
print("data added to the databse")).timeout(Duration(seconds:5),onTimeout: ()=>{
  print("TimeOut")
})
    .catchError(
        (error) {
      print("Failed to add user: $error");
      
    } );
SavePersonalData(this.firstName、this.lastName、this.birth、this.gender、,
this.userID、this.context);
未来的saveUserData(){
返回users.collection('users').doc(userID)
.设置({
“名字”:名字,
“姓氏”:姓氏,
“出生日”:生日,
“用户id”:用户id,
“性别”:性别==0?“男性”:“女性”,
“创建的帐户”:FieldValue.serverTimestamp(),
})
。然后((值)=>`//在internet连接工作之前,不会触发此操作`
Navigator.push(上下文,MaterialPage路由(生成器:(上下文)=>SelectImage())
打印(“添加到数据库的数据”)。超时(持续时间(秒:5),onTimeout:()=>{
打印(“超时”)
})
.catchError(
(错误){
打印(“添加用户失败:$error”);
} );
根据,默认情况下启用脱机持久性

表示如果您启用了脱机持久性,则当internet连接可用时,它将同步所有更改。尽管如果您的应用程序需要实时交互,您可能应该禁用此功能

值得注意的是,当处于脱机模式时,您不能使用事务。可以找到更多详细信息。正如这里提到的,如果处于脱机状态,您不需要使用wait