Flutter中操作Firestore已有数组字段增删元素如何避免隐性报错?
目标
无需提前检索数据,向已存在的数组字段中增删元素且不产生错误。
操作步骤
需求为用户点击添加/删除按钮时,向指定数组中增删当前用户的uid,实现代码如下:
// 从用户列表移除我的uid FirebaseFirestore.instance.collection("test").doc("ABC").update({ "users": FieldValue.arrayRemove( <String>[FirebaseAuth.instance.currentUser!.uid]) }); // 向用户列表添加我的uid FirebaseFirestore.instance.collection("test").doc("ABC").update({ "users": FieldValue.arrayUnion( <String>[FirebaseAuth.instance.currentUser!.uid]) });
后续我在安卓模拟器中点击了对应按钮进行测试。
遇到的问题
调试控制台中没有显示明确报错,但method_channel_document_reference.dart的第60行被标黄,该行代码为:
throw convertPlatformException(e);
运行环境信息(flutter doctor输出)
[√] Flutter (Channel beta, 2.6.0-5.2.pre, 运行系统 Microsoft Windows [Version 10.0.22000.282], 区域设置 ja-JP) • Flutter 版本 2.6.0-5.2.pre,安装路径 D:\src\flutter_windows_2.5.0-stable\flutter • 上游仓库地址 https://github.com/flutter/flutter.git • 框架版本 400608f101 (7周前提交,2021-09-15 15:50:26 -0700) • 引擎版本 1d521d89d8 • Dart 版本 2.15.0 (build 2.15.0-82.2.beta) [√] Android 开发工具链 - 开发安卓设备应用 (Android SDK 版本 29.0.3) • Android SDK 安装路径 D:\Android • 最高支持平台 android-30,构建工具版本 29.0.3 • Java 二进制文件路径: D:\Program Files\Android\Android Studio\jre\bin\java • Java 版本 OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174) • 所有安卓证书已接受 [√] Chrome - 开发web应用 • Chrome 安装路径 C:\Program Files\Google\Chrome\Application\chrome.exe [√] Android Studio (版本 4.2) • Android Studio 安装路径 D:\Program Files\Android\Android Studio • Flutter 插件可在JetBrains插件市场搜索flutter安装 • Dart 插件可在JetBrains插件市场搜索dart安装 • Java 版本 OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174) [√] VS Code (版本 1.61.2) • VS Code 安装路径 C:\Users\yukik\AppData\Local\Programs\Microsoft VS Code • Flutter 扩展版本 3.27.0 [√] 已连接的可用设备 (3台) • Android SDK built for x86 (移动端) • emulator-5554 • android-x86 • Android 10 (API 29) (模拟器) • Chrome (web端) • chrome • web-javascript • Google Chrome 95.0.4638.54 • Edge (web端) • edge • web-javascript • Microsoft Edge 95.0.1020.40 • 未发现任何问题
内容的提问来源于stack exchange,提问作者Beginner_
相关产品推荐
相关产品推荐

