首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将地图数据添加到云端火场中?

如何将地图数据添加到云端火场中?
EN

Stack Overflow用户
提问于 2022-03-30 15:32:35
回答 1查看 138关注 0票数 -1

我想将用户的名字添加为包含'firstName‘和'lastName’的地图。我已经有了用户模型和名称模型,下面是代码:

name_model.dart

代码语言:javascript
复制
class Name {
  final String firstName;
  final String lastName;

  Name({
    required this.firstName,
    required this.lastName,
  });

  Map<String, dynamic> toMap() {
    return {
      'firstName': firstName,
      'lastName': lastName,
    };
  }

  Name.fromMap(Map<String, dynamic> nameMap)
      : firstName = nameMap['firstName'],
        lastName = nameMap['lastName'];
}

user_model.dart

代码语言:javascript
复制
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:ukk_backup/models/name_model.dart';

class User {
  final String? docId;
  final String email;
  final String password;
  final String phoneNumber;
  final Name name;

  User({
    this.docId,
    required this.email,
    required this.password,
    required this.phoneNumber,
    required this.name,
  });

  Map<String, dynamic> toMap() => {
        'docId': docId,
        'email': email,
        'password': password,
        'phoneNumber': phoneNumber,
        'name': name.toMap(),
      };
  User.fromDocumentSnapshot(DocumentSnapshot<Map<String, dynamic>> doc)
      : docId = doc.id,
        email = doc['email'],
        password = doc['password'],
        phoneNumber = doc['phoneNumber'],
        name = Name.fromMap(doc['name']);
}

当我按下“注册”按钮时,我希望将所有数据保存在云防火墙中,包括带有映射类型的名称。这是onPressed

代码语言:javascript
复制
onPressed: (() async {
 if (_formKey.currentState!.validate()) {
   DatabaseService service = DatabaseService();
   User user = User(
     email: emailController.text,
     password: passwordController.text,
     phoneNumber: phoneNumberController.text,
     name: , //what to type?
   );
   setState(() {
     _isLoading = true;
   });
   await service.addUser(user);
   setState(() {
   _isLoading = false;
   });
  }
}),

如果您发现我的一些代码不正确,或者您找到了解决方案,请告诉我。谢谢。

编辑:

database_services.dart

代码语言:javascript
复制
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:ukk_backup/models/user_model.dart';

class DatabaseService {
  final FirebaseFirestore _firestore = FirebaseFirestore.instance;

  addUser(User userData) async {
    await _firestore.collection('users').add(userData.toMap());
  }

  updateUser(User userData) async {
    await _firestore
        .collection('users')
        .doc(userData.docId)
        .update(userData.toMap());
  }

  Future<void> deleteUser(String documentId) async {
    await _firestore.collection('users').doc(documentId).delete();
  }

  Future<List<User>> retrieveUser() async {
    QuerySnapshot<Map<String, dynamic>> snapshot =
        await _firestore.collection('users').get();
    return snapshot.docs
        .map((docSnapshot) => User.fromDocumentSnapshot(docSnapshot))
        .toList();
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-31 11:35:09

我先误解了你的问题。在我看来,你的DataBaseService课程没问题。因此,如果我是对的,您唯一的问题就是不知道如何将名称添加到UserObject中。如果这是你问题的实质,那就很简单了:

代码语言:javascript
复制
onPressed: (() async {
 if (_formKey.currentState!.validate()) {
   DatabaseService service = DatabaseService();
   User user = User(
     email: emailController.text,
     password: passwordController.text,
     phoneNumber: phoneNumberController.text,
     name: Name(firstName: firstNameController.text, lastName: lastNameController.text),
   );
   setState(() {
     _isLoading = true;
   });
   await service.addUser(user);
   setState(() {
   _isLoading = false;
   });
  }
}),
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71680112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档