dev
dart 134 lines 6.07 KB
Raw
1 import 'package:cake_wallet/entities/new_ui_entities/list_item/list_item_regular_row.dart';
2 import 'package:cake_wallet/entities/new_ui_entities/list_item/list_item_selector.dart';
3 import 'package:cake_wallet/entities/new_ui_entities/list_item/list_item_toggle.dart';
4 import 'package:cake_wallet/generated/i18n.dart';
5 import 'package:cake_wallet/new-ui/pages/coin_control_page.dart';
6 import 'package:cake_wallet/new-ui/widgets/receive_page/receive_top_bar.dart';
7 import 'package:cake_wallet/new-ui/widgets/swap_page/provider_options_page.dart';
8 import 'package:cake_wallet/new-ui/widgets/swap_page/refund_address_modal.dart';
9 import 'package:cake_wallet/src/widgets/new_list_row/new_list_section.dart';
10 import 'package:cake_wallet/view_model/exchange/exchange_view_model.dart';
11 import 'package:flutter/cupertino.dart';
12 import 'package:flutter/material.dart';
13 import 'package:flutter_mobx/flutter_mobx.dart';
14 import 'package:modal_bottom_sheet/modal_bottom_sheet.dart';
15
16 class SwapOptionsPage extends StatelessWidget {
17 const SwapOptionsPage({super.key, required this.exchangeViewModel});
18
19 final ExchangeViewModel exchangeViewModel;
20
21 @override
22 Widget build(BuildContext context) {
23 return Column(
24 children: [
25 ModalTopBar(
26 title: S.of(context).configure,
27 leadingIcon: Icon(Icons.arrow_back_ios_new),
28 leadingSemanticLabel: S.of(context).seed_alert_back,
29 onLeadingPressed: Navigator.of(context).pop,
30 ),
31 Padding(
32 padding: const EdgeInsets.symmetric(horizontal: 16.0),
33 child: Column(
34 spacing: 24,
35 crossAxisAlignment: CrossAxisAlignment.start,
36 children: [
37 SizedBox(),
38 Column(
39 crossAxisAlignment: CrossAxisAlignment.start,
40 children: [
41 Text(
42 S.of(context).current_swap,
43 style: TextStyle(
44 fontWeight: FontWeight.w500,
45 fontSize: 14,
46 color: Theme.of(context).colorScheme.onSurface),
47 ),
48 Text(
49 "${exchangeViewModel.depositCurrency.title}${exchangeViewModel.receiveCurrency.title}",
50 style: TextStyle(
51 fontWeight: FontWeight.w500,
52 fontSize: 12,
53 color: Theme.of(context).colorScheme.primary),
54 )
55 ],
56 ),
57 Observer(
58 builder: (_) => NewListSections(
59 showHeader: true,
60 getCheckboxValue: (key) => exchangeViewModel.isFixedRateMode,
61 updateCheckboxValue: (key, val) {},
62 sections: {
63 "": [
64 ListItemToggle(
65 keyValue: "fixed rate",
66 label: S.of(context).fixed_rate,
67 value: exchangeViewModel.isFixedRateMode,
68 onChanged: (val) {
69 if (val)
70 exchangeViewModel.enableFixedRateMode();
71 else
72 exchangeViewModel.isFixedRateMode = false;
73 }),
74 ListItemRegularRow(
75 keyValue: "refund",
76 label: S.of(context).set_refund_address,
77 onTap: () {
78 showModalBottomSheet(
79 isScrollControlled: true,
80 context: context,
81 builder: (context) {
82 return RefundAddressModal(
83 selectedCurrency: exchangeViewModel.depositCurrency);
84 }).then((val) {
85 if (val != null && val is String) {
86 exchangeViewModel.depositAddress = val;
87 }
88 });
89 })
90 ],
91 S.of(context).general: [
92 ListItemRegularRow(
93 keyValue: "providers",
94 label: S.of(context).swap_providers,
95 onTap: () {
96 Navigator.of(context).push(CupertinoPageRoute(
97 builder: (context) => Material(
98 child: ProviderOptionsPage(
99 exchangeViewModel: exchangeViewModel))));
100 }),
101 ListItemRegularRow(
102 keyValue: "coin control",
103 label: "Coin Control",
104 onTap: () {
105 showCupertinoModalBottomSheet(
106 enableDrag: false,
107 useRootNavigator: true,
108 isDismissible: false,
109 context: context,
110 builder: (context) {
111 return NewCoinControlPage(
112 unspentCoinsListViewModel:
113 exchangeViewModel.unspentCoinsListViewModel,
114 canEdit: true,
115 );
116 });
117 }),
118 ListItemSelector(
119 keyValue: "curr",
120 label: S.of(context).change_fiat_currency,
121 options: [exchangeViewModel.fiat.name],
122 onTap: () {
123 exchangeViewModel.showFiatCurrencyPicker(context);
124 })
125 ]
126 }),
127 )
128 ],
129 ),
130 )
131 ],
132 );
133 }
134 }