#flutter #amazon-s3 #aws-amplify
Вопрос:
Я начинаю проект с хранилищем Amplify S3. Я следил за многими учебными пособиями и примерами проектов.
Я скачал этот пример проекта: https://github.com/aws-amplify/amplify-flutter/tree/main/example
Но я получаю следующую ошибку, когда caled Amplify.configue(amplifyconfig):
E/flutter ( 5798): [ОШИБКА:flutter/lib/ui/ui_dart_state.cc(209)] Необработанное исключение: Исключение AnalyticsException(сообщение: Не удается прочитать идентификатор приложения или регион из json конфигурации amplify., recoverySuggestion: Убедитесь, что конфигурация amplifyconfiguration.json-это допустимый объект json в ожидаемом формате. Пожалуйста, ознакомьтесь с документацией для ожидаемого формата amplifyconfiguration.json., лежащего в основе исключения: org.json.JSONException: Нет значения для точного анализа) E/flutter ( 5798): #0 AmplifyClass.configure (пакет:amplify_flutter/amplify.дротик:171:9) E/флаттер ( 5798): E/флаттер ( 5798): #1 _MyAppState._initAmplifyFlutter (пакет:sample_app/main.дротик:65:7) E/флаттер ( 5798): E/флаттер ( 5798):
Это часть кода:
@override
initState() {
super.initState();
_initAmplifyFlutter();
}
void _initAmplifyFlutter() async {
AmplifyAuthCognito auth = AmplifyAuthCognito();
AmplifyStorageS3 storage = AmplifyStorageS3();
AmplifyAnalyticsPinpoint analytics = AmplifyAnalyticsPinpoint();
Amplify.addPlugins([auth, storage, analytics]);
// Initialize AmplifyFlutter
try {
await Amplify.configure(amplifyconfig);
} on AmplifyAlreadyConfiguredException {
print(
"Amplify was already configured. Looks like app restarted on android.");
}
setState(() {
_isAmplifyConfigured = true;
});
}
Кроме того, моя неопределенность в усилении.дарт, кажется, выглядит нормально;
const amplifyconfig = ''' {
"UserAgent": "aws-amplify-cli/2.0",
"Version": "1.0",
"auth": {
"plugins": {
"awsCognitoAuthPlugin": {
"UserAgent": "aws-amplify-cli/0.1.0",
"Version": "0.1.0",
"IdentityManager": {
"Default": {}
},
"CredentialsProvider": {
"CognitoIdentity": {
"Default": {
"PoolId": "us-east-1:b9741a22-5ce7-44e6-807d-43ac31244d3b",
"Region": "us-east-1"
}
}
},
"CognitoUserPool": {
"Default": {
"PoolId": "us-east-1_xTO13zNaS",
"AppClientId": "3im526imsnhcl9rugc3t8c70tn",
"Region": "us-east-1"
}
},
"Auth": {
"Default": {
"authenticationFlowType": "USER_SRP_AUTH",
"loginMechanisms": [
"PREFERRED_USERNAME"
],
"signupAttributes": [
"EMAIL"
],
"passwordProtectionSettings": {
"passwordPolicyMinLength": 8,
"passwordPolicyCharacters": []
},
"mfaConfiguration": "OFF",
"mfaTypes": [
"SMS"
],
"verificationMechanisms": [
"EMAIL"
]
}
},
"S3TransferUtility": {
"Default": {
"Bucket": "demobucket225218-dev",
"Region": "us-east-1"
}
}
}
}
},
"storage": {
"plugins": {
"awsS3StoragePlugin": {
"bucket": "demobucket225218-dev",
"region": "us-east-1",
"defaultAccessLevel": "guest"
}
}
}
}''';
Я убежал:
amplify add auth
amplify add storage
amplify push
Вот мои зависимости в pubspec.yaml
file_picker: ^4.0.0
amplify_flutter: 0.2.7
amplify_analytics_pinpoint: 0.2.7
amplify_auth_cognito: 0.2.7
amplify_storage_s3: 0.2.7
Все равно не везет. Спасибо
Ответ №1:
Вы никогда не добавляли аналитику в свой проект. Ты сделал
amplify add auth
amplify add storage
amplify push
Но вы не добавили аналитику.
кроме того, если вы проверите свой файл amplifyconfiguation.dart, там есть «аутентификация» и «хранилище», но нет аналитики.
Просто прокомментируйте это и попробуйте:
@override
initState() {
super.initState();
_initAmplifyFlutter();
}
void _initAmplifyFlutter() async {
AmplifyAuthCognito auth = AmplifyAuthCognito();
AmplifyStorageS3 storage = AmplifyStorageS3();
//AmplifyAnalyticsPinpoint analytics = AmplifyAnalyticsPinpoint();
Amplify.addPlugins([auth, storage/*, analytics*/]);
// Initialize AmplifyFlutter
try {
await Amplify.configure(amplifyconfig);
} on AmplifyAlreadyConfiguredException {
print(
"Amplify was already configured. Looks like app restarted on android.");
}
setState(() {
_isAmplifyConfigured = true;
});
}
Комментарии:
1. Большое спасибо