Skip to content

Instantly share code, notes, and snippets.

_messagesBloc = MessagesBloc(
Provider.of<MessagesRepository>(context),
Provider.of<RestClient>(context),
);
class MessagesBloc {
MessagesBloc(
this._repository,
this._restClient,
);
final MessagesRepository _repository;
final RestClient _restClient;
}
@override
Widget build(BuildContext context) => MultiProvider(
providers: [
Provider<RestClient>.value(value: _restClient),
Provider<MessagesRepository>.value(value: _messagesRepository),
Provider<ThreadDataLayer>.value(
value: ApiThreadDataLayer(
_restClient,
() => _imageUrlProvider.baseImageUrl().first,
),
dependencies:
provider: ^3.0.0+1
class AuthenticationManager {
AuthenticationManager(this._restClient);
final RestClient _restClient;
Future<Either<Exception, void>> logOut() =>
_restClient.signOut(SignOutRequest()).toEither();
}
@RestApi()
abstract class RestClient {
factory RestClient(Dio dio) = _RestClient;
@POST('/api/general/v1/users/signOut')
Future<EmptyResponse> signOut(@Body() SignOutRequest request);
}
@JsonSerializable()
class EmptyResponse { … }
dependencies:
dio: ^3.0.7
retrofit: ^1.0.1+1
retrofit_generator: ^1.0.1+1
final Response<Map<String, dynamic>> _result = await _dio.request(…);
final value = MessageDto.fromJson(_result.data);
@JsonSerializable()
class MessageDto {
MessageDto({this.id, this.createdUtc, this.text, this.creator});
final String id;
final String createdUtc;
final String text;
final MessageAuthorDto creator;
static MessageDto fromJson(Map<String, dynamic> json) =>
dependencies:
json_annotation: ^3.0.1
json_serializable: ^3.2.5