flowr 0.15.0 copy "flowr: ^0.15.0" to clipboard
flowr: ^0.15.0 copied to clipboard

FlowR: state management package for the MVVM pattern based on reactive programming.

FlowR #

State management for the MVVM pattern based on Reactive programming.

install #

dart pub add flowr

Features #

  • Reactive State Management: power by rxdart

    • Independent of BuildContext
    • debounce / throttle
    • ...
  • MVVM pattern

    • Support StreamBuilder
    • FrStreamBuilder / FrView
  • One-way data flow

Getting started #

Usage #

/// 1. define ViewModel
class Counter extends FlowR<int> {
  @override
  final int initValue;

  Counter({required this.initValue});

  incrementCounter() => update((old) {
    logger('incrementCounter: $old');
    return old + 1;
  });
}

/// ------------------------------------------
/// 2.a get ViewModel instance
final counter = Counter(initValue: 0);

/// 2.b Or use Provider
FrProvider(
  (c) => UserViewModel(initValue: UserModel('foo', 1)),
  child: // ...
)
final counter = context.read<UserViewModel>();

/// 2.c Or use DI
GetIt.I.registerSingleton<Counter>(Counter(initValue: 0));
final counter = context.readGlobal<UserViewModel>();

/// ------------------------------------------
/// 3.a use ViewModel by StreamBuilder
StreamBuilder(
  stream: counter.stream,
  builder: (context, snapshot) {
    return Text(
    '${snapshot.data}',
    style: Theme.of(context).textTheme.headlineMedium,
    );
  },
)

/// 3.b / 3.c use ViewModel by FrStreamBuilder / FrView
FrStreamBuilder(
  vm: context.read<UserViewModel>(),
  stream: (vm) => vm.stream,
  builder: (context, snapshot) {
    return Column(
      children: [
        Text('${snapshot.data}'),
        Text('Get vm by `snapshot.vm` [${snapshot.vm.runtimeType}]instance'),
      ],
    );
  },
),

Run example: #

Demo1 FlowR main.dart

flutter run example/main.dart

Demo2 FlowR-MVVM main_mvvm.dart

flutter run example/lib/main_mvvm.dart

Demo3 FlowR-MVVM with Provider main_mvvm_with_provider.dart

flutter run example/lib/main_mvvm_with_provider.dart

Demo4 FlowR-MVVM with DI main_mvvm_with_di.dart

flutter run example/lib/main_mvvm_with_di.dart
1
likes
0
points
1.47k
downloads

Publisher

verified publisherwyattcoder.top

Weekly Downloads

FlowR: state management package for the MVVM pattern based on reactive programming.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, get_it, injectable, provider, rxdart, stack_trace

More

Packages that depend on flowr