Загрузка изображений на сервер с помощью Dio во Flutter: подробное руководство

Загрузка изображений — обычное требование при разработке мобильных приложений, и Flutter предоставляет несколько способов выполнить эту задачу. Один из популярных подходов — использование пакета Dio, который является мощным HTTP-клиентом для Dart. В этой статье мы рассмотрим различные способы загрузки изображений на сервер с помощью Dio во Flutter, а также примеры кода.

Метод 1: отправка файла с помощью Dio

import 'package:dio/dio.dart';
void uploadImage(File imageFile) async {
  Dio dio = Dio();
  String url = 'https://example.com/upload';
  FormData formData = FormData.fromMap({
    'file': await MultipartFile.fromFile(imageFile.path),
  });

  try {
    Response response = await dio.post(url, data: formData);
    print(response.data);
  } catch (e) {
    print(e);
  }
}

Метод 2: отправка потока байтов с помощью Dio

import 'package:dio/dio.dart';
void uploadImage(Uint8List imageBytes) async {
  Dio dio = Dio();
  String url = 'https://example.com/upload';
  FormData formData = FormData.fromMap({
    'file': MultipartFile.fromBytes(imageBytes, filename: 'image.jpg'),
  });

  try {
    Response response = await dio.post(url, data: formData);
    print(response.data);
  } catch (e) {
    print(e);
  }
}

Метод 3: отправка строки Base64 с помощью Dio

import 'package:dio/dio.dart';
void uploadImage(String base64Image) async {
  Dio dio = Dio();
  String url = 'https://example.com/upload';
  FormData formData = FormData.fromMap({
    'file': MultipartFile.fromBytes(
      base64Decode(base64Image),
      filename: 'image.jpg',
    ),
  });

  try {
    Response response = await dio.post(url, data: formData);
    print(response.data);
  } catch (e) {
    print(e);
  }
}

Метод 4. Добавление дополнительных параметров

import 'package:dio/dio.dart';
void uploadImage(File imageFile, String title, String description) async {
  Dio dio = Dio();
  String url = 'https://example.com/upload';
  FormData formData = FormData.fromMap({
    'file': await MultipartFile.fromFile(imageFile.path),
    'title': title,
    'description': description,
  });

  try {
    Response response = await dio.post(url, data: formData);
    print(response.data);
  } catch (e) {
    print(e);
  }
}

В этой статье мы рассмотрели различные способы загрузки изображений на сервер с помощью пакета Dio во Flutter. Мы обсудили отправку файлов, потоков байтов и строк Base64 на сервер, а также дополнительные параметры, если это необходимо. Используя мощные функции Dio, разработчики могут легко реализовать функцию загрузки изображений в своих приложениях Flutter.

Не забывайте соответствующим образом обрабатывать исключения и сценарии ошибок в рабочем коде. Не стесняйтесь экспериментировать с этими методами и настраивать их в соответствии со своими требованиями.