将AWS Amplify连接到Flutter应用时遇到配置错误
针对你遇到的Amplify配置后Chrome和安卓模拟器都无法正常运行的问题,可按以下步骤排查修复:
确认ModelProvider类正确生成
必须通过Amplify CLI执行amplify codegen models命令生成数据模型及对应的ModelProvider类。如果未执行该命令,或生成的文件未被正确导入到项目中,会导致找不到ModelProvider的错误。检查项目中是否存在models目录,且目录下包含自动生成的dart文件。修正配置函数的异步调用
Amplify.addPlugin和Amplify.configure都是异步方法,同步调用会导致配置不完整。修改配置函数为异步并添加await:void _configureAmplify() async { if (Amplify.isConfigured) return; // 避免重复配置 final provider = ModelProvider(); final dataStorePlugin = AmplifyDataStore(modelProvider: provider); try { await Amplify.addPlugin(dataStorePlugin); await Amplify.configure(amplifyconfig); debugPrint('Amplify Configured'); } catch (e) { debugPrint('Amplify配置错误: $e'); } }调用该函数时,确保在合适的生命周期(比如
initState)中触发:@override void initState() { super.initState(); _configureAmplify(); }验证amplifyconfig配置文件
确认amplifyconfiguration.dart文件已通过amplify pull命令拉取到项目中,且文件内容正确。同时确保当前dart文件已导入该配置文件:import 'amplifyconfiguration.dart';统一依赖版本
在pubspec.yaml中确保amplify_flutter和amplify_datastore的版本一致,避免版本不兼容问题。例如:dependencies: flutter: sdk: flutter amplify_flutter: ^1.10.0 amplify_datastore: ^1.10.0执行
flutter pub get更新依赖。Web端额外配置
针对Chrome运行的场景,需要在web/index.html中添加Amplify的JS脚本,版本需与dart包版本兼容:<script src="https://cdn.amplify.aws/lib/aws-amplify/5.3.0/aws-amplify.min.js"></script>安卓端配置检查
打开android/app/build.gradle,确保minSdkVersion不低于21,且添加正确的Amplify安卓依赖:android { defaultConfig { minSdkVersion 21 } } dependencies { implementation 'com.amplifyframework:core:2.27.0' implementation 'com.amplifyframework:datastore:2.27.0' }清理缓存重启
执行flutter clean清除项目缓存,再执行flutter pub get,重启IDE后重新运行项目,解决缓存导致的异常。
内容的提问来源于stack exchange,提问作者ep888

