diff --git a/lib/new-ui/pages/coin_control_page.dart b/lib/new-ui/pages/coin_control_page.dart index 54c7eefd5..2cf3f7e11 100644 --- a/lib/new-ui/pages/coin_control_page.dart +++ b/lib/new-ui/pages/coin_control_page.dart @@ -4,7 +4,6 @@ import 'package:cake_wallet/new-ui/widgets/modal_header.dart'; import 'package:cake_wallet/new-ui/widgets/receive_page/receive_top_bar.dart'; import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/view_model/unspent_coins/unspent_coins_list_view_model.dart'; -import 'package:cw_core/utils/print_verbose.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; @@ -32,6 +31,10 @@ class _NewCoinControlPageState extends State { Widget build(BuildContext context) { return PopScope( canPop: !widget.unspentCoinsListViewModel.isSavingItems, + onPopInvokedWithResult: (didPop, result) async{ + await widget.unspentCoinsListViewModel.dispose(); + if(!didPop && mounted) Navigator.of(context).pop(); + }, child: Material( borderRadius: BorderRadius.vertical(top: Radius.circular(16)), color: Colors.transparent, @@ -42,10 +45,25 @@ class _NewCoinControlPageState extends State { child: Column( children: [ ModalTopBar( - title: "", - onLeadingPressed: Navigator.of(context).pop, - leadingIcon: Icon(Icons.arrow_back_ios_new), - onTrailingPressed: () {}), + title: "", + trailingWidget: GestureDetector( + onTap: Navigator.of(context).pop, + child: Container( + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.surfaceContainer, + borderRadius: BorderRadius.circular(99999)), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 8.0), + child: Text( + S.of(context).done, + style: TextStyle( + color: Theme.of(context).colorScheme.primary, + fontWeight: FontWeight.w600), + ), + ), + ), + ), + ), FutureBuilder( future: _initialization, builder: (context, asyncSnapshot) { diff --git a/lib/new-ui/pages/send_page.dart b/lib/new-ui/pages/send_page.dart index 246010854..1a77db067 100644 --- a/lib/new-ui/pages/send_page.dart +++ b/lib/new-ui/pages/send_page.dart @@ -11,6 +11,7 @@ import 'package:cake_wallet/exchange/trade.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/monero/monero.dart'; import 'package:cake_wallet/new-ui/modal_navigator.dart'; +import 'package:cake_wallet/new-ui/pages/coin_control_page.dart'; import 'package:cake_wallet/new-ui/widgets/animated_dropdown.dart'; import 'package:cake_wallet/new-ui/widgets/keyboard_hide_overlay.dart'; import 'package:cake_wallet/new-ui/widgets/picker.dart'; @@ -513,8 +514,11 @@ class _NewSendPageState extends State { ListItemRegularRowWidget( keyValue: "", label: "Coin Control", - onTap: () => Navigator.of(context) - .pushNamed(Routes.unspentCoinsList), + onTap: () { + showCupertinoModalBottomSheet(enableDrag: false, useRootNavigator: true, isDismissible: false, context: context, builder: (context){ + return NewCoinControlPage(unspentCoinsListViewModel: widget.sendViewModel.unspentCoinsListViewModel,); + }); + } ), ]), ) diff --git a/lib/new-ui/widgets/swap_page/swap_options_page.dart b/lib/new-ui/widgets/swap_page/swap_options_page.dart index 71e74f72c..917537db0 100644 --- a/lib/new-ui/widgets/swap_page/swap_options_page.dart +++ b/lib/new-ui/widgets/swap_page/swap_options_page.dart @@ -2,15 +2,16 @@ import 'package:cake_wallet/entities/new_ui_entities/list_item/list_item_regular import 'package:cake_wallet/entities/new_ui_entities/list_item/list_item_selector.dart'; import 'package:cake_wallet/entities/new_ui_entities/list_item/list_item_toggle.dart'; import 'package:cake_wallet/generated/i18n.dart'; +import 'package:cake_wallet/new-ui/pages/coin_control_page.dart'; import 'package:cake_wallet/new-ui/widgets/receive_page/receive_top_bar.dart'; import 'package:cake_wallet/new-ui/widgets/swap_page/provider_options_page.dart'; import 'package:cake_wallet/new-ui/widgets/swap_page/refund_address_modal.dart'; -import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/src/widgets/new_list_row/new_list_section.dart'; import 'package:cake_wallet/view_model/exchange/exchange_view_model.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; +import 'package:modal_bottom_sheet/modal_bottom_sheet.dart'; class SwapOptionsPage extends StatelessWidget { const SwapOptionsPage({super.key, required this.exchangeViewModel}); @@ -100,7 +101,9 @@ class SwapOptionsPage extends StatelessWidget { keyValue: "coin control", label: "Coin Control", onTap: () { - Navigator.of(context).pushNamed(Routes.unspentCoinsList); + showCupertinoModalBottomSheet(enableDrag: false, useRootNavigator: true, isDismissible: false, context: context, builder: (context){ + return NewCoinControlPage(unspentCoinsListViewModel: exchangeViewModel.unspentCoinsListViewModel,); + }); }), ListItemSelector( keyValue: "curr", diff --git a/lib/view_model/unspent_coins/unspent_coins_list_view_model.dart b/lib/view_model/unspent_coins/unspent_coins_list_view_model.dart index 1b3136354..998ed4b07 100644 --- a/lib/view_model/unspent_coins/unspent_coins_list_view_model.dart +++ b/lib/view_model/unspent_coins/unspent_coins_list_view_model.dart @@ -116,6 +116,7 @@ abstract class UnspentCoinsListViewModelBase with Store { bool get hasAdjustableFieldChanged => items.any(_hasAdjustableFieldChanged); + @action Future saveUnspentCoinInfo(UnspentCoinsItem item) async { try { item.isBeingSaved = true; @@ -129,8 +130,6 @@ abstract class UnspentCoinsListViewModelBase with Store { existingInfo.note = item.note; await existingInfo.save(); - await _updateUnspents(); - await wallet.updateBalance(); item.isBeingSaved = false; isSavingItems = false; } catch (e) {