我剛剛升級到Flutter 3.3.4現在得到這個錯誤:
Error: The operator '[]' isn't defined for the class 'Object'.
- 'Object' is from 'dart:core'.
Try correcting the operator to an existing operator, or defining a '[]' operator.
: file.data()!['photo'];
代碼如下所示:
Future<String?> getUsersPhoto(String uid) async {
final reference = FirebaseFirestore.instance.doc('users/$uid');
DocumentSnapshot doc = await reference.get();
var result = doc.data()!['photo'];
return result;
}
![Flutter 3.3.4 - 未為“Object”類定義運算子“[]”](https://i.stack.imgur.com/Lx5YD.png)
還有一個更復雜的函式,比如:
Stream<T> findUser<T> ({required String uid, required T builder(Map<String, dynamic>? data, String documentID)}) {
final ref = FirebaseFirestore.instance.doc('users/$uid');
final Stream<DocumentSnapshot> snapshots = ref.snapshots();
return snapshots.map((snapshot) => builder(snapshot.data(), snapshot.id));
}
![Flutter 3.3.4 - 未為“Object”類定義運算子“[]”](https://i.stack.imgur.com/OYFan.png)
知道如何從這里取得進展嗎?
uj5u.com熱心網友回復:
將 doc.data() 轉換為 Map<String, dynamic>。
Map<String, dynamic> data = doc.data()! as Map<String, dynamic>;
return data['photo']
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/518264.html
標籤:Google Cloud Collective 扑火力基地镖谷歌云火库
