Класс ValueNotifier
Класс ValueNotifier extends
ChangeNotifier
и реализует ValueListenable.
При присвоении value вызывают
notifyListeners.
С UI связывают через
ValueListenableBuilder.
Синтаксис
final counter = ValueNotifier<int>(0);
counter.value = 1;
Параметры
| Параметр | Описание |
|---|---|
value |
Текущее значение. Смена вызывает слушателей. |
Пример
Давайте покажем value через ValueListenableBuilder:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: NotifierDemo(),
),
),
),
);
}
class NotifierDemo extends StatefulWidget
{
const NotifierDemo({super.key});
@override
State<NotifierDemo> createState() => _NotifierDemoState();
}
class _NotifierDemoState extends State<NotifierDemo>
{
final label = ValueNotifier<String>('abcde');
@override
void dispose()
{
label.dispose();
super.dispose();
}
@override
Widget build(BuildContext context)
{
return Column(
mainAxisSize: MainAxisSize.min,
children: [
ValueListenableBuilder<String>(
valueListenable: label,
builder: (context, value, child) => Text(value),
),
ElevatedButton(
onPressed: () => label.value = '12345',
child: const Text('swap'),
),
],
);
}
}
На экране ValueNotifier начнёт с 'abcde' и сменится по кнопке swap.
Пример
Давайте выведем value в консоль:
import 'package:flutter/foundation.dart';
void main()
{
final note = ValueNotifier<String>('abcde');
note.addListener(() => print(note.value));
note.value = '12345';
note.dispose();
}
Результат выполнения кода
12345
Смотрите также
-
класс
ChangeNotifier,
базовый класс дляValueNotifier -
виджет
ValueListenableBuilder,
который перестраивает UI по value -
метод
addListener,
который подписывает на смену value -
метод
setState,
альтернатива для локальногоState