dev
dart 59 lines 1.82 KB
Raw
1 import 'package:flutter/material.dart';
2 import 'package:cake_wallet/src/screens/exchange/widgets/picker_item.dart';
3 import 'package:cw_core/crypto_currency.dart';
4 import 'package:cake_wallet/src/widgets/picker.dart';
5 import 'package:cw_core/currency.dart';
6
7 class CurrencyPicker extends StatefulWidget {
8 CurrencyPicker(
9 {required this.selectedAtIndex,
10 required this.items,
11 required this.onItemSelected,
12 this.title,
13 this.hintText,
14 this.isConvertFrom = false,
15 super.key});
16
17 final int selectedAtIndex;
18 final List<Currency> items;
19 final String? title;
20 final Function(Currency) onItemSelected;
21 final bool isConvertFrom;
22 final String? hintText;
23
24 @override
25 CurrencyPickerState createState() => CurrencyPickerState(items);
26 }
27
28 class CurrencyPickerState extends State<CurrencyPicker> {
29 CurrencyPickerState(this.items)
30 : isSearchBarActive = false,
31 textFieldValue = '',
32 pickerItemsList = <PickerItem<CryptoCurrency>>[];
33
34 List<PickerItem<Currency>> pickerItemsList;
35 List<Currency> items;
36 bool isSearchBarActive;
37 String textFieldValue;
38
39 bool currencySearchBySubstring(Currency currency, String subString) {
40 final query = subString.toLowerCase();
41 return currency.name.toLowerCase().contains(query) ||
42 currency.toString().toLowerCase().contains(query) ||
43 (currency.tag != null ? currency.tag!.toLowerCase().contains(query) : false) ||
44 (currency.fullName != null ? currency.fullName!.toLowerCase().contains(query) : false);
45 }
46
47 @override
48 Widget build(BuildContext context) {
49 return Picker(
50 selectedAtIndex: widget.selectedAtIndex,
51 items: items,
52 isGridView: true,
53 title: widget.title,
54 hintText: widget.hintText,
55 matchingCriteria: currencySearchBySubstring,
56 onItemSelected: widget.onItemSelected,
57 );
58 }
59 }