tio 1.0.0+1 copy "tio: ^1.0.0+1" to clipboard
tio: ^1.0.0+1 copied to clipboard

A simple wrapper for dio with response typing and full backward compatibility. Inspired by chopper.

example/main.dart

// ignore_for_file: avoid_print
import 'package:dio/dio.dart';
import 'package:tio/tio.dart';

class User {
  User.fromJson(Map<String, dynamic> json) : id = json['id'] as int;

  final int id;
}

class MyError {
  const MyError.fromString(this.errorMessage);

  const MyError.empty() : errorMessage = 'Unknown message';

  MyError.fromJson(Map<String, dynamic> json)
      : errorMessage = json['message'] as String;

  final String errorMessage;
}

const factoryConfig = TioFactoryConfig<MyError>(
  [
    TioJsonFactory<User>(User.fromJson),
  ],
  // Factory for error transformation
  errorGroup: TioFactoryGroup(
    // when response body is empty (or empty string)
    empty: TioEmptyFactory(MyError.empty),
    string: TioStringFactory(MyError.fromString), // string
    json: TioJsonFactory(MyError.fromJson), // or json
  ),
);

final dio = Dio();
final tio = Tio<MyError>(
  dio: dio, // Tio uses dio under the hood
  factoryConfig: factoryConfig,
);

Future<TioResponse<User, MyError>> getUser(int id) =>
    tio.get<User>('/users/$id').one();

Future<TioResponse<List<User>, MyError>> getUsers() =>
    tio.get<User>('/users').many();

Future<TioResponse<User, MyError>> updateUser(int id, String name) =>
    tio.post<User>('/users/$id', data: {'name': name}).one();

Future<TioResponse<String, MyError>> geString() =>
    tio.get<String>('/text').string();

void main() async {
  switch (await getUser(1)) {
    case TioSuccess<User, MyError>(result: final user):
      print('user id is ${user.id}');
    case TioFailure<User, MyError>(error: final error):
      print('error acquired ${error.errorMessage}');
  }
}
0
likes
0
pub points
16%
popularity

Publisher

unverified uploader

A simple wrapper for dio with response typing and full backward compatibility. Inspired by chopper.

Repository (GitHub)
View/report issues

Topics

#dio #api #client #rest

License

unknown (license)

Dependencies

dio, logging

More

Packages that depend on tio