Orientação gerada a partir de informações públicas. Apenas para referência.
Reduced fornece uma fachada unificada para os principais recursos de gerenciamento de estado em frameworks populares de gerenciamento de estado do Flutter. Simplifica a integração ao oferecer uma API consistente para gerenciar estado, lidar com dependências e reagir às mudanças, independentemente do framework subjacente. Projetado para desenvolvedores que buscam flexibilidade sem código boilerplate, Reduced abstrai a complexidade mantendo desempenho e escalabilidade. Ideal para projetos que podem alternar entre ou combinar várias soluções de gerenciamento de estado.
Casos de uso
Simplificando a gestão de estado em múltiplos frameworks
Criando lógica de estado portátil
Reduzindo o código repetitivo em widgets com estado
Habilitar manipulação de estado independente de framework
Apoiar abordagens híbridas de gerenciamento de estado
Principais recursos
API unificada para gerenciamento de estado
Design independente de framework
Boilerplate mínimo
Suporte integrado de injeção de dependência
Integração contínua com soluções de estado existentes
Indicado para
Desenvolvedores usando várias bibliotecas de gerenciamento de estado
Projetos que exigem arquitetura de estado flexível
Equipes que buscam reduzir a complexidade
Aplicações que precisam de design de estado futurista
Prototipagem com padrões de estado intercambiáveis
Considerações
Pode adicionar um pequeno custo adicional devido à camada de abstração
Mais adequado para aplicações médias a grandes
Requer compreensão dos conceitos subjacentes de estado
Limitado a backends de gerenciamento de estado compatíveis
Não recomendado para aplicativos simples de uso único
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
reduced
Unified facade for the basic features of state management frameworks:
Read a current state value.
Update a current state value.
Callbacks with value semantics
The app logic based mainly on these features should remain as independent as possible from the state management framework used. Therefore, the app logic needs a neutral state management API and an implementation of this API for the state management framework used.
The former is provided by this package. The latter is provided by other packages listed at the end of the README.
Features
The 'reduced' facade covers the following features of a state management framework:
Instead of writing the state value directly, the facade provides a process method that accepts a called event as a parameter.
In the process method the event is executed with the current state value as a parameter and the return value of the event is stored as the new state value.
typedefSnapshotToPropsMapper<S, P> = P Function(
StoreSnapshot<S> snapshot,
String? routeName,
);
A SnapshotToPropsMapper is a Function that uses the snapshot and the routeName parameters to map the current state of a store into a derived 'selective' state value. Only the changes to this derived 'selective' state value determine whether a rebuild of the widget is triggered. In order for changes to be detected correctly, the derived 'selective' state value must have value semantics.
With a SnapshotToPropsMapper function usually a props parameter for a WidgetFromPropsBuilder function is created.
typedefWidgetFromPropsBuilder<P> = WidgetFunction({
Key? key,
required P props,
});
A WidgetFromPropsBuilder is a Function that builds a new widget from the properties of the passed props parameter. That is, the props parameter must contain all the properties necessary for building the widget.
Many widgets have callback properties of type Function. The Function type has no value semantics (each function is unique), this also applies to anonymous functions, which are often used as values for widget callback properties.
If value semantics are needed, Callable can be used for callback properties in the derived 'selective' state values instead of anonymous functions.
abstractclassCallable<T> {
T call();
}
abstractclassCallable1<T, V> {
T call(V value);
}
abstractclassCallable2<T, V1, V2> {
T call(V1 value1, V2 value2);
}
If the signatures of a widget callback property's function and the call method of a callable match, then the callable is assignment-compatible with the widget callback property, e.g.:
In the pubspec.yaml add dependencies on the package 'reduced' and on the package of an implementation of the 'reduced' facade for a state management framework, e.g. 'reduced_bloc'.
In addition to the basic features, state management frameworks also offer these advanced features:
Register a state for management.
Trigger a rebuild on widgets selectively after a state change.
Set up a new scope for state management.
A neutral facade has also been developed for this features in the form of the registerState function and the ReducedProvider, ReducedConsumer and ReducedScope widget classes. Since the features differ for the concrete frameworks, the signatures of the function and the widget constructors are also different, so these function and classes were not included in the 'reduced' facade, but are part of the additional API of the implementations of the 'reduced' facade.
1. Register a state for management.
voidregisterState(S initialValue);
classReducedProvider<S> extendsStatelesswidget{
ReducedProvider({
requiredthis.initialState,
requiredthis.child,
}) ...
final S initialState,
finalWidget child,
...
}
2. Trigger a rebuild on widgets selectively after a state change.