bloc_subject_provider 0.3.2 copy "bloc_subject_provider: ^0.3.2" to clipboard
bloc_subject_provider: ^0.3.2 copied to clipboard

Reactive event based state management. Implementation of the Bloc pattern as an rxdart subject (BlocSubject) and a riverpod provider for the new subject (BlocSubjectProvider).

Pub Version Dart Package Docs License: Apache 2.0 Build Status

bloc_subject_provider #

Reactive event based state management. Implementation of the Bloc pattern as an rxdart subject (BlocSubject) and a riverpod provider for the new subject (BlocSubjectProvider).

Example #

import 'package:bloc_subject_provider/bloc_subject_provider.dart';

final homeBlocProvider = BlocSubjectProvider<HomeEvent, HomeState>((ref) => BlocSubject.fromValue(
      HomeState(),
      handler: (event, state) => switch (event) {
        HomeEventAddedDocumentInfo() => _handleAddedDocumentInfo(event, state),
        HomeEventModifiedDocumentInfo() => _handleModifiedDocumentInfo(event, state),
        HomeEventRemovedDocumentInfo() => _handleRemovedDocumentInfo(event, state),
        HomeEventChangeCurrentDirectory() => _handleChangeCurrentDirectory(event, state),
        HomeEventSortOptionsChanged() => _handleSortOptionsChanged(event, state),
        HomeEventMoveSelected() => _handleMoveSelectedTo(event, state),
        HomeEventCreateFolder() => _handleCreateFolderAt(event, state),
      },
    )..listenToEvents(DI<DocumentInfoRepository>().userDocumentInfoChangeStream().map((item) {
        final (event, doc) = item;
        return switch (event.type) {
          DocumentChangeType.added => HomeEventAddedDocumentInfo(doc),
          DocumentChangeType.modified => HomeEventModifiedDocumentInfo(doc),
          DocumentChangeType.removed => HomeEventRemovedDocumentInfo(doc),
        };
      })));
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'home_bloc_provider.dart';

class FileSystemAppBar extends ConsumerWidget {

  const FileSystemAppBar({super.key, this.height});

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    final parentDir = ref.watch(homeBlocProvider).currentDirectory.parent;
    return AppBar(
      leading: parentDir == null
          ? null
          : IconButton(
              icon: const Icon(Icons.arrow_back),
              onPressed: () {
                ref
                    .read(homeBlocProvider.subject)
                    .addEvent(HomeEventChangeCurrentDirectory(parentDir.fullPath));
              }),
        ...
    );
  }
}
1
likes
150
pub points
14%
popularity

Publisher

verified publishervoyver.com

Reactive event based state management. Implementation of the Bloc pattern as an rxdart subject (BlocSubject) and a riverpod provider for the new subject (BlocSubjectProvider).

Repository (GitHub)
View/report issues

Topics

#state-management #bloc #rxdart #reactive-programming #streams

Documentation

API reference

License

Apache-2.0 (license)

Dependencies

bloc_subject, flutter, meta, riverpod

More

Packages that depend on bloc_subject_provider