seedkit_bloc 0.0.5
seedkit_bloc: ^0.0.5 copied to clipboard
Содержит базовые обработчики состояний для экосистемы SeedKit
seedkit_bloc #
seedkit_bloc содержит базовые Bloc, события, состояния и Flutter-виджеты
для обработки состояния экранов в приложениях экосистемы SeedKit.
Пакет строится поверх flutter_bloc и дополнительно реэкспортирует его, поэтому
в большинстве случаев достаточно одного импорта:
import 'package:seedkit_bloc/seedkit_bloc.dart';
Возможности #
BaseBloc<T>: базовый bloc с жизненным цикломinit,load,loadMoreиupdate.SearchBloc<T>: расширениеBaseBlocс хранением текущего текста поиска.BaseEvent: базовые события для инициализации, загрузки, дозагрузки и обновления данных.BaseState<T>: базовые состояния экрана: initial, loading, loading more, error, success и updated.ViewHandler,UpdatedHandler,ButtonHandler,ListenerHandler: готовые Flutter-виджеты для реакции UI на состояния bloc.
Базовый bloc #
Наследуйтесь от BaseBloc<T>, где T - тип данных, который будет храниться в
поле data и передаваться в UpdatedState<T>.
BaseBloc автоматически отправляет InitialEvent при создании, поэтому
onInit нужно реализовать обязательно. Методы onLoad, onLoadMore и
onUpdate можно переопределять по необходимости.
События #
InitialEvent: отправляется автоматически при созданииBaseBloc.LoadEvent: используется для загрузки или обновления данных. ПолеisRefreshпомогает отличать pull-to-refresh от обычной загрузки.LoadMoreEvent: используется для дозагрузки следующей страницы списка.UpdateEvent: вызывает стандартное обновление состояния черезUpdatedState(data).
Состояния #
InitialState<T>: начальное состояние.LoadingState<T>: основная загрузка данных.LoadingMoreState<T>: дозагрузка дополнительных данных.ErrorState<T>: ошибка сtitle,subtitleи необязательнымonRepeat.SuccessState<T>: успешное действие без передачи данных.UpdatedState<T>: состояние с актуальными данными.
Использование в UI #
Создайте bloc через BlocProvider и обработайте нужные состояния готовыми
handler-виджетами.
ViewHandler<B, T>: собирает UI дляLoadingState,ErrorStateиUpdatedState<T>.UpdatedHandler<B, T>: реагирует только наUpdatedState<T>.ButtonHandler<B, T>: удобен для кнопок или нижних элементов списка, где нужно переключаться междуUpdatedState<T>иLoadingMoreState.ListenerHandler<B>: оборачиваетBlocListenerи позволяет выполнять побочные действия при изменении состояния.