Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev0.0.4

mobx_provider

pacote para vincular facilmente a interface com seus armazenamentos (modelos de visualização), inspirado no padrão de arquitetura de pilha preenchida

Downloads em 30 dias
12
Curtidas
14
Pontos Pub
40

Instalar pacote

flutter pub add mobx_provider

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

MobX Provider é um pacote leve que simplifica a conexão entre a interface do usuário e os armazenamentos de gerenciamento de estado (viewmodels) em aplicativos Flutter. Inspirado no padrão Clean Architecture, ele permite a integração fluida da gestão de estado reativa do MobX com a árvore de widgets do Flutter. O pacote simplifica a injeção de dependência e o acesso ao estado, reduzindo código repetitivo e melhorando a manutenibilidade do código. Ele suporta reatividade eficiente e atualizações automáticas da interface quando o estado subjacente muda.

Casos de uso

  • Interfaces de usuário reativas com armazenamentos MobX
  • Gerenciamento de estado em aplicativos Flutter em grande escala
  • Implementação de arquitetura limpa
  • Injeção de dependência para viewmodels
  • Simplificando o acesso à loja entre widgets

Principais recursos

  • Integração fácil com MobX
  • Reconstrução automática da IU em mudança de estado
  • Boilerplate mínimo
  • Suporta hierarquia aninhada de armazenamento
  • Separação clara de responsabilidades

Indicado para

  • Desenvolvedores usando MobX para gerenciamento de estado
  • Projetos que seguem a arquitetura limpa
  • Equipes procurando soluções simples e escaláveis para estado
  • Aplicativos Flutter com necessidades complexas de estado
  • Aplicativos que exigem atualizações de interface reativas

Considerações

  • Requer que o MobX esteja configurado
  • Limitado ao gerenciamento de estado baseado em MobX
  • Sem tratamento de erro embutido
  • Não adequado para fluxos de trabalho não-MobX
  • Pode ser necessário configuração adicional para casos de uso avançados

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

mobx_provider

Additional package for Mobx, it allows you to bind your (viewmodels) mobx stores with UI more easily the package is inspired by filled stacks pattern [view model provider].

Getting Started

NOTE : if you are not familiar with Mobx, take a look on it to see how you can use this package.

what's new in version 0.0.3

  • The packages now depends on the latest versions of [mobx],[flutter_mobx],[provider] see the change log for thier versions
  • Fix MobxStatefulProvider exception on dispose , Thanks to wbemanuel
  • change [Provider.of(context)] to [Context.read()]

Breaking Changes

  • in older versions (before 0.0.2) MobxStatefulProvider now changed to MobxStatefulObserver and MobxStatelessProvider now changed to MobxStatelessObserver with the same functionalities
  • in the new version (0.0.2) the MobxStatefulProvider widget is integration between Mobx and Provider package it contains Provider.of<T>(context) where T extends MobxBase , this widget exposes only the value of the store wihtout observing it
  • MobxWidgetProvider uses also Provider to get the value of the store and observe it in specific widget (see the example to have a better understanding)

1 - create you own store and make it extends MobxBase class and write your own logic

class CounterStore = _CounterStore with _$CounterStore;
abstract class _CounterStore extends MobxBase with Store {

  
  _CounterStore():_counter=0;
  @observable
  int _counter;

  int get counter => _counter;

  @action
  void increment() => _counter++;
  @override
  void dispose() {}
}

NOTE:

  • the class MobxBase contains a dispose function which should be implemented in your store .
  • additionally, it has some helper functions and states which indicates the state of your store whether it's loading ,error ,initial,success.

2- bind your logic with the UI like this

class CounterWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MobxStatefulObserver<CounterStore>(
      store: CounterStore(),
      initFunction:(store){
        //do api calls here
        //store.fetchData();
      }
      builder: (context, store) {
        return Scaffold(
          floatingActionButton: FloatingActionButton(
            onPressed: store.increment,
          ),
          appBar: AppBar(
            title: Text('mobx provider example'),
          ),
          body: Center(
            child: Column(
              children: <Widget>[
                Text('counter value is ${store.counter}'),
              ],
            ),
          ),
        );
      },
    );
  }
}
  • MobxStatefulObserver is a stateful widget that takes a generic type which extends MobxBase .
  • it contains initFunction that's called in initState if you wanted to run some code when the widget is rendered for the first time
  • it'll call the dispose function when the widget it removed from the widget tree.

If you want to have more optimization when rendring the widget tree

  • you can use MobxStatefulProvider which exposes only the store from the provider package (donsn't observe any state)
  • use MobxWidgetProvider to observe the state of the store and only this widget will be rendered when the store changes
class CounterWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MobxStatefulProviderr<CounterStore>(
      initFunction: (store){
        //do api calls here
        //store.fetchData();
      }
      builder: (context, store) {
        return Scaffold(
          floatingActionButton: FloatingActionButton(
            onPressed: store.increment,
          ),
          appBar: AppBar(
            title: Text('mobx provider example'),
          ),
          body: Center(
            child: Column(
              children: <Widget>[
               MobxWidgetProvider<CounterStore>(
                  builder:(context,store){
                    //this widget will only be rendered when the value changes
                    return Text('counter value is ${store.counter}');
                  }
               ) 
              ],
            ),
          ),
        );
      },
    );
  }
}

if you have any suggestions or improvments please let me know .

Categorias

Dependências

Lista de dependências 3 itens

Repositório-fonte

Projetos que usam este pacote

Ainda não há dados.