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

Flutter集成AWS DataStore在线同步遇类型转换错误求助

排查Flutter Amplify DataStore同步时的类型转换错误

针对你遇到的Unhandled Exception: type 'Null' is not a subtype of type 'Map<dynamic, dynamic>' in type cast错误,给你几个针对性的排查方向:

1. 检查Schema与云端数据的空值一致性

  • 确认Schema中标记为**非空(带!)**的字段,在AWS AppSync的云端数据中没有Null值。比如Schema定义String! username,但云端存在username为Null的记录,DataStore同步解析时就会触发类型转换错误。
  • 解决:要么修正云端的无效数据,要么调整Schema去掉字段后的!允许空值,同时确保本地代码处理对应字段的空值逻辑。

2. 重新生成Amplify模型文件

Schema修改后如果没重新生成模型,会导致本地解析逻辑与云端数据结构不匹配:

  • 执行以下命令重新生成模型并清理项目:
    amplify codegen models
    flutter clean
    flutter pub get
    
  • 重启项目后再测试同步功能。

3. 确认DataStore初始化顺序

检查ConfigureAmplify函数中,DataStore的启动必须在Amplify配置完成之后:

  • 正确示例:
    Future<void> configureAmplify() async {
      try {
        await Amplify.addPlugins([AmplifyDataStore(modelProvider: ModelProvider.instance)]);
        await Amplify.configure(amplifyconfig);
        // 确保配置完成后启动同步
        await DataStore.start();
      } catch (e) {
        print('Amplify配置失败: $e');
      }
    }
    

4. 验证版本兼容性

Amplify Flutter 2.1.0与Flutter 3.22.2可能存在兼容性问题:

  • 尝试降级Amplify到2.0.0或升级到最新稳定版(如2.2.0),修改pubspec.yaml中的依赖后执行flutter pub get测试。

5. 定位错误具体字段

从错误堆栈中找到触发类型转换的具体模型或字段:

  • 在本地自动生成的模型文件(如lib/models/*.dart)中,找到对应fromJson方法,临时添加打印日志输出原始数据,确认哪个字段返回了Null,再针对性修复。

内容的提问来源于stack exchange,提问作者B.lieve144

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:04:57