You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter调用Firestore get()方法时出现ClassCastException错误求助

解决Flutter Firestore读取时的ClassCastException错误

问题场景

执行Firestore读取操作时触发类型转换错误,调用代码:

DocumentSnapshot<Map<String, dynamic>> doc = await FirebaseFirestore.instance.collection("app").doc("info").get();

错误日志

E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documenFailed to handle message
E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documenjava.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean
E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documen    at io.flutter.plugins.firebase.firestore.GeneratedAndroidFirebaseFirestore$PigeonDocumentOption.fromList(GeneratedAndroidFirebaseFirestore.java:934)
E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documen    at io.flutter.plugins.firebase.firestore.GeneratedAndroidFirebaseFirestore$FirebaseFirestoreHostApiCodec.readValueOfType(GeneratedAndroidFirebaseFirestore.java:1433)
E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documen    at io.flutter.plugin.common.StandardMessageCodec.readValue(StandardMessageCodec.java:340)
E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documen    at io.flutter.plugin.common.StandardMessageCodec.readValueOfType(StandardMessageCodec.java:424)
E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documen    at io.flutter.plugins.firebase.firestore.FlutterFirebaseFirestoreMessageCodec.readValueOfType(FlutterFirebaseFirestoreMessageCodec.java:284)
E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documen    at io.flutter.plugins.firebase.firestore.GeneratedAndroidFirebaseFirestore$FirebaseFirestoreHostApiCodec.readValueOfType(GeneratedAndroidFirebaseFirestore.java:1449)
E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documen    at io.flutter.plugin.common.StandardMessageCodec.readValue(StandardMessageCodec.java:340)
E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documen    at io.flutter.plugin.common.StandardMessageCodec.decodeMessage(StandardMessageCodec.java:89)
E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documen    at io.flutter.plugin.common.BasicMessageChannel$IncomingMessageHandler.onMessage(BasicMessageChannel.java:262)
E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documen    at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:292)
E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documen    at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:319)
E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documen    at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12)
E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documen    at android.os.Handler.handleCallback(Handler.java:883)
E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documen    at android.os.Handler.dispatchMessage(Handler.java:100)
E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documen    at android.os.Looper.loop(Looper.java:224)
E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documen    at android.app.ActivityThread.main(ActivityThread.java:7562)
E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documen    at java.lang.reflect.Method.invoke(Native Method)
E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documen    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
E/BasicMessageChannel#dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documen    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

环境信息

Flutter Doctor输出

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel beta, 3.19.0-0.1.pre, on macOS 14.2.1 23C71 darwin-arm64, locale pt-BR)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.3)
[✓] VS Code (version 1.85.1)
[✓] Connected device (2 available)
[✓] Network resources

依赖包版本

cloud_firestore: ^4.14.0
cloud_functions: ^4.6.0
firebase_auth: ^4.16.0
firebase_core: ^2.24.2

解决步骤

  • 对齐插件与Flutter版本兼容性:当前使用的Flutter beta通道3.19.0-0.1.pre与cloud_firestore ^4.14.0可能存在适配问题。可尝试:
    1. 升级cloud_firestore至最新稳定版,或降级到与Flutter beta版本匹配的版本
    2. 执行flutter pub upgrade统一更新所有Firebase相关依赖
  • 清理重建项目:
    1. 运行flutter clean清除缓存
    2. (可选)删除android/build和android/app/build目录彻底清理
    3. 重新执行flutter pub get
    4. 重新编译项目
  • 检查Firestore文档字段:确认app/info文档中是否存在字段类型错误(如布尔值字段被存为字符串)
  • 切换到Flutter稳定通道:beta通道可能存在不稳定因素,执行以下命令切换:
    flutter channel stable
    flutter upgrade
    

内容的提问来源于stack exchange,提问作者Go-At Solutions

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 02:35:56