在Dart保存到Firebase的错误字段中使用参数和变量初始化

在Dart保存到Firebase的错误字段中使用参数和变量初始化,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我进入了飞镖/颤振的发展阶段,我慢慢地发现了一些非常奇怪的事情 比方说 class Person{ final String name; final String age; final String address; Person({this.name, this.address,this.age}); } 然后我尝试使用这个类并将参数传递给这个类 person = Person(name:"killedVariableSwitch", age:"1

我进入了飞镖/颤振的发展阶段,我慢慢地发现了一些非常奇怪的事情

比方说

class Person{
 final String name;
 final String age;
 final String address;
    Person({this.name, this.address,this.age});
}
然后我尝试使用这个类并将参数传递给这个类

person = Person(name:"killedVariableSwitch", age:"1024", address:"Mars");
因此,我使用上述类将其保存在其他数据库或任何需要上述实现的类中。完全没有秩序。正如我所记得的,我以前使用其他程序编写的代码会自动更正

你们可以注意到,我在那个论点中改变了年龄和地址的位置。现在数据库持有key:value对是错误的

print(person.fromDatabase);

name: killedVariableSwitch, address:1024, age:Mars.
这是所需的输出还是应该自行更正?。我以前从未体验过android或java。 或者我做错了什么

更多的例子来自我的行为

在Firebase Cloudfirestore中保存后


谢谢。

是的,确实是这个原因,如果我在main类中的顺序不同,那么传递的参数会产生真正的副作用

我想Dart需要解决这个问题。否则我就大错特错了

@JsonSerializable()
class User extends Equatable {
 final String id;
 final String name;
 final String mobileNo;
 final String email;
 final String picture;
 final String dateCreated;
 final String fcmTokenId;

const User(
  {this.id,
  this.name,
  this.mobileNo,
  this.email,
  this.picture,
  this.dateCreated,
  this.fcmTokenId});
记者电话

context.read<HomeBloc>().add(AddUser(User(
            name: "NoName",
            dateCreated:DateTime.now().toString(),
            email: "s.puspahraj.com",
            fcmTokenId: "dddadasda",
            picture: "ddsf",
            mobileNo:  _user.mobileNo)))



 @JsonSerializable()
 class UserEntity extends Equatable {
  final String id;
  final String name;
  final String mobileNo;
  final String email;
  final String picture;
  final String dateCreated;
  final String fcmTokenId;
context.read().add(添加用户(
姓名:“NoName”,
dateCreated:DateTime.now().toString(),
电子邮件:“s.puspahraj.com”,
fcmTokenId:“dddadasda”,
图片:“ddsf”,
mobileNo:_user.mobileNo)))
@JsonSerializable()
类UserEntity扩展了equalable{
最终字符串id;
最后的字符串名;
最终字符串mobileNo;
最终字符串电子邮件;
最后的字符串图片;
创建最终字符串日期;
最终字符串fcmTokenId;
把这里搞混了

 Map<String, Object> toDocument() {
  return {
  "id": id,
  "name": name,
  "dateCreated": dateCreated,
  "email": email,
  "picture": picture,
  "mobileNo": mobileNo,
  "fcmTokenId": fcmTokenId
   };
  ***************************** 
 @override
  Future<void> addUser(User user) {
   return usersCollection
    .add(user.toEntity().toDocument())
    .then((value) => _logger.d('user added'))
    .catchError((error) => _logger.e("Failed to add user: $error"));
映射到文档(){
返回{
“id”:id,
“姓名”:姓名,
“dateCreated”:dateCreated,
“电子邮件”:电子邮件,
“图片”:图片,
“mobileNo”:mobileNo,
“fcmTokenId”:fcmTokenId
};
***************************** 
@凌驾
未来添加用户(用户){
返回用户集合
.add(user.toEntity().toDocument())
.然后((值)=>\u logger.d(“用户添加”))
.catchError((error)=>_logger.e(“添加用户失败:$error”);

因此,在放置这些参数时,我必须非常小心!

您只是未能正确地保存/写入数据库,dart中的命名参数不需要像构造函数中那样有序,才能在模型类中保持与api响应相同的字段正确序列。\n但我想这在我身上经常发生,我想,或者我没有I don’我不关心命名参数。是否有关于传递参数的文档?