Класс ObjectKey
Класс ObjectKey хранит ссылку на объект.
Ключи равны, если это один и тот же экземпляр,
а не только равные по equals значения.
Подходит, когда идентичность важнее содержимого.
Синтаксис
ObjectKey(object)
Пример
Давайте привяжем виджет к одному объекту модели:
import 'package:flutter/material.dart';
class Item {
Item(this.label);
final String label;
}
void main()
{
var first = Item('abcde');
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: Text(
first.label,
key: ObjectKey(first),
),
),
),
),
);
}
На экране по центру появится строка 'abcde'
с ключом ObjectKey(first).
Пример
Давайте различим два объекта с одинаковым текстом:
import 'package:flutter/material.dart';
class Tag {
Tag(this.name);
final String name;
}
void main()
{
var a = Tag('12345');
var b = Tag('12345');
runApp(
MaterialApp(
home: Scaffold(
body: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Chip(
key: ObjectKey(a),
label: Text(a.name),
),
Chip(
key: ObjectKey(b),
label: Text(b.name),
),
],
),
),
),
);
}
На экране два Chip с текстом '12345'
останутся разными элементами из за разных ObjectKey.