statyx 0.2.0 copy "statyx: ^0.2.0" to clipboard
statyx: ^0.2.0 copied to clipboard

State management with MVVM pattern

State management for Flutter.

Motivation #

Most of the time, I don't need all the features in GetX. Based on my experience, I extracted these frequently used functions and made some changes.


Features #

  • All Rx types from GetX(RxInt, RxList..)
  • Obx from GetX
  • ViewModel that observes Widget life circle (onInit, onReady, onClose)

Usage #

  1. Without state (No need to declare a VMState)

    class HomePage extends Vmx<HomeViewModel> {
      const HomePage({this.initialValue = 0});
       
      final int initialValue;
       
      @override
      HomeViewModel createViewModel() => HomeViewModel();
       
      @override
      Widget build(context, vm) {
        return Scaffold(
          appBar: AppBar(title: const Text('Hello StatyX')),
          floatingActionButton: FloatingActionButton(
              onPressed: () => vm.counter.value++, child: const Icon(Icons.add)),
          body: Center(child: Obx(() => Text('${vm.counter.value}'))),
        );
      }
    }
    
  2. With state (access vm everywhere in the VMState)

    class HomePage extends StatefulWidget {
       const HomePage({this.initialValue = 0});
       
       final int initialValue;
       
       @override
       State<HomePage> createState() => _HomePageState();
    }
       
    class _HomePageState extends VMState<HomePage, HomeViewModel> {
       @override
       ViewModel createViewModel() => HomeViewModel();
       
       @override
       Widget build(BuildContext context) {
          return Scaffold(
             appBar: AppBar(title: const Text('Hello StatyX')),
             floatingActionButton: FloatingActionButton(
                     onPressed: () => vm.counter.value++, child: const Icon(Icons.add)),
             body: Center(child: Obx(() => Text('${vm.counter.value}'))),
          );
       }
    }
    
  • ViewModel
     class HomeViewModel extends ViewModel<HomePage> {
       final counter = 0.obs;
       
       @override
       void onInit() {
         super.onInit();
         counter.value = widget.initialValue;
       }
     }
    
2
likes
140
points
62
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

State management with MVVM pattern

Repository (GitHub)
View/report issues

License

BSD-3-Clause (license)

Dependencies

flutter

More

Packages that depend on statyx