Gestión del estado de aplicaciones en Flutter
Gestión estado aplicaciones
Resumen del articulo Gestión sencilla del estado de las aplicaciones
Nota: Se utiliza el termino widget porque se ha vuelto una palabra estándar. Una traducción podría ser Componente.
Añadir paquete provider
Para la gestión de estado se utiliza el paquete provider, que tiene que añadirse al proyecto
1. Añadir en pubspec.yaml
dependencies:
flutter:
sdk: flutter
provider: ^2.0.0
2. Añadir en el código fuente:
import 'package:provider/provider.dart'
Utilizar paquete provider
Se gestionan con 4 conceptos para conseguir trabajar con estados y variables globales a toda la aplicación:
- ChangeNotifier
- ChangeNotifierProvider
- Consumer
- Provider.of
ChangeNotifier
Proporciona notificaciones de los cambios de estado a los widgets que se suscriben a ese ChangeNotifier. Al final representa el estado "global" de la aplicación.
La forma de implementarlo es la siguiente:
class Mimodelodenotificador extends ChangeNotifier {
// Acciones que modifican el estado de la aplicación
// Avisar a los widgets que están escuchando que se reconstruyan ya que el estado
// global ha cambiado tras las acciones anteriores.
notifyListeners();
}
ChangeNotifierProvider
ChangeNotifierProvider es muy simple. Solamente proporciona una instancia de un ChangeNotifier a sus descendientes. Por tanto debe colocarse por encima de los widgets que lo necesiten
Si es al principio de toda la app se escribe:
void main() {
runApp(
ChangeNotifierProvider(
create: (context) => Mimodelodenotificador(),
child: MyApp(),
),
);
}
* Ahora se utiliza create en vez de builder
** con ese trozo de código se puede acceder a context en todo MyApp
Consumer
De la clase consumer serán los widgets que se suscriben al notificador. Actualizaran visualmente u de otra forma la app para reflejar el nuevo estado global.
Consumer<Mimodelodenotificador>( //entre símbolos va el tipo de notificador
builder: (context, mimodelodenotificador, child) { //el 2º parámetro es la instancia del notificador
//acciones de actualización
},
Provider.of
Para el caso de querer utilizar Consumer pero no necesitas acceder a datos se usa provider.of con el parámetro listen con valor false.
Provider.of<CartModel>(context, listen: false)
}
Comentarios
Publicar un comentario