service_bloc 3.0.1 copy "service_bloc: ^3.0.1" to clipboard
service_bloc: ^3.0.1 copied to clipboard

Dart package for service layer implement with bloc architecture

example/lib/main.dart

import 'dart:async';
import 'dart:convert';

import 'package:bloc/bloc.dart';
import 'package:example/modal.dart';
import 'package:http/http.dart';
import 'package:service_bloc/service_bloc.dart';

void main() async {
  final organizationDetailServiceBloc = GithubOrganisationDetailServiceBloc();
  organizationDetailServiceBloc
      .add(GithubOrganisationDetailServiceRequested(name: 'flutter'));
  await for (final state in organizationDetailServiceBloc.stream) {
    if (state is! ServiceResponseState) continue;

    if (state is ServiceLoadSuccess<GithubOrganisationDetailServiceRequested,
        GithubOrganizationDetail>) {
      print('response: ${state.data}');
    }

    if (state is ServiceLoadFailure) {
      print('error: ${state.error}');
    }

    break;
  }
}

class GithubOrganisationDetailServiceRequested extends ServiceRequested {
  const GithubOrganisationDetailServiceRequested({required this.name})
      : assert(name.length > 0);

  final String name;

  @override
  List<Object?> get props => [name];
}

class GithubOrganisationDetailServiceBloc extends ServiceBloc<
    GithubOrganisationDetailServiceRequested, GithubOrganizationDetail> {
  @override
  FutureOr<void> onRequest(GithubOrganisationDetailServiceRequested event,
      Emitter<ServiceState> emit) async {
    try {
      final response =
          await get(Uri.parse('https://api.github.com/orgs/${event.name}'));
      final organizationDetail =
          GithubOrganizationDetail.fromJson(json.decode(response.body));
      emit(ServiceLoadSuccess(event: event, data: organizationDetail));
    } catch (error) {
      emit(ServiceLoadFailure(event: event, error: error));
    }
  }
}
0
likes
140
pub points
30%
popularity

Publisher

unverified uploader

Dart package for service layer implement with bloc architecture

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

bloc, bloc_concurrency, equatable, meta

More

Packages that depend on service_bloc