проблема с загрузкой средства выбора нескольких изображений с помощью dio (пакет устарел)

#flutter #dart #flutter-dependencies

#сбой #dart #сбой-зависимости

Вопрос:

Раньше я загружал изображения с этим кодом ниже, но из-за обновления пакета он больше не работает Я прочитал документацию, но это не сработало, и я не знал, как использовать multipart

вот код

 import 'package:multi_image_picker/multi_image_picker.dart';
import 'package:dio/dio.dart';
  Future getImage() async {
    files.clear();

    List<Asset> resultList = List<Asset>();
    resultList = await MultiImagePicker.pickImages(
      maxImages: 2,
      enableCamera: false,
    );

    for (var asset in resultList) {
      int MAX_WIDTH = 500; //keep ratio
      int height = ((500 * asset.originalHeight) / asset.originalWidth).round();

      ByteData byteData =
          await asset.requestThumbnail(MAX_WIDTH, height, quality: 80);

      if (byteData != null) {
        List<int> imageData = byteData.buffer.asUint8List();
        UploadFileInfo u = UploadFileInfo.fromBytes(imageData, asset.name);
        files.add(u);
      }
    }

    setState(() {
      _isUploading = true;
    });
  }

  List<UploadFileInfo> files = new List<UploadFileInfo>();
  Future<List<String>> uploadImage() async {
    FormData formData = new FormData.from({"files": files});

    Dio dio = new Dio();
    var response =
        await dio.post("http://localhost:3004/upload", data: formData);

    UploadImage image = UploadImage.fromJson(response.data);
    return image.images;
  }
  

ошибки в следующих строках

  1. UploadFileInfo u = UploadFileInfo.fromBytes(imageData,asset.name);
  2. List<UploadFileInfo> files = new List<UploadFileInfo>();
  3. FormData formData = new FormData.from({"files": files});

итак, что мне нужно изменить, чтобы заставить его работать, и что это за составная часть??

Любая помощь будет оценена, заранее спасибо

Ответ №1:

 if (images.isEmpty || images[0] != null) {
                    for (int i = 0; i < images.length; i  ) {
                      ByteData byteData = await images[i].getByteData();
                      List<int> imageData = byteData.buffer.asUint8List();
                      http.MultipartFile multipartFile =
                          http.MultipartFile.fromBytes('image', imageData,
                              filename: images[i].name,
                              contentType: MediaType('image', 'jpg'));
                      imagestoEdit.add(multipartFile);
                      print(imagestoEdit.length);
                    }
                  }
Dio.post(url,formdata:{images:imagestoEdit})