diff --git a/assets/images/bch_chain_qr.svg b/assets/images/bch_chain_qr.svg
new file mode 100644
index 000000000..d8b52f65d
--- /dev/null
+++ b/assets/images/bch_chain_qr.svg
@@ -0,0 +1,12 @@
+
diff --git a/assets/images/btc_chain_qr.svg b/assets/images/btc_chain_qr.svg
new file mode 100644
index 000000000..d6156bd59
--- /dev/null
+++ b/assets/images/btc_chain_qr.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/images/dcr_chain_qr.svg b/assets/images/dcr_chain_qr.svg
new file mode 100644
index 000000000..14d518f03
--- /dev/null
+++ b/assets/images/dcr_chain_qr.svg
@@ -0,0 +1,12 @@
+
diff --git a/assets/images/deuro_icon.svg b/assets/images/deuro_icon.svg
new file mode 100644
index 000000000..010ffd65f
--- /dev/null
+++ b/assets/images/deuro_icon.svg
@@ -0,0 +1,49 @@
+
diff --git a/assets/images/doge_chain_qr.svg b/assets/images/doge_chain_qr.svg
new file mode 100644
index 000000000..5565af70f
--- /dev/null
+++ b/assets/images/doge_chain_qr.svg
@@ -0,0 +1,12 @@
+
diff --git a/assets/images/eth_chain_mono.png b/assets/images/eth_chain_mono.png
deleted file mode 100644
index 2975a4ad7..000000000
Binary files a/assets/images/eth_chain_mono.png and /dev/null differ
diff --git a/assets/images/eth_chain_mono.svg b/assets/images/eth_chain_mono.svg
new file mode 100644
index 000000000..64e86da17
--- /dev/null
+++ b/assets/images/eth_chain_mono.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/images/eth_chain_qr.png b/assets/images/eth_chain_qr.png
deleted file mode 100644
index de5d46725..000000000
Binary files a/assets/images/eth_chain_qr.png and /dev/null differ
diff --git a/assets/images/eth_chain_qr.svg b/assets/images/eth_chain_qr.svg
new file mode 100644
index 000000000..755b915c7
--- /dev/null
+++ b/assets/images/eth_chain_qr.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/images/eth_icon.svg b/assets/images/eth_icon.svg
new file mode 100644
index 000000000..4dbf07a18
--- /dev/null
+++ b/assets/images/eth_icon.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/images/eth_pol_icon.png b/assets/images/eth_pol_icon.png
deleted file mode 100644
index 346c35318..000000000
Binary files a/assets/images/eth_pol_icon.png and /dev/null differ
diff --git a/assets/images/eth_pol_icon.svg b/assets/images/eth_pol_icon.svg
new file mode 100644
index 000000000..7c698afd1
--- /dev/null
+++ b/assets/images/eth_pol_icon.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/images/ltc_chain_qr.svg b/assets/images/ltc_chain_qr.svg
new file mode 100644
index 000000000..d0ea8a9fa
--- /dev/null
+++ b/assets/images/ltc_chain_qr.svg
@@ -0,0 +1,12 @@
+
diff --git a/assets/images/more_tokens.png b/assets/images/more_tokens.png
deleted file mode 100644
index 7bedf426a..000000000
Binary files a/assets/images/more_tokens.png and /dev/null differ
diff --git a/assets/images/more_tokens.svg b/assets/images/more_tokens.svg
new file mode 100644
index 000000000..22896a1dc
--- /dev/null
+++ b/assets/images/more_tokens.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/images/pol_chain_mono.png b/assets/images/pol_chain_mono.png
deleted file mode 100644
index f06d53723..000000000
Binary files a/assets/images/pol_chain_mono.png and /dev/null differ
diff --git a/assets/images/pol_chain_mono.svg b/assets/images/pol_chain_mono.svg
new file mode 100644
index 000000000..78698a380
--- /dev/null
+++ b/assets/images/pol_chain_mono.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/images/pol_chain_qr.png b/assets/images/pol_chain_qr.png
deleted file mode 100644
index 72699ecca..000000000
Binary files a/assets/images/pol_chain_qr.png and /dev/null differ
diff --git a/assets/images/pol_chain_qr.svg b/assets/images/pol_chain_qr.svg
new file mode 100644
index 000000000..7c5c8ee13
--- /dev/null
+++ b/assets/images/pol_chain_qr.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/images/pol_icon.png b/assets/images/pol_icon.png
deleted file mode 100644
index c7370f959..000000000
Binary files a/assets/images/pol_icon.png and /dev/null differ
diff --git a/assets/images/pol_icon.svg b/assets/images/pol_icon.svg
new file mode 100644
index 000000000..bed187b6d
--- /dev/null
+++ b/assets/images/pol_icon.svg
@@ -0,0 +1,13 @@
+
diff --git a/assets/images/sol_chain_mono.png b/assets/images/sol_chain_mono.png
deleted file mode 100644
index 614943308..000000000
Binary files a/assets/images/sol_chain_mono.png and /dev/null differ
diff --git a/assets/images/sol_chain_mono.svg b/assets/images/sol_chain_mono.svg
new file mode 100644
index 000000000..39b172003
--- /dev/null
+++ b/assets/images/sol_chain_mono.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/images/sol_chain_qr.png b/assets/images/sol_chain_qr.png
deleted file mode 100644
index ca8b568a6..000000000
Binary files a/assets/images/sol_chain_qr.png and /dev/null differ
diff --git a/assets/images/sol_chain_qr.svg b/assets/images/sol_chain_qr.svg
new file mode 100644
index 000000000..f6af61276
--- /dev/null
+++ b/assets/images/sol_chain_qr.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/images/sol_icon.svg b/assets/images/sol_icon.svg
new file mode 100644
index 000000000..2383c5fef
--- /dev/null
+++ b/assets/images/sol_icon.svg
@@ -0,0 +1,26 @@
+
diff --git a/assets/images/trx_chain_mono.png b/assets/images/trx_chain_mono.png
deleted file mode 100644
index 0fff86151..000000000
Binary files a/assets/images/trx_chain_mono.png and /dev/null differ
diff --git a/assets/images/trx_chain_mono.svg b/assets/images/trx_chain_mono.svg
new file mode 100644
index 000000000..e8891cd41
--- /dev/null
+++ b/assets/images/trx_chain_mono.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/images/trx_chain_qr.png b/assets/images/trx_chain_qr.png
deleted file mode 100644
index 161159645..000000000
Binary files a/assets/images/trx_chain_qr.png and /dev/null differ
diff --git a/assets/images/trx_chain_qr.svg b/assets/images/trx_chain_qr.svg
new file mode 100644
index 000000000..d16ffad53
--- /dev/null
+++ b/assets/images/trx_chain_qr.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/images/trx_icon.svg b/assets/images/trx_icon.svg
new file mode 100644
index 000000000..1ffb5f5ab
--- /dev/null
+++ b/assets/images/trx_icon.svg
@@ -0,0 +1,12 @@
+
diff --git a/assets/images/usdc_icon.svg b/assets/images/usdc_icon.svg
new file mode 100644
index 000000000..fba88de0e
--- /dev/null
+++ b/assets/images/usdc_icon.svg
@@ -0,0 +1,11 @@
+
diff --git a/assets/images/usdt_wallet_icon.png b/assets/images/usdt_wallet_icon.png
deleted file mode 100644
index 4fe26c16e..000000000
Binary files a/assets/images/usdt_wallet_icon.png and /dev/null differ
diff --git a/assets/images/usdt_wallet_icon.svg b/assets/images/usdt_wallet_icon.svg
new file mode 100644
index 000000000..fab9840d9
--- /dev/null
+++ b/assets/images/usdt_wallet_icon.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/images/wow_chain_qr.svg b/assets/images/wow_chain_qr.svg
new file mode 100644
index 000000000..fd55a6233
--- /dev/null
+++ b/assets/images/wow_chain_qr.svg
@@ -0,0 +1,15 @@
+
diff --git a/assets/images/xmr_chain_qr.svg b/assets/images/xmr_chain_qr.svg
new file mode 100644
index 000000000..c7b6f0fc9
--- /dev/null
+++ b/assets/images/xmr_chain_qr.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/images/xno_chain_qr.svg b/assets/images/xno_chain_qr.svg
new file mode 100644
index 000000000..f6dc53c02
--- /dev/null
+++ b/assets/images/xno_chain_qr.svg
@@ -0,0 +1,13 @@
+
diff --git a/assets/images/zano_chain_mono.png b/assets/images/zano_chain_mono.png
deleted file mode 100644
index 0e8844c69..000000000
Binary files a/assets/images/zano_chain_mono.png and /dev/null differ
diff --git a/assets/images/zano_chain_mono.svg b/assets/images/zano_chain_mono.svg
new file mode 100644
index 000000000..902bda58c
--- /dev/null
+++ b/assets/images/zano_chain_mono.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/images/zano_chain_qr.png b/assets/images/zano_chain_qr.png
deleted file mode 100644
index 73928fe4e..000000000
Binary files a/assets/images/zano_chain_qr.png and /dev/null differ
diff --git a/assets/images/zano_chain_qr.svg b/assets/images/zano_chain_qr.svg
new file mode 100644
index 000000000..4512e48ce
--- /dev/null
+++ b/assets/images/zano_chain_qr.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/images/zano_icon.svg b/assets/images/zano_icon.svg
new file mode 100644
index 000000000..aca0499a9
--- /dev/null
+++ b/assets/images/zano_icon.svg
@@ -0,0 +1,11 @@
+
diff --git a/lib/di.dart b/lib/di.dart
index 8488a3866..8aadf9675 100644
--- a/lib/di.dart
+++ b/lib/di.dart
@@ -1503,9 +1503,9 @@ Future setup({
themeStore: getIt.get(),
));
- getIt.registerFactoryParam(
- (AnonpayInfoBase anonpayInvoiceInfo, _) =>
- AnonPayReceivePage(invoiceInfo: anonpayInvoiceInfo));
+ getIt.registerFactoryParam(
+ (AnonPayReceivePageArgs anonpayReceivePageArgs, _) =>
+ AnonPayReceivePage(args: anonpayReceivePageArgs));
getIt.registerFactoryParam(
(AnonpayInvoiceInfo anonpayInvoiceInfo, _) => AnonpayDetailsPage(
diff --git a/lib/router.dart b/lib/router.dart
index 1577abedc..ad43badf2 100644
--- a/lib/router.dart
+++ b/lib/router.dart
@@ -1,6 +1,5 @@
import 'dart:io';
-import 'package:cake_wallet/anonpay/anonpay_info_base.dart';
import 'package:cake_wallet/anonpay/anonpay_invoice_info.dart';
import 'package:cake_wallet/core/new_wallet_arguments.dart';
import 'package:cake_wallet/order/order.dart';
@@ -766,9 +765,9 @@ Route createRoute(RouteSettings settings) {
return CupertinoPageRoute(builder: (_) => getIt.get(param1: args));
case Routes.anonPayReceivePage:
- final anonInvoiceViewData = settings.arguments as AnonpayInfoBase;
+ final anonReceivePageArgs = settings.arguments as AnonPayReceivePageArgs;
return CupertinoPageRoute(
- builder: (_) => getIt.get(param1: anonInvoiceViewData));
+ builder: (_) => getIt.get(param1: anonReceivePageArgs));
case Routes.anonPayDetailsPage:
final anonInvoiceViewData = settings.arguments as AnonpayInvoiceInfo;
diff --git a/lib/src/screens/dashboard/pages/address_page.dart b/lib/src/screens/dashboard/pages/address_page.dart
index 4ba73b630..77ec84346 100644
--- a/lib/src/screens/dashboard/pages/address_page.dart
+++ b/lib/src/screens/dashboard/pages/address_page.dart
@@ -4,6 +4,7 @@ import 'package:cake_wallet/di.dart';
import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/anonpay/anonpay_donation_link_info.dart';
import 'package:cake_wallet/entities/preferences_key.dart';
+import 'package:cake_wallet/src/screens/receive/anonpay_receive_page.dart';
import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
import 'package:cw_core/receive_page_option.dart';
import 'package:cake_wallet/src/screens/dashboard/widgets/present_receive_option_picker.dart';
@@ -188,6 +189,7 @@ class AddressPage extends BasePage {
imageUrl: addressListViewModel.monoImage,
height: 16,
width: 16,
+ color: Theme.of(context).colorScheme.onSurface,
),
SizedBox(width: 10),
Text(
@@ -211,17 +213,31 @@ class AddressPage extends BasePage {
Center(
child: SizedBox(
height: 40,
- width: addressListViewModel.walletImages.length * 30.0,
+ width: addressListViewModel.walletImages.length * 32.0,
child: Stack(
children: [
for (int i = addressListViewModel.walletImages.length - 1; i >= 0; i--)
Positioned(
left: i * 25.0,
- child: ClipOval(
- child: CakeImageWidget(
- height: 35,
- width: 35,
- imageUrl: addressListViewModel.walletImages[i],
+ child: Container(
+ decoration: BoxDecoration(
+ border: Border.all(
+ color: Theme.of(context).colorScheme.surfaceContainer,
+ width: 3,
+ ),
+ color: Theme.of(context).colorScheme.surfaceContainer,
+ borderRadius: BorderRadius.circular(24),
+ ),
+ child: ClipOval(
+ child: CakeImageWidget(
+ height: 35,
+ width: 35,
+ imageUrl: addressListViewModel.walletImages[i],
+ color: addressListViewModel.walletImages.last ==
+ addressListViewModel.walletImages[i]
+ ? Theme.of(context).colorScheme.onSurfaceVariant
+ : null,
+ ),
),
),
),
@@ -273,10 +289,13 @@ class AddressPage extends BasePage {
Navigator.pushNamed(
context,
Routes.anonPayReceivePage,
- arguments: AnonpayDonationLinkInfo(
- clearnetUrl: clearnetUrl,
- onionUrl: onionUrl,
- address: addressListViewModel.address.address,
+ arguments: AnonPayReceivePageArgs(
+ invoiceInfo: AnonpayDonationLinkInfo(
+ clearnetUrl: clearnetUrl,
+ onionUrl: onionUrl,
+ address: addressListViewModel.address.address,
+ ),
+ qrImage: addressListViewModel.qrImage,
),
);
} else {
diff --git a/lib/src/screens/exchange_trade/exchange_trade_external_send_page.dart b/lib/src/screens/exchange_trade/exchange_trade_external_send_page.dart
index c1900ca38..92180bb9e 100644
--- a/lib/src/screens/exchange_trade/exchange_trade_external_send_page.dart
+++ b/lib/src/screens/exchange_trade/exchange_trade_external_send_page.dart
@@ -1,5 +1,8 @@
+import 'package:cake_wallet/entities/qr_view_data.dart';
+import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/src/screens/exchange_trade/widgets/exchange_trade_card_item_widget.dart';
import 'package:cake_wallet/src/screens/receive/widgets/qr_image.dart';
+import 'package:cake_wallet/utils/brightness_util.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:flutter/material.dart';
import 'package:cake_wallet/generated/i18n.dart';
@@ -61,20 +64,39 @@ class ExchangeTradeExternalSendPage extends BasePage {
Spacer(flex: 3),
Flexible(
flex: 6,
- child: Center(
- child: AspectRatio(
- aspectRatio: 1.0,
- child: Container(
- padding: EdgeInsets.all(5),
- decoration: BoxDecoration(
- border: Border.all(
- width: 3,
- color: Theme.of(context).colorScheme.primary,
+ child: GestureDetector(
+ onTap: () {
+ BrightnessUtil.changeBrightnessForFunction(
+ () async {
+ await Navigator.pushNamed(
+ context,
+ Routes.fullscreenQR,
+ arguments: QrViewData(
+ embeddedImagePath: exchangeTradeViewModel.qrImage,
+ data: exchangeTradeViewModel.trade.inputAddress ??
+ fetchingLabel,
+ ),
+ );
+ },
+ );
+ },
+ child: Center(
+ child: AspectRatio(
+ aspectRatio: 1.0,
+ child: Container(
+ padding: EdgeInsets.all(5),
+ decoration: BoxDecoration(
+ border: Border.all(
+ width: 3,
+ color: Theme.of(context).colorScheme.primary,
+ ),
+ ),
+ child: QrImage(
+ data: exchangeTradeViewModel.trade.inputAddress ??
+ fetchingLabel,
+ embeddedImagePath: exchangeTradeViewModel.qrImage,
+ size: 230,
),
- ),
- child: QrImage(
- data:
- exchangeTradeViewModel.trade.inputAddress ?? fetchingLabel,
),
),
),
@@ -88,7 +110,8 @@ class ExchangeTradeExternalSendPage extends BasePage {
.where((item) => item.isExternalSendDetail)
.map(
(item) => TradeItemRowWidget(
- key: ValueKey('exchange_trade_external_send_page_send_item_${item.title}_key'),
+ key: ValueKey(
+ 'exchange_trade_external_send_page_send_item_${item.title}_key'),
currentTheme: currentTheme,
title: item.title,
value: item.data,
diff --git a/lib/src/screens/receive/anonpay_invoice_page.dart b/lib/src/screens/receive/anonpay_invoice_page.dart
index 2aba0f207..b883d5fe0 100644
--- a/lib/src/screens/receive/anonpay_invoice_page.dart
+++ b/lib/src/screens/receive/anonpay_invoice_page.dart
@@ -1,7 +1,9 @@
import 'package:cake_wallet/anonpay/anonpay_donation_link_info.dart';
+import 'package:cake_wallet/anonpay/anonpay_invoice_info.dart';
import 'package:cake_wallet/core/execution_state.dart';
import 'package:cake_wallet/di.dart';
import 'package:cake_wallet/entities/preferences_key.dart';
+import 'package:cake_wallet/src/screens/receive/anonpay_receive_page.dart';
import 'package:cw_core/receive_page_option.dart';
import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/src/screens/dashboard/widgets/present_receive_option_picker.dart';
@@ -200,12 +202,18 @@ class AnonPayInvoicePage extends BasePage {
if (clearnetUrl != null &&
onionUrl != null &&
anonInvoicePageViewModel.currentWalletName == donationWalletName) {
- Navigator.pushReplacementNamed(context, Routes.anonPayReceivePage,
- arguments: AnonpayDonationLinkInfo(
+ Navigator.pushReplacementNamed(
+ context,
+ Routes.anonPayReceivePage,
+ arguments: AnonPayReceivePageArgs(
+ invoiceInfo: AnonpayDonationLinkInfo(
clearnetUrl: clearnetUrl,
onionUrl: onionUrl,
address: anonInvoicePageViewModel.address,
- ));
+ ),
+ qrImage: anonInvoicePageViewModel.qrImage,
+ ),
+ );
}
break;
default:
@@ -214,7 +222,14 @@ class AnonPayInvoicePage extends BasePage {
reaction((_) => anonInvoicePageViewModel.state, (ExecutionState state) {
if (state is ExecutedSuccessfullyState) {
- Navigator.pushNamed(context, Routes.anonPayReceivePage, arguments: state.payload);
+ Navigator.pushNamed(
+ context,
+ Routes.anonPayReceivePage,
+ arguments: AnonPayReceivePageArgs(
+ invoiceInfo: state.payload as AnonpayInvoiceInfo,
+ qrImage: anonInvoicePageViewModel.qrImage,
+ ),
+ );
}
if (state is FailureState) {
showPopUp(
diff --git a/lib/src/screens/receive/anonpay_receive_page.dart b/lib/src/screens/receive/anonpay_receive_page.dart
index c37f78e81..5b6ecc843 100644
--- a/lib/src/screens/receive/anonpay_receive_page.dart
+++ b/lib/src/screens/receive/anonpay_receive_page.dart
@@ -13,10 +13,18 @@ import 'package:cake_wallet/utils/brightness_util.dart';
import 'package:flutter/material.dart';
import 'package:qr_flutter/qr_flutter.dart' as qr;
-class AnonPayReceivePage extends BasePage {
+class AnonPayReceivePageArgs {
final AnonpayInfoBase invoiceInfo;
+ final String? qrImage;
- AnonPayReceivePage({required this.invoiceInfo});
+ AnonPayReceivePageArgs({required this.invoiceInfo, this.qrImage});
+}
+
+class AnonPayReceivePage extends BasePage {
+ AnonPayReceivePage({required this.args}) : invoiceInfo = args.invoiceInfo;
+
+ final AnonPayReceivePageArgs args;
+ final AnonpayInfoBase invoiceInfo;
@override
String get title => S.current.receive;
@@ -104,6 +112,7 @@ class AnonPayReceivePage extends BasePage {
arguments: QrViewData(
data: invoiceInfo.clearnetUrl,
version: qr.QrVersions.auto,
+ embeddedImagePath: args.qrImage,
));
});
},
@@ -123,6 +132,8 @@ class AnonPayReceivePage extends BasePage {
child: QrImage(
data: invoiceInfo.clearnetUrl,
version: qr.QrVersions.auto,
+ embeddedImagePath: args.qrImage,
+ size: 230,
),
),
),
diff --git a/lib/src/screens/receive/fullscreen_qr_page.dart b/lib/src/screens/receive/fullscreen_qr_page.dart
index ebe3eb781..d0f86b4b6 100644
--- a/lib/src/screens/receive/fullscreen_qr_page.dart
+++ b/lib/src/screens/receive/fullscreen_qr_page.dart
@@ -71,6 +71,7 @@ class FullscreenQRPage extends BasePage {
),
),
child: QrImage(
+ size: 360,
data: qrViewData.data,
version: qrViewData.version,
embeddedImagePath: qrViewData.embeddedImagePath,
diff --git a/lib/src/screens/receive/widgets/qr_image.dart b/lib/src/screens/receive/widgets/qr_image.dart
index ef4d3ad6a..32dec6aae 100644
--- a/lib/src/screens/receive/widgets/qr_image.dart
+++ b/lib/src/screens/receive/widgets/qr_image.dart
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
+import 'package:flutter_svg/flutter_svg.dart';
import 'package:qr_flutter/qr_flutter.dart' as qr;
class QrImage extends StatelessWidget {
@@ -22,15 +23,43 @@ class QrImage extends StatelessWidget {
@override
Widget build(BuildContext context) {
- return qr.QrImageView(
- data: data,
- errorCorrectionLevel: errorCorrectionLevel,
- version: version ?? qr.QrVersions.auto,
- size: size,
- foregroundColor: foregroundColor,
- backgroundColor: backgroundColor,
- padding: const EdgeInsets.all(8.0),
- embeddedImage: AssetImage(embeddedImagePath ?? 'assets/images/qr-cake.png'),
- );
+ final imagePath = embeddedImagePath ?? 'assets/images/qr-cake.png';
+ final isSvg = imagePath.endsWith('.svg');
+
+ if (isSvg) {
+ final qrSize = size ?? 100.0;
+ final logoSize = qrSize * 0.30;
+
+ return Stack(
+ alignment: Alignment.center,
+ children: [
+ qr.QrImageView(
+ data: data,
+ errorCorrectionLevel: errorCorrectionLevel,
+ version: version ?? qr.QrVersions.auto,
+ size: qrSize,
+ foregroundColor: foregroundColor,
+ backgroundColor: backgroundColor,
+ padding: const EdgeInsets.all(12.0),
+ ),
+ SvgPicture.asset(
+ imagePath,
+ width: logoSize * 0.8,
+ height: logoSize * 0.8,
+ ),
+ ],
+ );
+ } else {
+ return qr.QrImageView(
+ data: data,
+ errorCorrectionLevel: errorCorrectionLevel,
+ version: version ?? qr.QrVersions.auto,
+ size: size,
+ foregroundColor: foregroundColor,
+ backgroundColor: backgroundColor,
+ padding: const EdgeInsets.all(12.0),
+ embeddedImage: AssetImage(imagePath),
+ );
+ }
}
}
diff --git a/lib/src/screens/receive/widgets/qr_widget.dart b/lib/src/screens/receive/widgets/qr_widget.dart
index 91f2676dc..140c5619f 100644
--- a/lib/src/screens/receive/widgets/qr_widget.dart
+++ b/lib/src/screens/receive/widgets/qr_widget.dart
@@ -97,17 +97,14 @@ class QRWidget extends StatelessWidget {
),
child: Column(
children: [
- Container(
- clipBehavior: Clip.hardEdge,
- decoration: BoxDecoration(
- borderRadius: BorderRadius.circular(12.5),
- ),
- padding: EdgeInsets.all(3),
+ ClipRRect(
+ borderRadius: BorderRadius.circular(12.5),
child: AspectRatio(
aspectRatio: 1.0,
child: QrImage(
embeddedImagePath: addressListViewModel.qrImage,
data: addressUri.toString(),
+ size: 230,
),
),
),
@@ -199,32 +196,29 @@ class QRWidget extends StatelessWidget {
],
),
Observer(
- builder: (_) => Padding(
- padding: EdgeInsets.only(top: 10),
- child: Row(
- children: [
- Expanded(
- child: Form(
- key: formKey,
- child: CurrencyAmountTextField(
- hasUnderlineBorder: true,
- borderWidth: 0.0,
- selectedCurrency: _currencyName,
- selectedCurrencyDecimals:
- addressListViewModel.selectedCurrency.decimals,
- amountFocusNode: amountTextFieldFocusNode,
- amountController: amountController,
- padding: EdgeInsets.only(top: 20, left: _width / 4),
- currentThemeType: currentTheme.type,
- isAmountEditable: true,
- tag: addressListViewModel.selectedCurrency.tag,
- onTapPicker: () => _presentPicker(context),
- isPickerEnable: true,
- ),
+ builder: (_) => Row(
+ children: [
+ Expanded(
+ child: Form(
+ key: formKey,
+ child: CurrencyAmountTextField(
+ hasUnderlineBorder: true,
+ borderWidth: 0.0,
+ selectedCurrency: _currencyName,
+ selectedCurrencyDecimals:
+ addressListViewModel.selectedCurrency.decimals,
+ amountFocusNode: amountTextFieldFocusNode,
+ amountController: amountController,
+ padding: EdgeInsets.only(top: 20, left: _width / 4),
+ currentThemeType: currentTheme.type,
+ isAmountEditable: true,
+ tag: addressListViewModel.selectedCurrency.tag,
+ onTapPicker: () => _presentPicker(context),
+ isPickerEnable: true,
),
),
- ],
- ),
+ ),
+ ],
)),
Divider(height: 1, color: Theme.of(context).colorScheme.outlineVariant),
Padding(
diff --git a/lib/src/widgets/cake_image_widget.dart b/lib/src/widgets/cake_image_widget.dart
index 04d298e2e..5c80083a3 100644
--- a/lib/src/widgets/cake_image_widget.dart
+++ b/lib/src/widgets/cake_image_widget.dart
@@ -39,6 +39,7 @@ class CakeImageWidget extends StatelessWidget {
imageUrl!,
height: height,
width: width,
+ color: color,
fit: fit ?? BoxFit.contain,
)
: Image.asset(
@@ -54,6 +55,7 @@ class CakeImageWidget extends StatelessWidget {
imageUrl!,
height: height,
width: width,
+ color: color,
fit: fit ?? BoxFit.contain,
placeholderBuilder: (_) {
return loadingWidget ?? const Center(child: CircularProgressIndicator());
diff --git a/lib/utils/qr_util.dart b/lib/utils/qr_util.dart
new file mode 100644
index 000000000..26b300064
--- /dev/null
+++ b/lib/utils/qr_util.dart
@@ -0,0 +1,36 @@
+import 'package:cw_core/wallet_type.dart';
+
+String getQrImage(WalletType type) {
+ switch (type) {
+ case WalletType.ethereum:
+ return 'assets/images/eth_chain_qr.svg';
+ case WalletType.solana:
+ return 'assets/images/sol_chain_qr.svg';
+ case WalletType.polygon:
+ return 'assets/images/pol_chain_qr.svg';
+ case WalletType.tron:
+ return 'assets/images/trx_chain_qr.svg';
+ case WalletType.zano:
+ return 'assets/images/zano_chain_qr.svg';
+ case WalletType.monero:
+ return 'assets/images/xmr_chain_qr.svg';
+ case WalletType.wownero:
+ return 'assets/images/wow_chain_qr.svg';
+ case WalletType.bitcoin:
+ return 'assets/images/btc_chain_qr.svg';
+ case WalletType.litecoin:
+ return 'assets/images/ltc_chain_qr.svg';
+ case WalletType.bitcoinCash:
+ return 'assets/images/bch_chain_qr.svg';
+ case WalletType.nano:
+ return 'assets/images/xno_chain_qr.svg';
+ case WalletType.decred:
+ return 'assets/images/dcr_chain_qr.svg';
+ case WalletType.dogecoin:
+ return 'assets/images/doge_chain_qr.svg';
+ case WalletType.banano:
+ case WalletType.haven:
+ case WalletType.none:
+ return 'assets/images/qr-cake.svg';
+ }
+}
diff --git a/lib/view_model/anon_invoice_page_view_model.dart b/lib/view_model/anon_invoice_page_view_model.dart
index 05467bd71..bf519c577 100644
--- a/lib/view_model/anon_invoice_page_view_model.dart
+++ b/lib/view_model/anon_invoice_page_view_model.dart
@@ -4,6 +4,7 @@ import 'package:cake_wallet/anonpay/anonpay_request.dart';
import 'package:cake_wallet/core/execution_state.dart';
import 'package:cake_wallet/entities/fiat_currency.dart';
import 'package:cake_wallet/entities/preferences_key.dart';
+import 'package:cake_wallet/utils/qr_util.dart';
import 'package:cw_core/receive_page_option.dart';
import 'package:cake_wallet/store/settings_store.dart';
import 'package:cw_core/crypto_currency.dart';
@@ -175,6 +176,9 @@ abstract class AnonInvoicePageViewModelBase with Store {
@computed
String get currentWalletName => _wallet.name;
+ @computed
+ String get qrImage => getQrImage(_wallet.type);
+
@action
void reset() {
selectedCurrency = walletTypeToCryptoCurrency(_wallet.type);
diff --git a/lib/view_model/exchange/exchange_trade_view_model.dart b/lib/view_model/exchange/exchange_trade_view_model.dart
index bc8be9228..c35519083 100644
--- a/lib/view_model/exchange/exchange_trade_view_model.dart
+++ b/lib/view_model/exchange/exchange_trade_view_model.dart
@@ -19,6 +19,7 @@ import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/screens/exchange_trade/exchange_trade_item.dart';
import 'package:cake_wallet/store/dashboard/fiat_conversion_store.dart';
import 'package:cake_wallet/store/dashboard/trades_store.dart';
+import 'package:cake_wallet/utils/qr_util.dart';
import 'package:cake_wallet/view_model/send/fees_view_model.dart';
import 'package:cake_wallet/view_model/send/output.dart';
import 'package:cake_wallet/view_model/send/send_view_model.dart';
@@ -315,4 +316,7 @@ abstract class ExchangeTradeViewModelBase with Store {
_isSplToken() ||
_isTronToken();
}
+
+ @computed
+ String get qrImage => getQrImage(wallet.type);
}
diff --git a/lib/view_model/wallet_address_list/wallet_address_list_view_model.dart b/lib/view_model/wallet_address_list/wallet_address_list_view_model.dart
index 0ccea7ca1..7e55137a6 100644
--- a/lib/view_model/wallet_address_list/wallet_address_list_view_model.dart
+++ b/lib/view_model/wallet_address_list/wallet_address_list_view_model.dart
@@ -19,6 +19,7 @@ import 'package:cake_wallet/store/dashboard/fiat_conversion_store.dart';
import 'package:cake_wallet/store/settings_store.dart';
import 'package:cake_wallet/store/yat/yat_store.dart';
import 'package:cake_wallet/tron/tron.dart';
+import 'package:cake_wallet/utils/qr_util.dart';
import 'package:cake_wallet/zano/zano.dart';
import 'package:cake_wallet/utils/list_item.dart';
import 'package:cake_wallet/view_model/wallet_address_list/wallet_account_list_header.dart';
@@ -622,38 +623,38 @@ abstract class WalletAddressListViewModelBase extends WalletChangeListenerViewMo
switch (wallet.type) {
case WalletType.ethereum:
return [
- 'assets/images/eth_icon.png',
- 'assets/images/usdc_icon.png',
- 'assets/images/usdt_wallet_icon.png',
- 'assets/images/deuro_icon.png',
- 'assets/images/more_tokens.png',
+ 'assets/images/eth_icon.svg',
+ 'assets/images/usdc_icon.svg',
+ 'assets/images/usdt_wallet_icon.svg',
+ 'assets/images/deuro_icon.svg',
+ 'assets/images/more_tokens.svg',
];
case WalletType.solana:
return [
- 'assets/images/sol_icon.png',
- 'assets/images/usdc_icon.png',
- 'assets/images/usdt_wallet_icon.png',
- 'assets/images/more_tokens.png',
+ 'assets/images/sol_icon.svg',
+ 'assets/images/usdc_icon.svg',
+ 'assets/images/usdt_wallet_icon.svg',
+ 'assets/images/more_tokens.svg',
];
case WalletType.polygon:
return [
- 'assets/images/pol_icon.png',
- 'assets/images/eth_pol_icon.png',
- 'assets/images/usdc_icon.png',
- 'assets/images/usdt_wallet_icon.png',
- 'assets/images/more_tokens.png',
+ 'assets/images/pol_icon.svg',
+ 'assets/images/eth_pol_icon.svg',
+ 'assets/images/usdc_icon.svg',
+ 'assets/images/usdt_wallet_icon.svg',
+ 'assets/images/more_tokens.svg',
];
case WalletType.tron:
return [
- 'assets/images/trx_icon.png',
- 'assets/images/usdc_icon.png',
- 'assets/images/usdt_wallet_icon.png',
- 'assets/images/more_tokens.png',
+ 'assets/images/trx_icon.svg',
+ 'assets/images/usdc_icon.svg',
+ 'assets/images/usdt_wallet_icon.svg',
+ 'assets/images/more_tokens.svg',
];
case WalletType.zano:
return [
- 'assets/images/zano_bg_icon.png',
- 'assets/images/more_tokens.png',
+ 'assets/images/zano_icon.svg',
+ 'assets/images/more_tokens.svg',
];
default:
@@ -662,38 +663,23 @@ abstract class WalletAddressListViewModelBase extends WalletChangeListenerViewMo
}
@computed
- String get qrImage {
- switch (type) {
- case WalletType.ethereum:
- return 'assets/images/eth_chain_qr.png';
- case WalletType.solana:
- return 'assets/images/sol_chain_qr.png';
- case WalletType.polygon:
- return 'assets/images/pol_chain_qr.png';
- case WalletType.tron:
- return 'assets/images/trx_chain_qr.png';
- case WalletType.zano:
- return 'assets/images/zano_chain_qr.png';
- default:
- return 'assets/images/qr-cake.png';
- }
- }
+ String get qrImage => getQrImage(type);
@computed
String get monoImage {
switch (type) {
case WalletType.ethereum:
- return 'assets/images/eth_chain_mono.png';
+ return 'assets/images/eth_chain_mono.svg';
case WalletType.solana:
- return 'assets/images/sol_chain_mono.png';
+ return 'assets/images/sol_chain_mono.svg';
case WalletType.polygon:
- return 'assets/images/pol_chain_mono.png';
+ return 'assets/images/pol_chain_mono.svg';
case WalletType.tron:
- return 'assets/images/trx_chain_mono.png';
+ return 'assets/images/trx_chain_mono.svg';
case WalletType.zano:
- return 'assets/images/zano_chain_mono.png';
+ return 'assets/images/zano_chain_mono.svg';
default:
- return 'assets/images/eth_chain_mono.png';
+ return 'assets/images/eth_chain_mono.svg';
}
}