From 0c469f20900b36e6b31ffa16ac776897592a4e8a Mon Sep 17 00:00:00 2001 From: Robert Malikowski Date: Tue, 30 Jun 2026 22:06:47 +0200 Subject: [PATCH] wip --- lib/buy/buy_provider.dart | 3 +- lib/di.dart | 5 ++ .../pages/buy_sell/buy_sell_amount_page.dart | 50 +++++++++++++++++++ .../buy_sell/buy_sell_selector_modal.dart | 5 +- 4 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 lib/new-ui/pages/buy_sell/buy_sell_amount_page.dart diff --git a/lib/buy/buy_provider.dart b/lib/buy/buy_provider.dart index 7cc92eb9b..5053a7ef8 100644 --- a/lib/buy/buy_provider.dart +++ b/lib/buy/buy_provider.dart @@ -43,8 +43,7 @@ abstract class BuyProvider { required double amount, required bool isBuyAction, required String cryptoCurrencyAddress, - String? countryCode}) => - null; + String? countryCode}); Future requestUrl(String amount, String sourceCurrency) => throw UnimplementedError(); diff --git a/lib/di.dart b/lib/di.dart index 821f51130..a4ae25ca9 100644 --- a/lib/di.dart +++ b/lib/di.dart @@ -56,6 +56,7 @@ import 'package:cake_wallet/new-ui/pages/account_customizer.dart'; import 'package:cake_wallet/new-ui/pages/bridge/bridge_amount_page.dart'; import 'package:cake_wallet/new-ui/pages/bridge/bridge_network_page.dart'; import 'package:cake_wallet/new-ui/pages/bridge/bridge_receiving_wallet_page.dart'; +import 'package:cake_wallet/new-ui/pages/buy_sell/buy_sell_amount_page.dart'; import 'package:cake_wallet/new-ui/pages/coin_control_page.dart'; import 'package:cake_wallet/new-ui/pages/addresses_page.dart'; import 'package:cake_wallet/new-ui/pages/home_page.dart'; @@ -64,6 +65,7 @@ import 'package:cake_wallet/new-ui/pages/lightning_username_page.dart'; import 'package:cake_wallet/new-ui/pages/receive_page.dart'; import 'package:cake_wallet/new-ui/viewmodels/lightning_username/lightning_username_bloc.dart'; import 'package:cake_wallet/new-ui/widgets/addresses_page/address_label_input.dart'; +import 'package:cake_wallet/new-ui/widgets/buy_sell/buy_sell_selector_modal.dart'; import 'package:cake_wallet/new-ui/widgets/coins_page/assets_history/transaction_details_modal.dart'; import 'package:cake_wallet/new-ui/widgets/receive_page/receive_label_modal.dart'; import 'package:cake_wallet/new-ui/pages/swap_page.dart'; @@ -1494,6 +1496,9 @@ Future setup({ getIt.registerFactory(() => BuySellViewModel(getIt.get())); + getIt.registerFactoryParam((mode, _) => + NewBuySellAmountPage(mode: mode, buySellViewModel: getIt.get())); + getIt.registerFactory(() => BuySellPage(getIt.get())); getIt.registerFactoryParam, void>((List args, _) { diff --git a/lib/new-ui/pages/buy_sell/buy_sell_amount_page.dart b/lib/new-ui/pages/buy_sell/buy_sell_amount_page.dart new file mode 100644 index 000000000..b29a747db --- /dev/null +++ b/lib/new-ui/pages/buy_sell/buy_sell_amount_page.dart @@ -0,0 +1,50 @@ +import 'package:cake_wallet/generated/i18n.dart'; +import 'package:cake_wallet/new-ui/widgets/buy_sell/buy_sell_selector_modal.dart'; +import 'package:cake_wallet/new-ui/widgets/receive_page/receive_top_bar.dart'; +import 'package:cake_wallet/view_model/buy/buy_sell_view_model.dart'; +import 'package:flutter/material.dart'; + +class NewBuySellAmountPage extends StatelessWidget { + const NewBuySellAmountPage({super.key, required this.mode, required this.buySellViewModel}); + + final BuySellPageMode mode; + final BuySellViewModel buySellViewModel; + + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.vertical(top: Radius.circular(18)), + gradient: LinearGradient( + colors: [ + Theme.of(context).colorScheme.surface, + Theme.of(context).colorScheme.surfaceDim, + ], + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + ), + child: SafeArea( + child: Column(children: [ + ModalTopBar(title: _pageTitle, leadingIcon: Icon(Icons.close), onLeadingPressed: Navigator.of(context).pop,), + Expanded(child: GridView.builder(itemCount: 6, gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + crossAxisSpacing: 10, + mainAxisSpacing: 10, + mainAxisExtent: 150), itemBuilder: (context, index){ + + + })) + ],), + ), + ); + } + + String get _pageTitle => + mode == BuySellPageMode.buy ? S.current.buy : S.current.sell + + ((buySellViewModel.cryptoCurrencies.length == 1) + ? " ${buySellViewModel.cryptoCurrencies.first.fullName}" + : ""); +} + + diff --git a/lib/new-ui/widgets/buy_sell/buy_sell_selector_modal.dart b/lib/new-ui/widgets/buy_sell/buy_sell_selector_modal.dart index 88ddcf986..85b82566a 100644 --- a/lib/new-ui/widgets/buy_sell/buy_sell_selector_modal.dart +++ b/lib/new-ui/widgets/buy_sell/buy_sell_selector_modal.dart @@ -1,6 +1,7 @@ +import 'package:cake_wallet/di.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/new-ui/modal_navigator.dart'; -import 'package:cake_wallet/new-ui/widgets/receive_page/receive_top_bar.dart'; +import 'package:cake_wallet/new-ui/pages/buy_sell/buy_sell_amount_page.dart'; import 'package:cake_wallet/src/widgets/cake_image_widget.dart'; import 'package:cake_wallet/themes/core/theme_extension.dart'; import 'package:flutter/material.dart'; @@ -45,7 +46,7 @@ class BuySellSelectorModal extends StatelessWidget { void openBuySellPage(BuildContext context, BuySellPageMode mode) { Navigator.of(context).pop(); - // showModalBottomSheet(context: context, builder: ModalNavigator(rootPage: ,)) + showModalBottomSheet(isScrollControlled: true, context: context, builder: (modalContext)=>ModalNavigator(rootPage: getIt.get(param1: mode), parentContext: context,)); } }