dev
dart 66 lines 2.33 KB
Raw
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 }