當我嘗試運行我的 Flutter 應用程式時出現此錯誤代碼,但我不知道如何解決它,請幫助:
錯誤:引數型別“DocumentSnapshot<Object?>?” 不能分配給引數型別 'DocumentSnapshot<Object?>' 因為 'DocumentSnapshot<Object?>?' 可以為空,而 'DocumentSnapshot<Object?>' 不是。
“DocumentSnapshot”來自“package:cloud_firestore/cloud_firestore.dart”(“/C:/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-3.1.0/lib/cloud_firestore.dart”)。
“物件”來自“dart:core”。
MyUser user = MyUser.fromDocument(snapshot.data); ^
這是我的用戶參考:
final CollectionReference usersRef = FirebaseFirestore.instance.collection('users');
這是我正在嘗試構建的小部件:
Widget buildProfileHeader(context) {
final myuser = Provider.of<MyUser>(context);
return FutureBuilder<DocumentSnapshot>(
future: usersRef.doc(myuser.id).get(),
builder: (context, snapshot) {
if(!snapshot.hasData){
return circularProgress();
}
MyUser user = MyUser.fromDocument(snapshot.data);
return Row(...)
這是 MyUser 工廠:
import 'package:cloud_firestore/cloud_firestore.dart';
class MyUser{
final String id;
final String email;
final String photoUrl;
final String displayName;
final String username;
MyUser({
required this.id,
required this.email,
required this.photoUrl,
required this.displayName,
required this.username,
});
factory MyUser.fromDocument(DocumentSnapshot doc){
return MyUser(
id: doc['id'].toString(),
username: doc['username'].toString(),
email: doc['email'].toString(),
photoUrl: doc['photoUrl'].toString(),
displayName: doc['displayName'].toString(),
);
}
我不明白我該如何解決這個問題。我嘗試使用 snapshot.data.data(),但是當它修復了我當前的錯誤時,它給了我新的錯誤訊息:
錯誤:無法無條件呼叫方法“data”,因為接收器可以為“null”。(unchecked_use_of_nullable_value 在 [flutter_app] lib\pages\profile_screen.dart:58)
uj5u.com熱心網友回復:
Yuu 只需要使用:
MyUser user = MyUser.fromDocument(snapshot.data!);
因為此時在您的代碼中,即使您進行了測驗snapshot.hasData,dart 也會告訴您資料可能為空……但是您已經處理了這種情況,因此可以添加一個!
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/364081.html
