Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何初始化模型以检查保存是否成功_Flutter_Dart - Fatal编程技术网

Flutter 如何初始化模型以检查保存是否成功

Flutter 如何初始化模型以检查保存是否成功,flutter,dart,Flutter,Dart,我已经为我的球员建立了一个模型 class Player { String uid; String name; Player({ required this.uid, required this.name, }); factory Player.fromFirestore(DocumentSnapshot doc) { Map data = doc.data()!; return Player( uid: data['uid']

我已经为我的球员建立了一个模型

class Player {
  String uid;
  String name;

  Player({
    required this.uid,
    required this.name,
  });

  factory Player.fromFirestore(DocumentSnapshot doc) {
    Map data = doc.data()!;
    return Player(
      uid: data['uid'],
      name: data['name'],
    );
  }
  factory Player.fromMap(Map data) {
    return Player(
      uid: data['uid'],
      name: data['name'],
    );
  }
}
如果用户在TRY语句中失败,我将如何初始化用户。以前,如果失败,我只是将其作为null值传递。然后我会检查我的保存是否成功

  @override
  Future<Player> saveProfile({required String uid, required String name}) async {
    try {
      DocumentReference ref = db.collection(Paths.playersPath).doc(uid);
      var data = {
        'uid': uid,
        'name': name,
      };
      ref.set(data, SetOptions(merge: true));
      final DocumentSnapshot currentDoc = await ref.get();
      user = Player.fromFirestore(currentDoc);
    } catch (e) {
      print('failed to save: $e');
      //TODO how will I initialize the user because what I have tried below does not work
      //user = new Player();
    }
    return user;
  }
@覆盖
将来的saveProfile({必需的字符串uid,必需的字符串名称})异步{
试一试{
DocumentReference=db.collection(path.playersPath).doc(uid);
风险值数据={
“uid”:uid,
“名称”:名称,
};
ref.set(数据,SetOptions(合并:true));
最终文档Snapshot currentDoc=等待参考get();
user=Player.fromFirestore(currentDoc);
}捕获(e){
打印($e保存失败);
//TODO如何初始化用户,因为我在下面尝试的方法无效
//用户=新玩家();
}
返回用户;
}

你的意思是这样的:

@覆盖
将来的saveProfile({必需的字符串uid,必需的字符串名称})异步{
试一试{
DocumentReference=db.collection(path.playersPath).doc(uid);
风险值数据={
“uid”:uid,
“名称”:名称,
};
ref.set(数据,SetOptions(合并:true));
最终文档Snapshot currentDoc=等待参考get();
user=Player.fromFirestore(currentDoc);
}捕获(e){
打印($e保存失败);
最终数据={'uid':uid,'name':name};
user=Player.fromMap(数据);
}
返回用户;
}

很酷。谢谢你的帮助。我现在明白了。