问题描述
我是 flutter 的新手,我正在通过教程构建一个社交媒体应用程序,我现在正在自定义该应用程序.现在我尝试向用户个人资料页面添加更多输入字段,然后我开始收到以下错误.当我可以登录时我的时间线页面变成红色警告 Bad state: field does not exist in the DocumentSnapshotPlatform
I am new to flutter and i am building a social media App through tutorial which i am now customizing.Now I tried to add more input fields to a users profile page then i started getting the error below. When i could login my timeline page turned red with warning Bad state: field does not exist within the DocumentSnapshotPlatform
我运行了 Flutter clean
,现在我的用户无法登录应用
I ran Flutter clean
and now my user cannot log into the app
我收到此错误:
E/flutter ( 3971): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: Bad state: field does not exist within the DocumentSnapshotPlatform
E/flutter ( 3971): #0 DocumentSnapshotPlatform.get._findKeyValueInMap
package:cloud_firestore_platform_interface/…/platform_interface/platform_interface_document_snapshot.dart:82
E/flutter ( 3971): #1 DocumentSnapshotPlatform.get._findComponent
package:cloud_firestore_platform_interface/…/platform_interface/platform_interface_document_snapshot.dart:98
E/flutter ( 3971): #2 DocumentSnapshotPlatform.get
package:cloud_firestore_platform_interface/…/platform_interface/platform_interface_document_snapshot.dart:113
E/flutter ( 3971): #3 DocumentSnapshot.get
package:cloud_firestore/src/document_snapshot.dart:49
E/flutter ( 3971): #4 DocumentSnapshot.[]
package:cloud_firestore/src/document_snapshot.dart:56
E/flutter ( 3971): #5 new User.fromDocument
package:findemed/models/user.dart:46
E/flutter ( 3971): #6 _HomeState.createUserInFirestore
package:findemed/pages/home.dart:152
E/flutter ( 3971): <asynchronous suspension>
E/flutter ( 3971): #7 _HomeState.handleSignIn
package:findemed/pages/home.dart:60
E/flutter ( 3971): #8 _HomeState.initState.<anonymous closure>
package:findemed/pages/home.dart:46
E/flutter ( 3971): #9 _rootRunUnary (dart:async/zone.dart:1198:47)
初始指向我的主文件的这个 dart 部分
The initial was pointing to this dart section of my home file
buildUsersToFollow() {
return StreamBuilder(
stream: usersRef.orderBy('timestamp', descending: true)
.limit(0)
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return circularProgress(context);
}
List<UserResult> userResults = [];
snapshot.data.docs.forEach((doc) {
User user = User.fromDocument(doc);
final bool isAuthUser = currentUser.id == user.id;
final bool isFollowingUser = followingList.contains(user.id);
// remove auth user from recommended list
if (isAuthUser) {
return;
} else if (isFollowingUser) {
return;
} else {
UserResult userResult = UserResult(user);
userResults.add(userResult);
}
});
现在它指向这个片段:
factory User.fromDocument(DocumentSnapshot doc) {
return User(
id: doc['id'],
email: doc['email'],
username: doc['username'],
photoUrl: doc['photoUrl'],
displayName: doc['displayName'],
bio: doc['bio'],
fullNames: doc['fullNames'],
practice: doc['practice'],
speciality: doc['speciality'],
phone: doc['phone'],
mobile: doc['mobile'],
emergency: doc['emergency'],
address: doc['address'],
city: doc['city'],
location: doc['location'],
);
}
这是堆栈中指出的另一段代码
and this is the other bit of code pointed out in the stack
currentUser = User.fromDocument(doc);
print(currentUser);
print(currentUser.username);
推荐答案
把你的工厂改成这样:
factory User.fromDocument(DocumentSnapshot doc) {
return User(
id: doc.data()['id'],
email: doc.data()['email'],
username: doc.data()['username'],
photoUrl: doc.data()['photoUrl'],
displayName: doc.data()['displayName'],
bio: doc.data()['bio'],
fullNames: doc.data()['fullNames'],
practice: doc.data()['practice'],
speciality: doc.data()['speciality'],
phone: doc.data()['phone'],
mobile: doc.data()['mobile'],
emergency: doc.data()['emergency'],
address: doc.data()['address'],
city: doc.data()['city'],
location: doc.data()['location'],
);
}
这篇关于Flutter:未处理的异常:状态错误:DocumentSnapshotPlatform 中不存在字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!