o 0.0.2 copy "o: ^0.0.2" to clipboard
o: ^0.0.2 copied to clipboard

o is a simple state management util to manage AppState and LocalState.

o #

Under Progress #

o is a simple state management util to manage AppState and LocalState.

  • Based on Streams
  • Global singleton for AppState
  • Beta

Features #

  • It's so bad and dumb
  • StreamBuilder based helper widgets
  • Previous state
  • Notify state
  • Hooks for easy usage
  • Customizable
Local State
final (count, setCount) = useState(50);
App State
final (down, setDown) = useStore('counter', 500);
Widget
Observer(observable: observable, builder: (context, observable, value, hasData) => ...)
Dep Injector
dependencies(
        [useStore<int>('counter', 25)],
        app: const Scaffold(body: Center(child: Listener())),
      );
Service Injector
dependencies([
      //useStore<int>('counter', 25),
    ],
        app: injector(
            objects: [AuthService(keyname: 'auth')],
            functions: [],
            app: const MaterialApp(
              home: AuthView(),
            )));

Usage #

App State #

this isn't necessary . useStore always register an observable if there isn't any by the key . but better . in any upper widget

class App extends StatelessWidget {
  const App({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: dependencies(
        [useStore<int>('counter', 25)],
        app: const Scaffold(body: Center(child: Listener())),
      ),
    );
  }
}

and access it in any widget

class Listener extends StatelessWidget {
  const Listener({super.key});

  @override
  Widget build(BuildContext context) {
    final (down, setDown) = useStore('counter', 500);

    return Column(
      children: [
        Observer(
          observable: down,
          builder: (context, observable, value, hasData) => Text('App State : ${value.toString()}'),
        ),
        FloatingActionButton(onPressed: () {
          setDown((prev) => prev - 1);
        }),
      ],
    );
  }
}

Local State #

simple

class Listener extends StatelessWidget {
  const Listener({super.key});

  @override
  Widget build(BuildContext context) {
    final (count, setCount) = useState(50);

    return Column(
      children: [
        Observer(
          observable: count,
          builder: (context, observable, value, hasData) => Text('Local State : ${value.toString()}'),
        ),
        FloatingActionButton(onPressed: () {
          setCount((prev) => prev + 1);
        }),
      ],
    );
  }
}
:)

Special thanks to @theniceboy | Gist

License #

MIT

Free Software, Hell Yeah!

2
likes
0
pub points
13%
popularity

Publisher

unverified uploader

o is a simple state management util to manage AppState and LocalState.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

flutter

More

Packages that depend on o