переключение на AWS S3 с использованием ошибки усиления <aсинхронной приостановки>

avatar
Prasath
9 августа 2021 в 05:58
234
1
2

Я пытаюсь загрузить изображения из Flutter в корзину AWS S3 с помощью Amplify. Я настроил приложение Flutter, используя эту документацию, я не могу загружать изображения на S3,

Это мой флаттер-код

onPressed:
  () async {

              for(int i=1;i<images.length;i++)
            {
              final key = DateTime.now().toString();
              File file = await getImageFileFromAssets(images[i]);

              try {
                print('## starting ##');
                print('##${file.path} ##');

                print('## upload starting ##');


                final UploadFileResult result = await Amplify.Storage.uploadFile(local: file, key: key);//  .uploadFile(local: file), key: key);
                print('********Successfully uploaded image: ${result.key}');

              } on StorageException catch (e) {
                print('_________Error uploading image: $e');
              }
            }
        },

Вот мой вывод

flutter: ## starting ##
flutter: ##/Users/prasathsivanathan/Library/Developer/CoreSimulator/Devices/A02325A9-A34C-4390-AF03-C0C2581CB062/data/Containers/Data/Application/34C934EF-84D3-4349-92A3-5754E21321D0/Library/Caches/IMG_0005.JPG ##
flutter: ## upload starting ##
[VERBOSE-2:ui_dart_state.cc(199)] Unhandled Exception: RangeError (index): Invalid value: Valid value range is empty: 0
#0      List.[] (dart:core-patch/growable_array.dart:254:60)
#1      StorageCategory.uploadFile (package:amplify_flutter/categories/amplify_storage_category.dart:45:19)
#2      _MultipleImageDemoState.build.<anonymous closure> (package:gomicropro1/screens/DIY_Imagesection.dart:195:75)
<asynchronous suspension>

Что здесь пошло не так,

Источник

Ответы (1)

avatar
KayD
16 ноября 2021 в 18:34
1

Хотя этот вопрос был задан в августе, и я надеюсь, что у вас уже есть свои решения, я все же опубликую решение для детей из будущего.


У меня была та же ошибка, после некоторого расследования я обнаружил, что плагин S3Storage не был зарегистрирован для усиления. Пожалуйста, проверьте ваш Amplify.addPlugins, если вы не забыли там зарегистрироваться.

import 'package:amplify_api/amplify_api.dart';
import 'package:amplify_auth_cognito/amplify_auth_cognito.dart';
import 'package:amplify_datastore/amplify_datastore.dart';
import 'package:amplify_flutter/amplify.dart';
import 'package:amplify_storage_s3/amplify_storage_s3.dart';
import 'package:contractor/models/ModelProvider.dart';
import '../../amplifyconfiguration.dart';
import 'dart:developer' as developer;

  final AmplifyDataStore _dataStorePlugin = AmplifyDataStore(modelProvider: ModelProvider.instance);
  final AmplifyAPI _apiPlugin = AmplifyAPI();
  final AmplifyAuthCognito _authPlugin = AmplifyAuthCognito();
  final AmplifyStorageS3 _s3Storage = AmplifyStorageS3();
  

  Future<void> configureAmplify() async {
    try {
      // add Amplify plugins
      await Amplify.addPlugins(
          [_dataStorePlugin, _apiPlugin, _authPlugin, _s3Storage]);

      // configure Amplify
      //
      // note that Amplify cannot be configured more than once!
      await Amplify.configure(amplifyconfig);
    } catch (e) {
      developer.log("An error occurred while configuring Amplify:  $e",
          name: 'amplify.error');
    }
  }