firebase - Flutter - 更新了所有 Firebase 依赖项 - 错误状态:无法获取 DocumentSnapshotPlatform 上不存在的字段
问题描述
我有一个颤振项目,我想迁移到最新的依赖项(Firestore、FirebaseAuth、FirebaseStorage 等)。
我迁移了所有代码并更新了我的库以便能够启动应用程序。在我的许多 firebase 集合中,我没有定义字段,以前当我从 Firebase 请求该字段时,它只返回 null。现在相反,它会创建一个不存在的错误Bad state: cannot get a field on a DocumentSnapshotPlatform
,并且应用程序无法正常运行。
我将不胜感激允许我更新我的依赖项但不会改变代码库的解决方案。
Pubspec.yaml 文件中的依赖项:
cupertino_icons: ^1.0.4
cloud_firestore: ^3.1.0
firebase_auth: ^3.2.0
curved_navigation_bar: ^1.0.1
grouped_list: ^4.1.0
random_color: ^1.0.6-nullsafety
intl: ^0.17.0
firebase_storage: ^10.1.0
image_picker: ^0.8.4+4
flutter_staggered_grid_view: ^0.4.1
carousel_slider: ^4.0.0
csv: ^5.0.0
path_provider: ^2.0.7
excel: ^2.0.0-null-safety-3
flutter_email_sender: ^5.0.2
firebase_core: ^1.10.0
firebase_messaging: ^11.1.0
auto_size_text: ^3.0.0
flutter_icons: ^1.1.0
camera: ^0.9.4+4
qr_code_scanner: ^0.6.1
package_info: ^2.0.2
url_launcher: ^6.0.13
示例 Streambuilder 代码:
StreamBuilder(
stream: stream,
builder: (ctx, queryDetailSnapShot) {
if (queryDetailSnapShot.connectionState ==
ConnectionState.waiting) {
return Center(child: CircularProgressIndicator());
}
var priceDetail = queryDetailSnapShot.data.docs;
return ListView.builder(
reverse: false,
itemCount: priceDetail.length,
itemBuilder: (ctx, index) {
if (_selectedBottomIndex == 1) {
return CostExpenseRequestContainer(
widget.storenameUser,
widget.storeCostAcess,
widget.userName,
widget.userEmail,
widget.userId,
widget.userLanguage,
priceDetail[index]['Storename'],
priceDetail[index]['Created_dt'],
priceDetail[index]['Expense_type_en'],
priceDetail[index]['Expense_type_th'],
priceDetail[index]['Expense_amount_org'],
priceDetail[index]['Expense_amount_approved'],
priceDetail[index]['Visible_to'],
priceDetail[index]['Expense_status'],
priceDetail[index]['Photo_url'],
priceDetail[index]['Service_dt'],
priceDetail[index]['Partner_account_number'],
priceDetail[index]['Partner_value_th'],
priceDetail[index]['Partner_value_en'],
priceDetail[index].id,
key: ValueKey(priceDetail[index].id,),
);
} else
return CostExpenseTrContainer(
widget.storenameUser,
widget.storeCostAcess,
widget.userName,
widget.userEmail,
widget.userId,
widget.userLanguage,
priceDetail[index]['Storename'],
priceDetail[index]['Created_dt'],
priceDetail[index]['Service_dt'],
priceDetail[index]['Expense_type_en'],
priceDetail[index]['Expense_type_th'],
priceDetail[index]['Expense_amount'],
priceDetail[index]['Reversal_flg'],
priceDetail[index]['Visible_to'],
priceDetail[index].id,
priceDetail[index]['Parent_record_id'],
priceDetail[index]['Partner_account_number'],
key: ValueKey(
priceDetail[index].id,
),
);
});
}),
错误信息:
Bad state: cannot get a field on a DocumentSnapshotPlatform which does not exist
解决方案
早些时候,您必须像这样调用文档快照中的字段
docSnapshot['field']
但是在最近的版本中,您必须调用 data 函数以将数据作为地图获取,然后访问所需的字段。例子
docSnapshot.data()['field']
推荐阅读
- javascript - 谷歌地图 v3 不是 LatLngBounds 或 LatLngBoundsLiteral:不是对象名称:“InvalidValueError”
- git - 在 Git 中,如何最好地恢复到标记,进行进一步更改,然后恢复所有后续更改?
- flutter - Flutter:使用 Navigator pushNamed 将参数称为对象
- apache-kafka - kafka + 此服务器不是该主题分区的领导者 + kafka 生产者
- javascript - Google Recaptcha - 如何更改默认的必需验证消息?
- nginx - 删除部分 url 使用 nginx
- c# - 用户控件不动态添加控件
- python - 如何在正则表达式中使用变量来计算平均值
- sass - 从 SCSS 列表生成类列表
- postgresql - 在为 mac 安装 postgrsql 应用程序后安装 pgadmin