Amplify Flutter与React同项目查询同一AWS表返回结果异常
问题根因
你的Flutter端仅配置了AmplifyDataStore插件,未添加配套的AmplifyAPI插件,导致DataStore仅工作在本地离线模式:所有读写操作都只针对设备本地的SQLite数据库,不会和AWS云端的AppSync、DynamoDB表同步,自然会出现两端数据完全隔离的现象。
现象解释
- React端直接调用
API.graphql接口,所有读写操作直接请求云端AppSync服务,数据直接写入DynamoDB表,因此你在AWS控制台可以看到React写入的数据。 - Flutter端当前仅注册了DataStore插件,DataStore的默认逻辑是如果没有检测到配套的API插件,就不会触发云端同步逻辑,所有
Amplify.DataStore.save、Amplify.DataStore.query操作都仅在本地执行,因此Flutter写入的数据仅在当前设备可见,不会同步到云端,React端和AWS控制台自然无法查看;反过来云端的React写入的数据也不会同步到Flutter本地,所以Flutter查询云端已有的数据会返回空列表。
解决步骤
- 在Flutter项目的
pubspec.yaml中添加amplify_api依赖,注意版本要和你当前使用的amplify_flutter、amplify_datastore版本保持一致。 - 修改Amplify初始化逻辑,同时注册DataStore和API插件:
// 先导入amplify_api依赖 import 'package:amplify_api/amplify_api.dart'; Future<void> configureAmplify() async { Amplify.addPlugins([ AmplifyDataStore(modelProvider: ModelProvider.instance), AmplifyAPI() ]); try { await Amplify.configure(amplifyconfig); } catch (e) { print("Amplify配置异常: $e"); } }
- 重新运行Flutter项目,此时DataStore会自动和云端AppSync完成双向同步,两端数据即可正常互通。
补充注意事项
如果配置后仍存在同步异常,可开启Amplify调试日志排查是否有权限、模型版本不匹配的问题;同时确认Flutter项目中的amplifyconfiguration.dart和React端的aws-exports.js配置参数完全一致,尤其是AppSync端点、区域、认证模式等核心配置。
内容的提问来源于stack exchange,提问作者Ranjan Raj Shrestha
相关产品推荐
相关产品推荐

