| 1 | import 'package:cake_wallet/core/node_address_validator.dart'; |
| 2 | import 'package:cake_wallet/entities/new_ui_entities/list_item/list_item_text_field.dart'; |
| 3 | import 'package:cake_wallet/new-ui/widgets/modal_page_wrapper.dart'; |
| 4 | import 'package:cake_wallet/new-ui/widgets/receive_page/receive_top_bar.dart'; |
| 5 | import 'package:cake_wallet/src/widgets/new_list_row/new_list_section.dart'; |
| 6 | import 'package:cake_wallet/src/widgets/primary_button.dart'; |
| 7 | import 'package:cake_wallet/generated/i18n.dart'; |
| 8 | import 'package:cake_wallet/view_model/settings/mweb_settings_view_model.dart'; |
| 9 | import 'package:flutter/material.dart'; |
| 10 | |
| 11 | class MwebNodePage extends StatefulWidget { |
| 12 | const MwebNodePage(this.mwebSettingsViewModelBase, {super.key}); |
| 13 | |
| 14 | final MwebSettingsViewModelBase mwebSettingsViewModelBase; |
| 15 | |
| 16 | @override |
| 17 | State<MwebNodePage> createState() => _MwebNodePageState(); |
| 18 | } |
| 19 | |
| 20 | class _MwebNodePageState extends State<MwebNodePage> { |
| 21 | late final TextEditingController _nodeUriController = |
| 22 | TextEditingController(text: widget.mwebSettingsViewModelBase.mwebNodeUri); |
| 23 | |
| 24 | @override |
| 25 | void dispose() { |
| 26 | _nodeUriController.dispose(); |
| 27 | super.dispose(); |
| 28 | } |
| 29 | |
| 30 | @override |
| 31 | Widget build(BuildContext context) { |
| 32 | return SafeArea( |
| 33 | child: ModalPageWrapper( |
| 34 | topBar: ModalTopBar( |
| 35 | title: S.current.litecoin_mweb_settings, |
| 36 | onLeadingPressed: Navigator.of(context).pop, |
| 37 | leadingSemanticLabel: S.current.seed_alert_back, |
| 38 | leadingIcon: Icon(Icons.arrow_back_ios_new)), |
| 39 | content: Container( |
| 40 | child: NewListSections(controllers: { |
| 41 | widget.mwebSettingsViewModelBase.mwebNodeUri: _nodeUriController, |
| 42 | }, sections: { |
| 43 | 'main': [ |
| 44 | ListItemTextField( |
| 45 | keyValue: widget.mwebSettingsViewModelBase.mwebNodeUri, |
| 46 | label: S.current.node_address, |
| 47 | validator: NodePathValidator(), |
| 48 | ), |
| 49 | ] |
| 50 | }), |
| 51 | ), |
| 52 | bottomContent: LoadingPrimaryButton( |
| 53 | onPressed: () => save(context), |
| 54 | text: S.of(context).save, |
| 55 | color: Theme.of(context).colorScheme.primary, |
| 56 | textColor: Theme.of(context).colorScheme.onPrimary, |
| 57 | ), |
| 58 | ), |
| 59 | ); |
| 60 | } |
| 61 | |
| 62 | void save(BuildContext context) { |
| 63 | widget.mwebSettingsViewModelBase.setMwebNodeUri(_nodeUriController.text); |
| 64 | Navigator.pop(context); |
| 65 | } |
| 66 | } |