Flutter и работа с API: Dio, http — туториал

Мы просто и по делу рассказываем про ИИ-инструменты для работы: сравнения, пошаговые гайды, бесплатные альтернативы и реальные сценарии применения. Помогаем выбрать между ChatGPT, Gemini, Claude, локальными моделями и десятками узкоспециализированных сервисов — от дизайна и HR до аналитики и SEO. Меньше хайпа, больше практики и экономии времени каждый день.

flutterdiohttp

Работа с API — базовый навык для Flutter-разработчика. Чаще всего для HTTP-запросов используют два подхода: встроенно-простой http и более функциональный Dio. Разберём, что выбрать и как быстро начать.

Когда использовать http

Пакет http подходит, если нужны:

  • простые GET/POST-запросы
  • минимальная зависимость
  • быстрый старт без сложной настройки

Пример GET-запроса через http:

import 'dart:convert';
import 'package:http/http.dart' as http;

Future fetchPosts() async {
  final response = await http.get(
    Uri.parse('https://jsonplaceholder.typicode.com/posts'),
  );

  if (response.statusCode == 200) {
    final data = jsonDecode(response.body);
    print(data);
  } else {
    throw Exception('Ошибка загрузки');
  }
}

Плюсы http

  • лёгкий и понятный API
  • отлично подходит для небольших проектов
  • минимум абстракций

Когда лучше выбрать Dio

Dio нужен, если проект растёт и важны:

  • перехватчики запросов и ответов
  • удобная работа с токенами
  • таймауты, ретраи, логирование
  • загрузка файлов и FormData
  • централизованная конфигурация клиента

Пример GET-запроса через Dio:

import 'package:dio/dio.dart';

final dio = Dio(BaseOptions(
  baseUrl: 'https://jsonplaceholder.typicode.com',
  connectTimeout: const Duration(seconds: 5),
  receiveTimeout: const Duration(seconds: 5),
));

Future fetchPosts() async {
  try {
    final response = await dio.get('/posts');
    print(response.data);
  } catch (e) {
    print('Ошибка: $e');
  }
}

Почему Dio часто выбирают в production 🚀

У Dio удобнее масштабировать сетевой слой. Например, можно добавить interceptor для автоматической подстановки JWT-токена:

dio.interceptors.add(
  InterceptorsWrapper(
    onRequest: (options, handler) {
      options.headers['Authorization'] = 'Bearer token';
      handler.next(options);
    },
  ),
);

Это особенно полезно в мобильных приложениях с авторизацией.

Что важно учесть при работе с API в Flutter

  • создавайте отдельный слой для сети: ApiService
  • описывайте модели данных через fromJson/toJson
  • обрабатывайте ошибки: 400, 401, 500, timeout
  • не храните токены в открытом виде
  • для крупных проектов используйте Dio + clean architecture

Что выбрать: Dio или http? 🤔

  • http — для простых приложений, тестов, pet-проектов
  • Dio — для коммерческой разработки и сложной логики

Если коротко: http проще для старта, Dio сильнее в реальных задачах. Лучший выбор зависит не от “моды”, а от требований проекта. 💡

Подборка каналов про IT — хороший способ оставаться в курсе Flutter, backend, DevOps и мобильной разработки 👀

🗣 Подборки каналов
🧠 Каталог ботов и приложений
🗺 Навигация

Читайте так же