Как передать аргумент как SerializedMessage
Я новичок во Flutter, и чтобы изучить «лучшие практики», я загрузил новое приложение-пример скелета.
Вы получаете три примера элементов в виде списка, и когда вы щелкаете по одному из них, вы переходите к просмотру деталей. Я хочу передать объект, чтобы для каждого элемента примера было настраиваемое представление сведений. Поэтому я изменил код на следующий:
ListTile(
leading: const FlutterLogo(),
title: Text(myObject.name),
onTap: () {
Navigator.restorablePushNamed(
context, ObjectDetailView.routeName,
arguments: myObject);
},
trailing: const Icon(Icons.arrow_forward_ios_rounded),
Но показывает ошибку:
The arguments object must be serializable via the StandardMessageCodec.
Как я могу это сделать? Это кажется довольно сложным для «примера приложения». Есть ли смысл использовать
restorablePushNamed()
на странице сведений? Или мне следует переключиться на "нормальный" метод push / pop.
1 ответ
Есть смысл использовать
Вам решать, нужно ли это в вашем приложении, в противном случае вы можете просто использовать «обычные» методы push без необходимости сериализации аргументов.
Но для использования State Restoration вам придется конвертировать
Чтобы преобразовать его в карту. вы можете сделать что-то подобное в своем классе:
Map<String, dynamic> toMap() {
return {
"name": this.name,
"property2": this.property2,
...
};
}
Вы можете проверить больше информации об этом в документации: flutter.dev/go/state-restoration-design