Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
786 of 1024 menu
◀ ▶

Класс 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
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить