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

Класс Key

Класс Key абстрактный: напрямую его не создают, а берут подклассы вроде ValueKey или GlobalKey. Ключ передают в параметр key у StatefulWidget и StatelessWidget. Flutter сравнивает ключи, чтобы понять, сохранить ли State или заменить виджет.

Синтаксис

ValueKey('id')

Пример

Давайте зададим ValueKey у двух Text в списке:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( body: Column( children: [ Text( 'abcde', key: ValueKey('a'), ), Text( '12345', key: ValueKey('b'), ), ], ), ), ), ); }

На экране две строки 'abcde' и '12345' сохранят свои ключи при перестановке в Column.

Пример

Давайте сменим ключ и увидим новый State:

import 'package:flutter/material.dart'; class Counter extends StatefulWidget { const Counter({super.key}); @override State<Counter> createState() => _CounterState(); } class _CounterState extends State<Counter> { int count = 0; @override Widget build(BuildContext context) { return Text('$count'); } } void main() { runApp( MaterialApp( home: Scaffold( body: Center( child: Counter( key: ValueKey('abcde'), ), ), ), ), ); }

На экране Counter с ключом ValueKey получит своё State; смена ключа сбросит счётчик.

Смотрите также

  • класс ValueKey,
    который сравнивает ключи по значению
  • класс GlobalKey,
    который даёт доступ к State извне
  • класс UniqueKey,
    который каждый раз уникален
  • класс PageStorageKey,
    который запоминает прокрутку страницы
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить