![](/img/trans.png)
[英]how to add a JSON file data into Cloud Firestore + Flutter
[英]how to add map data to cloud firestore in flutter?
我想將用戶名添加為包含“firstName”和“lastName”的 map。 我已經有了用戶 model 和名稱 model,這是代碼:
名稱_型號.dart
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'];
}
用戶模型.dart
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']);
}
當我按下注冊按鈕時,我希望所有數據都保存在 Cloud firestore 中,包括類型為 map 的名稱。 這是onPressed :
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
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();
}
}
我首先誤解了你的問題。 您的 DataBaseService class 在我看來沒問題。 因此,如果我是對的,您遇到的唯一問題是您不知道如何將名稱添加到 UserObject。 如果那是您問題的本質,那么這很容易:
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;
});
}
}),
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.