seedkit_module_api 0.0.1 copy "seedkit_module_api: ^0.0.1" to clipboard
seedkit_module_api: ^0.0.1 copied to clipboard

SeedKit API module with Dio client helpers, token refresh, pagination, cache and error handling.

seedkit_module_api #

Модуль API для SeedKit-приложений. Пакет объединяет настройку Dio, базовый HTTP-клиент, обновление токенов, обработку ошибок, пагинацию, offline-cache и нормализацию JSON-полей.

Возможности #

  • глобальная настройка API через ApiModule;
  • базовый ApiClient с методами get, post, put, patch, delete, upload, download и batch;
  • автоматическая подстановка auth-заголовков и обновление токена при 401;
  • единый формат ошибок через BaseException и ErrorHandler;
  • модель пагинации PaginationModel;
  • проверка подключения через ConnectivityService;
  • DioStorageInterceptor для cache/offline-сценариев;
  • MockInterseptor для локальных mock-ответов;
  • схема JsonFieldAlias для нормализации разных названий JSON-полей.

Установка #

dependencies:
  seedkit_module_api: ^0.0.1

Перед использованием клиента настройте модуль:

ApiModule(
  baseApiUrl: 'https://example.com/api/',
  storaPath: appDocumentsPath,
  deviceId: deviceId,
  platform: 'android',
);

ConnectivityService();

Локализация Ошибок #

Пакет использует seedkit_locale для текстов стандартных ошибок. ARB-файлы пакета лежат в assets/l10n/, поэтому основное приложение должно запускать генерацию локализации через seedkit_locale:

dart run seedkit_locale:generate

После этого зарегистрируйте SeedKitLocale.seedkitDelegate в приложении.

Использование #

Создайте свой клиент от ApiClient:

class AppApiClient extends ApiClient {
  AppApiClient({super.interceptors});

  Future<Either<BaseException, User>> getUser(String id) {
    return get(
      '/users/$id',
      mapper: (json) => User.fromJson(json),
    );
  }
}

Пагинация:

final pagination = PaginationModel();

final result = await api.batch(
  '/users',
  pagination: pagination,
  mapper: (json) => UsersPage.fromJson(json),
);

Нормализация JSON-полей:

final result = await api.get(
  '/profile',
  jsonSchemas: const [
    JsonFieldAlias(aliases: ['name', 'full_name', 'displayName']),
  ],
  mapper: (json) => Profile.fromJson(json),
);

Mock-ответы:

final api = AppApiClient(
  interceptors: [
    MockInterseptor(
      dataSetter: (_) => {'id': '1', 'name': 'Test'},
    ),
  ],
);
0
likes
0
points
546
downloads

Publisher

unverified uploader

Weekly Downloads

SeedKit API module with Dio client helpers, token refresh, pagination, cache and error handling.

License

unknown (license)

Dependencies

connectivity_plus, dartz, dio, dio_cache_interceptor, flutter, http_cache_file_store, seedkit_locale, seedkit_module_storage, seedkit_service_logger, signalr_netcore

More

Packages that depend on seedkit_module_api