Estender o ValueNotifier pode ser útil para criar uma classe personalizada que encapsula a lógica específica do seu aplicativo, ao mesmo tempo em que se beneficia da funcionalidade de notificação de mudanças do ValueNotifier.
Aqui está um exemplo simples de como estender o ValueNotifier para criar uma classe personalizada e como usar um CustomValueNotifier em um cenário de um contador simples dentro do Flutter:
import 'package:flutter/material.dart';
// Classe personalizada CustomValueNotifier
class CustomValueNotifier extends ValueNotifier<int> {
CustomValueNotifier(int value) : super(value);
// Método personalizado para incrementar o contador
void increment() {
value += 1; // Atualiza o valor e notifica os ouvintes
}
}
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
final CustomValueNotifier counter = CustomValueNotifier(0);
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('CustomValueNotifier Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ValueListenableBuilder(
valueListenable: counter,
builder: (context, int value, _) {
return Text(
'Contador: $value',
style: TextStyle(fontSize: 24),
);
},
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
counter.increment(); // Incrementa o contador
},
child: Text('Incrementar'),
),
],
),
),
),
);
}
}Neste exemplo, CustomValueNotifier é usado para criar um contador simples dentro de um aplicativo Flutter. O ValueListenableBuilder é usado para observar as mudanças no valor do CustomValueNotifier, atualizando automaticamente o texto exibido na tela sempre que o contador é incrementado pelo botão "Incrementar".
Isso ilustra como você pode estender o ValueNotifier para criar uma classe personalizada que encapsula um estado específico do aplicativo e como ela pode ser usada para atualizar a interface do usuário de forma reativa quando o estado é modificado.