Skip to content

denisnadey/genericBloc

Repository files navigation

Example usage GenericOneBLoc

The generic bloc provides basic functions to your data such as loaded state, loaded (but not fully loaded) state, and fully loaded. You can use it to add such states for any type of data. The package includes GenericBloc for lists and GenericOneBloc for single values.

In Bloc

final GenericOneBloc<bool> activeBanner = GenericOneBloc<bool>();

In UI

    return BlocBuilder<GenericOneBloc<bool>, GenericOneState<bool>>(
      bloc: context.read<SomeBloc>().dayDelivery,
      builder: (context, state) => state.map(
        loadingState: (state) => const Skeleton(),
        loadedState: (state) => SomeWidget(
          isActive: state.data,
        ),
        errorState: (state) => const Text(state.exception),
      ),
    );

Example usage GenericBLoc

In Bloc

final GenericBloc<Product> products = GenericBloc<Product>();

In UI

BlocBuilder<GenericBloc<Product>, GenericState<Product>>(
	bloc: context.read<SomeBloc>().products,
	builder: (context, state) => state.map(
		loadingState: (loadingState) => Skeleton(),
		loadedState: (loadedState) => Column(
		children: [
			...loadedState.data.map((e) => Widget(e)),
			Skeleton(),
		],
		),
		fullLoadedState: (fullLoadedState) => Column(
		children: fullLoadedState.data.map(
			(e) => Widget(e),
		),
		),
		errorState: (errorState) => Text(errorState.exception),
	),
)

How to send events ? (generic/genericOne)

genericBloc

someGenericBloc.add(GenericEvent.showLoading());
someGenericBloc.add(GenericEvent.showLoaded(data: someData));
someGenericBloc.add(GenericEvent.showFullLoaded(data: someData));
someGenericBloc.add(GenericEvent.showError(exception: 'error'));

genericOneBloc

someGenericBloc.add(GenericOneEvent.showLoading());
someGenericBloc.add(GenericOneEvent.showLoaded(data: someData));
someGenericBloc.add(GenericOneEvent.showError(exception: 'error'));

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published