| 1 | import 'package:cake_wallet/view_model/settings/settings_list_item.dart'; |
| 2 | |
| 3 | class ChoicesListItem<ItemType> extends SettingsListItem { |
| 4 | ChoicesListItem( |
| 5 | {required String title, |
| 6 | required this.selectedItem, |
| 7 | required this.items, |
| 8 | String Function(ItemType item)? displayItem, |
| 9 | void Function(ItemType item)? onItemSelected}) |
| 10 | : _onItemSelected = onItemSelected, |
| 11 | _displayItem = displayItem, |
| 12 | super(title); |
| 13 | |
| 14 | final ItemType selectedItem; |
| 15 | final List<ItemType> items; |
| 16 | final String Function(ItemType item)? _displayItem; |
| 17 | final void Function(ItemType item)? _onItemSelected; |
| 18 | |
| 19 | void onItemSelected(dynamic item) { |
| 20 | if (item is ItemType) { |
| 21 | _onItemSelected?.call(item); |
| 22 | } |
| 23 | } |
| 24 | |
| 25 | String displayItem(dynamic item) { |
| 26 | if (item is ItemType && _displayItem != null) { |
| 27 | return _displayItem!.call(item); |
| 28 | } |
| 29 | return item.toString(); |
| 30 | } |
| 31 | } |