| 1 | import 'package:flutter/material.dart'; |
| 2 | import 'package:cake_wallet/src/widgets/picker.dart'; |
| 3 | import 'package:flutter/cupertino.dart'; |
| 4 | import 'package:cake_wallet/generated/i18n.dart'; |
| 5 | |
| 6 | import 'package:cake_wallet/entities/seed_type.dart'; |
| 7 | |
| 8 | class SeedLanguagePickerOption { |
| 9 | SeedLanguagePickerOption(this.name, this.nameLocalized, this.image, this.supportedSeedTypes); |
| 10 | |
| 11 | final String name; |
| 12 | final String nameLocalized; |
| 13 | final Image image; |
| 14 | final List<MoneroSeedType> supportedSeedTypes; |
| 15 | } |
| 16 | |
| 17 | final List<SeedLanguagePickerOption> seedLanguages = [ |
| 18 | SeedLanguagePickerOption( |
| 19 | 'English', |
| 20 | S.current.seed_language_english, |
| 21 | Image.asset('assets/images/flags/usa.png'), |
| 22 | [MoneroSeedType.legacy, MoneroSeedType.polyseed, MoneroSeedType.bip39], |
| 23 | ), |
| 24 | SeedLanguagePickerOption('Chinese (Simplified)', S.current.seed_language_chinese, |
| 25 | Image.asset('assets/images/flags/chn.png'), [MoneroSeedType.legacy, MoneroSeedType.polyseed]), |
| 26 | SeedLanguagePickerOption('Chinese (Traditional)', S.current.seed_language_chinese_traditional, |
| 27 | Image.asset('assets/images/flags/chn.png'), [MoneroSeedType.polyseed]), |
| 28 | SeedLanguagePickerOption('Dutch', S.current.seed_language_dutch, |
| 29 | Image.asset('assets/images/flags/nld.png'), [MoneroSeedType.legacy]), |
| 30 | SeedLanguagePickerOption('German', S.current.seed_language_german, |
| 31 | Image.asset('assets/images/flags/deu.png'), [MoneroSeedType.legacy]), |
| 32 | SeedLanguagePickerOption('Japanese', S.current.seed_language_japanese, |
| 33 | Image.asset('assets/images/flags/jpn.png'), [MoneroSeedType.legacy, MoneroSeedType.polyseed]), |
| 34 | SeedLanguagePickerOption('Korean', S.current.seed_language_korean, |
| 35 | Image.asset('assets/images/flags/kor.png'), [MoneroSeedType.polyseed]), |
| 36 | SeedLanguagePickerOption('Portuguese', S.current.seed_language_portuguese, |
| 37 | Image.asset('assets/images/flags/prt.png'), [MoneroSeedType.legacy, MoneroSeedType.polyseed]), |
| 38 | SeedLanguagePickerOption('Russian', S.current.seed_language_russian, |
| 39 | Image.asset('assets/images/flags/rus.png'), [MoneroSeedType.legacy]), |
| 40 | SeedLanguagePickerOption('Czech', S.current.seed_language_czech, |
| 41 | Image.asset('assets/images/flags/czk.png'), [MoneroSeedType.polyseed]), |
| 42 | SeedLanguagePickerOption('Spanish', S.current.seed_language_spanish, |
| 43 | Image.asset('assets/images/flags/esp.png'), [MoneroSeedType.legacy, MoneroSeedType.polyseed]), |
| 44 | SeedLanguagePickerOption('French', S.current.seed_language_french, |
| 45 | Image.asset('assets/images/flags/fra.png'), [MoneroSeedType.legacy, MoneroSeedType.polyseed]), |
| 46 | SeedLanguagePickerOption('Italian', S.current.seed_language_italian, |
| 47 | Image.asset('assets/images/flags/ita.png'), [MoneroSeedType.legacy, MoneroSeedType.polyseed]), |
| 48 | ]; |
| 49 | |
| 50 | const defaultSeedLanguage = 'English'; |
| 51 | |
| 52 | enum Places { topLeft, topRight, bottomLeft, bottomRight, inside } |
| 53 | |
| 54 | class SeedLanguagePicker extends StatefulWidget { |
| 55 | SeedLanguagePicker({ |
| 56 | Key? key, |
| 57 | this.selected = defaultSeedLanguage, |
| 58 | this.seedType = MoneroSeedType.defaultSeedType, |
| 59 | required this.onItemSelected, |
| 60 | }) : super(key: key); |
| 61 | |
| 62 | final MoneroSeedType seedType; |
| 63 | final String selected; |
| 64 | final Function(String) onItemSelected; |
| 65 | |
| 66 | @override |
| 67 | SeedLanguagePickerState createState() => SeedLanguagePickerState( |
| 68 | selected: selected, onItemSelected: onItemSelected, seedType: seedType); |
| 69 | } |
| 70 | |
| 71 | class SeedLanguagePickerState extends State<SeedLanguagePicker> { |
| 72 | SeedLanguagePickerState( |
| 73 | {required this.selected, required this.onItemSelected, required this.seedType}); |
| 74 | |
| 75 | final MoneroSeedType seedType; |
| 76 | final String selected; |
| 77 | final Function(String) onItemSelected; |
| 78 | |
| 79 | @override |
| 80 | Widget build(BuildContext context) { |
| 81 | final availableSeedLanguages = seedLanguages |
| 82 | .where((SeedLanguagePickerOption e) => e.supportedSeedTypes.contains(seedType)); |
| 83 | |
| 84 | return Picker( |
| 85 | selectedAtIndex: availableSeedLanguages.map((e) => e.name).toList().indexOf(selected), |
| 86 | items: availableSeedLanguages.map((e) => e.name).toList(), |
| 87 | images: availableSeedLanguages.map((e) => e.image).toList(), |
| 88 | isGridView: true, |
| 89 | title: S.of(context).seed_choose, |
| 90 | hintText: S.of(context).seed_choose, |
| 91 | matchingCriteria: (String language, String searchText) { |
| 92 | return language.toLowerCase().contains(searchText); |
| 93 | }, |
| 94 | onItemSelected: onItemSelected, |
| 95 | ); |
| 96 | } |
| 97 | } |