Provider en Flutter para estado global: ejercicio resuelto
Si buscas Provider en Flutter, este ejercicio te enseña una base limpia de estado global con ChangeNotifier.
Enunciado
Crea un contador global que se muestre y actualice desde varios widgets.
Solución en Flutter
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() {
runApp(
ChangeNotifierProvider(
create: (_) => CounterStore(),
child: const MaterialApp(home: ProviderPage()),
),
);
}
class CounterStore extends ChangeNotifier {
int value = 0;
void increment() {
value += 1;
notifyListeners();
}
}
class ProviderPage extends StatelessWidget {
const ProviderPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Provider basico')),
body: Center(
child: Consumer<CounterStore>(
builder: (_, store, __) => Text('${store.value}', style: const TextStyle(fontSize: 42)),
),
),
floatingActionButton: FloatingActionButton(
onPressed: () => context.read<CounterStore>().increment(),
child: const Icon(Icons.add),
),
);
}
}Resultado esperado
El valor se actualiza en todos los widgets suscritos sin pasar props manualmente.
Errores frecuentes
- Llamar
notifyListenersen exceso. - Colocar toda la logica de app en un unico provider.
- No separar estado de UI.
Aplicación práctica
Provider sigue siendo una opción estable para apps pequeñas y medianas con estado compartido.
Siguiente ejercicio recomendado
- FutureBuilder en Flutter: ejercicio resuelto para estados de carga
- Contador en Flutter con setState: ejercicio resuelto paso a paso
- Consumo de API con http en Flutter: ejercicio resuelto
- Todos los ejercicios Flutter
Práctica guiada y siguiente paso
- Más ejercicios de Flutter
- Ejercicios C para reforzar fundamentos
- Programación en C en 100 ejercicios resueltos
- Ver el libro en Amazon (incluido en Kindle Unlimited)
- Suscribirte a la newsletter
FAQ
¿Provider es suficiente para una app real?
Sí, en muchos proyectos pequenos y medianos funciona bien con buena separacion de responsabilidades.
¿Cuándo migrar a Riverpod o Bloc?
Cuándo necesitas más trazabilidad, testabilidad avanzada o arquitectura más estricta.
¿Provider penaliza rendimiento?
No si divides el estado y limitas reconstrucciones con Consumer y selectores.