diff --git a/assets/images/2.0x/Twitter.png b/assets/images/2.0x/Twitter.png
deleted file mode 100644
index 642e8eb72..000000000
Binary files a/assets/images/2.0x/Twitter.png and /dev/null differ
diff --git a/assets/images/2.0x/back_arrow.png b/assets/images/2.0x/back_arrow.png
deleted file mode 100644
index 065eecf7f..000000000
Binary files a/assets/images/2.0x/back_arrow.png and /dev/null differ
diff --git a/assets/images/2.0x/back_arrow_dark_theme.png b/assets/images/2.0x/back_arrow_dark_theme.png
deleted file mode 100644
index f1e790fcd..000000000
Binary files a/assets/images/2.0x/back_arrow_dark_theme.png and /dev/null differ
diff --git a/assets/images/2.0x/back_vector.png b/assets/images/2.0x/back_vector.png
deleted file mode 100644
index 8d9239aa9..000000000
Binary files a/assets/images/2.0x/back_vector.png and /dev/null differ
diff --git a/assets/images/2.0x/backup.png b/assets/images/2.0x/backup.png
deleted file mode 100644
index 5cf40bba7..000000000
Binary files a/assets/images/2.0x/backup.png and /dev/null differ
diff --git a/assets/images/2.0x/bitcoin.png b/assets/images/2.0x/bitcoin.png
deleted file mode 100644
index 169c73426..000000000
Binary files a/assets/images/2.0x/bitcoin.png and /dev/null differ
diff --git a/assets/images/2.0x/bitcoin_menu.png b/assets/images/2.0x/bitcoin_menu.png
deleted file mode 100644
index 7afe772aa..000000000
Binary files a/assets/images/2.0x/bitcoin_menu.png and /dev/null differ
diff --git a/assets/images/2.0x/bitmap.png b/assets/images/2.0x/bitmap.png
deleted file mode 100644
index b08091847..000000000
Binary files a/assets/images/2.0x/bitmap.png and /dev/null differ
diff --git a/assets/images/2.0x/cake_arrow.png b/assets/images/2.0x/cake_arrow.png
deleted file mode 100644
index cb72693ce..000000000
Binary files a/assets/images/2.0x/cake_arrow.png and /dev/null differ
diff --git a/assets/images/2.0x/cake_logo.png b/assets/images/2.0x/cake_logo.png
deleted file mode 100644
index 277816813..000000000
Binary files a/assets/images/2.0x/cake_logo.png and /dev/null differ
diff --git a/assets/images/2.0x/china.png b/assets/images/2.0x/china.png
deleted file mode 100644
index d199532ee..000000000
Binary files a/assets/images/2.0x/china.png and /dev/null differ
diff --git a/assets/images/2.0x/coins.png b/assets/images/2.0x/coins.png
deleted file mode 100644
index c96e6e48c..000000000
Binary files a/assets/images/2.0x/coins.png and /dev/null differ
diff --git a/assets/images/2.0x/crypto_lock.png b/assets/images/2.0x/crypto_lock.png
deleted file mode 100644
index c93941b77..000000000
Binary files a/assets/images/2.0x/crypto_lock.png and /dev/null differ
diff --git a/assets/images/2.0x/crypto_lock_light.png b/assets/images/2.0x/crypto_lock_light.png
deleted file mode 100644
index 2937b2012..000000000
Binary files a/assets/images/2.0x/crypto_lock_light.png and /dev/null differ
diff --git a/assets/images/2.0x/decred.png b/assets/images/2.0x/decred.png
deleted file mode 100644
index 2f4919cec..000000000
Binary files a/assets/images/2.0x/decred.png and /dev/null differ
diff --git a/assets/images/2.0x/germany.png b/assets/images/2.0x/germany.png
deleted file mode 100644
index e2d0b90dd..000000000
Binary files a/assets/images/2.0x/germany.png and /dev/null differ
diff --git a/assets/images/2.0x/holland.png b/assets/images/2.0x/holland.png
deleted file mode 100644
index 5934a2332..000000000
Binary files a/assets/images/2.0x/holland.png and /dev/null differ
diff --git a/assets/images/2.0x/india.png b/assets/images/2.0x/india.png
deleted file mode 100644
index af1e05656..000000000
Binary files a/assets/images/2.0x/india.png and /dev/null differ
diff --git a/assets/images/2.0x/japan.png b/assets/images/2.0x/japan.png
deleted file mode 100644
index ba2fac68a..000000000
Binary files a/assets/images/2.0x/japan.png and /dev/null differ
diff --git a/assets/images/2.0x/keysIco.png b/assets/images/2.0x/keysIco.png
deleted file mode 100644
index 00c2879a6..000000000
Binary files a/assets/images/2.0x/keysIco.png and /dev/null differ
diff --git a/assets/images/2.0x/litecoin.png b/assets/images/2.0x/litecoin.png
deleted file mode 100644
index ea6d0e6a0..000000000
Binary files a/assets/images/2.0x/litecoin.png and /dev/null differ
diff --git a/assets/images/2.0x/menu_button.png b/assets/images/2.0x/menu_button.png
deleted file mode 100644
index a0f391b9c..000000000
Binary files a/assets/images/2.0x/menu_button.png and /dev/null differ
diff --git a/assets/images/2.0x/monero.png b/assets/images/2.0x/monero.png
deleted file mode 100644
index 01b0d0a96..000000000
Binary files a/assets/images/2.0x/monero.png and /dev/null differ
diff --git a/assets/images/2.0x/monero_menu.png b/assets/images/2.0x/monero_menu.png
deleted file mode 100644
index b92733a16..000000000
Binary files a/assets/images/2.0x/monero_menu.png and /dev/null differ
diff --git a/assets/images/2.0x/poland.png b/assets/images/2.0x/poland.png
deleted file mode 100644
index 30e2d4c76..000000000
Binary files a/assets/images/2.0x/poland.png and /dev/null differ
diff --git a/assets/images/2.0x/portugal.png b/assets/images/2.0x/portugal.png
deleted file mode 100644
index 08928da3e..000000000
Binary files a/assets/images/2.0x/portugal.png and /dev/null differ
diff --git a/assets/images/2.0x/pre_seed_dark.png b/assets/images/2.0x/pre_seed_dark.png
deleted file mode 100755
index 2bb3b8e65..000000000
Binary files a/assets/images/2.0x/pre_seed_dark.png and /dev/null differ
diff --git a/assets/images/2.0x/pre_seed_light.png b/assets/images/2.0x/pre_seed_light.png
deleted file mode 100755
index b198effad..000000000
Binary files a/assets/images/2.0x/pre_seed_light.png and /dev/null differ
diff --git a/assets/images/2.0x/restoreSeed.png b/assets/images/2.0x/restoreSeed.png
deleted file mode 100644
index c25928f6c..000000000
Binary files a/assets/images/2.0x/restoreSeed.png and /dev/null differ
diff --git a/assets/images/2.0x/restore_keys.png b/assets/images/2.0x/restore_keys.png
deleted file mode 100644
index 6a90ef2c2..000000000
Binary files a/assets/images/2.0x/restore_keys.png and /dev/null differ
diff --git a/assets/images/2.0x/restore_seed.png b/assets/images/2.0x/restore_seed.png
deleted file mode 100644
index 2bbea22cf..000000000
Binary files a/assets/images/2.0x/restore_seed.png and /dev/null differ
diff --git a/assets/images/2.0x/restore_wallet_image.png b/assets/images/2.0x/restore_wallet_image.png
deleted file mode 100644
index 3e3aecb91..000000000
Binary files a/assets/images/2.0x/restore_wallet_image.png and /dev/null differ
diff --git a/assets/images/2.0x/russia.png b/assets/images/2.0x/russia.png
deleted file mode 100644
index c72a0dfe4..000000000
Binary files a/assets/images/2.0x/russia.png and /dev/null differ
diff --git a/assets/images/2.0x/seedIco.png b/assets/images/2.0x/seedIco.png
deleted file mode 100644
index 650f2fe05..000000000
Binary files a/assets/images/2.0x/seedIco.png and /dev/null differ
diff --git a/assets/images/2.0x/seedKeys.png b/assets/images/2.0x/seedKeys.png
deleted file mode 100644
index 10bee8b37..000000000
Binary files a/assets/images/2.0x/seedKeys.png and /dev/null differ
diff --git a/assets/images/2.0x/seed_image.png b/assets/images/2.0x/seed_image.png
deleted file mode 100644
index 795b0aba5..000000000
Binary files a/assets/images/2.0x/seed_image.png and /dev/null differ
diff --git a/assets/images/2.0x/south_korea.png b/assets/images/2.0x/south_korea.png
deleted file mode 100644
index 93aca42e8..000000000
Binary files a/assets/images/2.0x/south_korea.png and /dev/null differ
diff --git a/assets/images/2.0x/spain.png b/assets/images/2.0x/spain.png
deleted file mode 100644
index e1458506e..000000000
Binary files a/assets/images/2.0x/spain.png and /dev/null differ
diff --git a/assets/images/2.0x/usa.png b/assets/images/2.0x/usa.png
deleted file mode 100644
index 5517c9e81..000000000
Binary files a/assets/images/2.0x/usa.png and /dev/null differ
diff --git a/assets/images/2.0x/wallet_name.png b/assets/images/2.0x/wallet_name.png
deleted file mode 100644
index f5593af17..000000000
Binary files a/assets/images/2.0x/wallet_name.png and /dev/null differ
diff --git a/assets/images/2.0x/wallet_name_light.png b/assets/images/2.0x/wallet_name_light.png
deleted file mode 100644
index b59e4c451..000000000
Binary files a/assets/images/2.0x/wallet_name_light.png and /dev/null differ
diff --git a/assets/images/2.0x/wallet_type.png b/assets/images/2.0x/wallet_type.png
deleted file mode 100644
index a3bbfdf2d..000000000
Binary files a/assets/images/2.0x/wallet_type.png and /dev/null differ
diff --git a/assets/images/2.0x/wallet_type_light.png b/assets/images/2.0x/wallet_type_light.png
deleted file mode 100644
index 791c3a87e..000000000
Binary files a/assets/images/2.0x/wallet_type_light.png and /dev/null differ
diff --git a/assets/images/2.0x/welcome.png b/assets/images/2.0x/welcome.png
deleted file mode 100644
index 8ff024130..000000000
Binary files a/assets/images/2.0x/welcome.png and /dev/null differ
diff --git a/assets/images/2.0x/welcomeImg.png b/assets/images/2.0x/welcomeImg.png
deleted file mode 100644
index d4c76fc4f..000000000
Binary files a/assets/images/2.0x/welcomeImg.png and /dev/null differ
diff --git a/assets/images/2.0x/welcome_light.png b/assets/images/2.0x/welcome_light.png
deleted file mode 100644
index 8386d25b0..000000000
Binary files a/assets/images/2.0x/welcome_light.png and /dev/null differ
diff --git a/assets/images/3.0x/Twitter.png b/assets/images/3.0x/Twitter.png
deleted file mode 100644
index 6a6b5f3a8..000000000
Binary files a/assets/images/3.0x/Twitter.png and /dev/null differ
diff --git a/assets/images/3.0x/back_arrow.png b/assets/images/3.0x/back_arrow.png
deleted file mode 100644
index b5b7fde8e..000000000
Binary files a/assets/images/3.0x/back_arrow.png and /dev/null differ
diff --git a/assets/images/3.0x/back_arrow_dark_theme.png b/assets/images/3.0x/back_arrow_dark_theme.png
deleted file mode 100644
index 724ed23f2..000000000
Binary files a/assets/images/3.0x/back_arrow_dark_theme.png and /dev/null differ
diff --git a/assets/images/3.0x/back_vector.png b/assets/images/3.0x/back_vector.png
deleted file mode 100644
index d01030e5d..000000000
Binary files a/assets/images/3.0x/back_vector.png and /dev/null differ
diff --git a/assets/images/3.0x/backup.png b/assets/images/3.0x/backup.png
deleted file mode 100644
index 5971200dc..000000000
Binary files a/assets/images/3.0x/backup.png and /dev/null differ
diff --git a/assets/images/3.0x/bitcoin.png b/assets/images/3.0x/bitcoin.png
deleted file mode 100644
index 9fd49e6f8..000000000
Binary files a/assets/images/3.0x/bitcoin.png and /dev/null differ
diff --git a/assets/images/3.0x/bitcoin_menu.png b/assets/images/3.0x/bitcoin_menu.png
deleted file mode 100644
index a278fa2a5..000000000
Binary files a/assets/images/3.0x/bitcoin_menu.png and /dev/null differ
diff --git a/assets/images/3.0x/bitmap.png b/assets/images/3.0x/bitmap.png
deleted file mode 100644
index 337bcf027..000000000
Binary files a/assets/images/3.0x/bitmap.png and /dev/null differ
diff --git a/assets/images/3.0x/cake_arrow.png b/assets/images/3.0x/cake_arrow.png
deleted file mode 100644
index b92ec35c0..000000000
Binary files a/assets/images/3.0x/cake_arrow.png and /dev/null differ
diff --git a/assets/images/3.0x/cake_logo.png b/assets/images/3.0x/cake_logo.png
deleted file mode 100644
index 87dd05ce2..000000000
Binary files a/assets/images/3.0x/cake_logo.png and /dev/null differ
diff --git a/assets/images/3.0x/china.png b/assets/images/3.0x/china.png
deleted file mode 100644
index fd0a75372..000000000
Binary files a/assets/images/3.0x/china.png and /dev/null differ
diff --git a/assets/images/3.0x/coins.png b/assets/images/3.0x/coins.png
deleted file mode 100644
index 86ea55ae9..000000000
Binary files a/assets/images/3.0x/coins.png and /dev/null differ
diff --git a/assets/images/3.0x/crypto_lock.png b/assets/images/3.0x/crypto_lock.png
deleted file mode 100644
index 51e04afde..000000000
Binary files a/assets/images/3.0x/crypto_lock.png and /dev/null differ
diff --git a/assets/images/3.0x/crypto_lock_light.png b/assets/images/3.0x/crypto_lock_light.png
deleted file mode 100644
index 9ec7964cf..000000000
Binary files a/assets/images/3.0x/crypto_lock_light.png and /dev/null differ
diff --git a/assets/images/3.0x/decred.png b/assets/images/3.0x/decred.png
deleted file mode 100644
index b2c9ac818..000000000
Binary files a/assets/images/3.0x/decred.png and /dev/null differ
diff --git a/assets/images/3.0x/decred_menu.png b/assets/images/3.0x/decred_menu.png
deleted file mode 100644
index e55b3fb5c..000000000
Binary files a/assets/images/3.0x/decred_menu.png and /dev/null differ
diff --git a/assets/images/3.0x/germany.png b/assets/images/3.0x/germany.png
deleted file mode 100644
index c01bacae9..000000000
Binary files a/assets/images/3.0x/germany.png and /dev/null differ
diff --git a/assets/images/3.0x/header.png b/assets/images/3.0x/header.png
deleted file mode 100644
index 9a86d241a..000000000
Binary files a/assets/images/3.0x/header.png and /dev/null differ
diff --git a/assets/images/3.0x/holland.png b/assets/images/3.0x/holland.png
deleted file mode 100644
index 14b47e1d6..000000000
Binary files a/assets/images/3.0x/holland.png and /dev/null differ
diff --git a/assets/images/3.0x/india.png b/assets/images/3.0x/india.png
deleted file mode 100644
index 3d80e2665..000000000
Binary files a/assets/images/3.0x/india.png and /dev/null differ
diff --git a/assets/images/3.0x/japan.png b/assets/images/3.0x/japan.png
deleted file mode 100644
index 9a9b487a2..000000000
Binary files a/assets/images/3.0x/japan.png and /dev/null differ
diff --git a/assets/images/3.0x/keysIco.png b/assets/images/3.0x/keysIco.png
deleted file mode 100644
index a44186dcc..000000000
Binary files a/assets/images/3.0x/keysIco.png and /dev/null differ
diff --git a/assets/images/3.0x/litecoin.png b/assets/images/3.0x/litecoin.png
deleted file mode 100644
index 56ca3f689..000000000
Binary files a/assets/images/3.0x/litecoin.png and /dev/null differ
diff --git a/assets/images/3.0x/menu_button.png b/assets/images/3.0x/menu_button.png
deleted file mode 100644
index 97f28ae94..000000000
Binary files a/assets/images/3.0x/menu_button.png and /dev/null differ
diff --git a/assets/images/3.0x/monero.png b/assets/images/3.0x/monero.png
deleted file mode 100644
index 94eed5046..000000000
Binary files a/assets/images/3.0x/monero.png and /dev/null differ
diff --git a/assets/images/3.0x/monero_menu.png b/assets/images/3.0x/monero_menu.png
deleted file mode 100644
index 7d81566f5..000000000
Binary files a/assets/images/3.0x/monero_menu.png and /dev/null differ
diff --git a/assets/images/3.0x/poland.png b/assets/images/3.0x/poland.png
deleted file mode 100644
index a345e23a5..000000000
Binary files a/assets/images/3.0x/poland.png and /dev/null differ
diff --git a/assets/images/3.0x/portugal.png b/assets/images/3.0x/portugal.png
deleted file mode 100644
index 0f2840e67..000000000
Binary files a/assets/images/3.0x/portugal.png and /dev/null differ
diff --git a/assets/images/3.0x/pre_seed_dark.png b/assets/images/3.0x/pre_seed_dark.png
deleted file mode 100755
index 632f2bb1e..000000000
Binary files a/assets/images/3.0x/pre_seed_dark.png and /dev/null differ
diff --git a/assets/images/3.0x/pre_seed_light.png b/assets/images/3.0x/pre_seed_light.png
deleted file mode 100755
index 329fce10b..000000000
Binary files a/assets/images/3.0x/pre_seed_light.png and /dev/null differ
diff --git a/assets/images/3.0x/restoreSeed.png b/assets/images/3.0x/restoreSeed.png
deleted file mode 100644
index 8fc5b1f14..000000000
Binary files a/assets/images/3.0x/restoreSeed.png and /dev/null differ
diff --git a/assets/images/3.0x/restore_keys.png b/assets/images/3.0x/restore_keys.png
deleted file mode 100644
index 1d7301275..000000000
Binary files a/assets/images/3.0x/restore_keys.png and /dev/null differ
diff --git a/assets/images/3.0x/restore_seed.png b/assets/images/3.0x/restore_seed.png
deleted file mode 100644
index de1a10bb7..000000000
Binary files a/assets/images/3.0x/restore_seed.png and /dev/null differ
diff --git a/assets/images/3.0x/restore_wallet_image.png b/assets/images/3.0x/restore_wallet_image.png
deleted file mode 100644
index 6a6fdd775..000000000
Binary files a/assets/images/3.0x/restore_wallet_image.png and /dev/null differ
diff --git a/assets/images/3.0x/russia.png b/assets/images/3.0x/russia.png
deleted file mode 100644
index 772606783..000000000
Binary files a/assets/images/3.0x/russia.png and /dev/null differ
diff --git a/assets/images/3.0x/seedIco.png b/assets/images/3.0x/seedIco.png
deleted file mode 100644
index 174a943b6..000000000
Binary files a/assets/images/3.0x/seedIco.png and /dev/null differ
diff --git a/assets/images/3.0x/seedKeys.png b/assets/images/3.0x/seedKeys.png
deleted file mode 100644
index 50b31c2e8..000000000
Binary files a/assets/images/3.0x/seedKeys.png and /dev/null differ
diff --git a/assets/images/3.0x/seed_image.png b/assets/images/3.0x/seed_image.png
deleted file mode 100644
index 0431af18d..000000000
Binary files a/assets/images/3.0x/seed_image.png and /dev/null differ
diff --git a/assets/images/3.0x/south_korea.png b/assets/images/3.0x/south_korea.png
deleted file mode 100644
index 3e0c889d5..000000000
Binary files a/assets/images/3.0x/south_korea.png and /dev/null differ
diff --git a/assets/images/3.0x/spain.png b/assets/images/3.0x/spain.png
deleted file mode 100644
index cf530865d..000000000
Binary files a/assets/images/3.0x/spain.png and /dev/null differ
diff --git a/assets/images/3.0x/usa.png b/assets/images/3.0x/usa.png
deleted file mode 100644
index 628094f0d..000000000
Binary files a/assets/images/3.0x/usa.png and /dev/null differ
diff --git a/assets/images/3.0x/wallet_name.png b/assets/images/3.0x/wallet_name.png
deleted file mode 100644
index c02d9ef04..000000000
Binary files a/assets/images/3.0x/wallet_name.png and /dev/null differ
diff --git a/assets/images/3.0x/wallet_name_light.png b/assets/images/3.0x/wallet_name_light.png
deleted file mode 100644
index 5fecf8f1b..000000000
Binary files a/assets/images/3.0x/wallet_name_light.png and /dev/null differ
diff --git a/assets/images/3.0x/wallet_type.png b/assets/images/3.0x/wallet_type.png
deleted file mode 100644
index 3c6341426..000000000
Binary files a/assets/images/3.0x/wallet_type.png and /dev/null differ
diff --git a/assets/images/3.0x/wallet_type_light.png b/assets/images/3.0x/wallet_type_light.png
deleted file mode 100644
index 5ece2804f..000000000
Binary files a/assets/images/3.0x/wallet_type_light.png and /dev/null differ
diff --git a/assets/images/3.0x/welcome.png b/assets/images/3.0x/welcome.png
deleted file mode 100644
index c939cf360..000000000
Binary files a/assets/images/3.0x/welcome.png and /dev/null differ
diff --git a/assets/images/3.0x/welcomeImg.png b/assets/images/3.0x/welcomeImg.png
deleted file mode 100644
index d78387d67..000000000
Binary files a/assets/images/3.0x/welcomeImg.png and /dev/null differ
diff --git a/assets/images/3.0x/welcome_light.png b/assets/images/3.0x/welcome_light.png
deleted file mode 100644
index 8b682ed70..000000000
Binary files a/assets/images/3.0x/welcome_light.png and /dev/null differ
diff --git a/assets/images/Twitter.png b/assets/images/Twitter.png
deleted file mode 100644
index 4821abfd3..000000000
Binary files a/assets/images/Twitter.png and /dev/null differ
diff --git a/assets/images/back_arrow.png b/assets/images/back_arrow.png
deleted file mode 100644
index 30e599b3f..000000000
Binary files a/assets/images/back_arrow.png and /dev/null differ
diff --git a/assets/images/back_arrow_dark_theme.png b/assets/images/back_arrow_dark_theme.png
deleted file mode 100644
index e78cf34c8..000000000
Binary files a/assets/images/back_arrow_dark_theme.png and /dev/null differ
diff --git a/assets/images/back_vector.png b/assets/images/back_vector.png
deleted file mode 100644
index 8717a3463..000000000
Binary files a/assets/images/back_vector.png and /dev/null differ
diff --git a/assets/images/backup.png b/assets/images/backup.png
deleted file mode 100644
index 665128ac3..000000000
Binary files a/assets/images/backup.png and /dev/null differ
diff --git a/assets/images/bch.png b/assets/images/bch.png
deleted file mode 100644
index 17872731f..000000000
Binary files a/assets/images/bch.png and /dev/null differ
diff --git a/assets/images/bch_icon.png b/assets/images/bch_icon.png
deleted file mode 100644
index d3d2ba8d8..000000000
Binary files a/assets/images/bch_icon.png and /dev/null differ
diff --git a/assets/images/bitcoin.png b/assets/images/bitcoin.png
deleted file mode 100644
index 1c30fa3a8..000000000
Binary files a/assets/images/bitcoin.png and /dev/null differ
diff --git a/assets/images/bitcoin_icon.png b/assets/images/bitcoin_icon.png
deleted file mode 100644
index 69211b96b..000000000
Binary files a/assets/images/bitcoin_icon.png and /dev/null differ
diff --git a/assets/images/bitcoin_menu.png b/assets/images/bitcoin_menu.png
deleted file mode 100644
index ed0ea0048..000000000
Binary files a/assets/images/bitcoin_menu.png and /dev/null differ
diff --git a/assets/images/bitmap.png b/assets/images/bitmap.png
deleted file mode 100644
index 525522b3f..000000000
Binary files a/assets/images/bitmap.png and /dev/null differ
diff --git a/assets/images/black_accent.svg b/assets/images/black_accent.svg
new file mode 100644
index 000000000..7e22d3b14
--- /dev/null
+++ b/assets/images/black_accent.svg
@@ -0,0 +1,13 @@
+
diff --git a/assets/images/bnb.png b/assets/images/bnb.png
deleted file mode 100644
index 45fe9ad93..000000000
Binary files a/assets/images/bnb.png and /dev/null differ
diff --git a/assets/images/btc.png b/assets/images/btc.png
deleted file mode 100644
index 7bcff6b04..000000000
Binary files a/assets/images/btc.png and /dev/null differ
diff --git a/assets/images/cake_arrow.png b/assets/images/cake_arrow.png
deleted file mode 100644
index 26648d373..000000000
Binary files a/assets/images/cake_arrow.png and /dev/null differ
diff --git a/assets/images/cakepay.png b/assets/images/cakepay.png
new file mode 100644
index 000000000..2d1c12c03
Binary files /dev/null and b/assets/images/cakepay.png differ
diff --git a/assets/images/crypto/bitcoin-cash.png b/assets/images/crypto/bitcoin-cash.png
new file mode 100644
index 000000000..ee02b610b
Binary files /dev/null and b/assets/images/crypto/bitcoin-cash.png differ
diff --git a/assets/images/crypto/bitcoin.png b/assets/images/crypto/bitcoin.png
new file mode 100644
index 000000000..7e88aa51d
Binary files /dev/null and b/assets/images/crypto/bitcoin.png differ
diff --git a/assets/images/crypto/dai.png b/assets/images/crypto/dai.png
new file mode 100644
index 000000000..29f7f5f7d
Binary files /dev/null and b/assets/images/crypto/dai.png differ
diff --git a/assets/images/crypto/decred.png b/assets/images/crypto/decred.png
new file mode 100644
index 000000000..a636dd416
Binary files /dev/null and b/assets/images/crypto/decred.png differ
diff --git a/assets/images/crypto/deuro.png b/assets/images/crypto/deuro.png
new file mode 100644
index 000000000..911823803
Binary files /dev/null and b/assets/images/crypto/deuro.png differ
diff --git a/assets/images/crypto/dogecoin.png b/assets/images/crypto/dogecoin.png
new file mode 100644
index 000000000..26f17fb31
Binary files /dev/null and b/assets/images/crypto/dogecoin.png differ
diff --git a/assets/images/crypto/ethereum.png b/assets/images/crypto/ethereum.png
new file mode 100644
index 000000000..41fee0665
Binary files /dev/null and b/assets/images/crypto/ethereum.png differ
diff --git a/assets/images/crypto/litecoin.png b/assets/images/crypto/litecoin.png
new file mode 100644
index 000000000..83bf1bd77
Binary files /dev/null and b/assets/images/crypto/litecoin.png differ
diff --git a/assets/images/crypto/monero.png b/assets/images/crypto/monero.png
new file mode 100644
index 000000000..1520b564f
Binary files /dev/null and b/assets/images/crypto/monero.png differ
diff --git a/assets/images/crypto/nano.png b/assets/images/crypto/nano.png
new file mode 100644
index 000000000..67c0f1e56
Binary files /dev/null and b/assets/images/crypto/nano.png differ
diff --git a/assets/images/crypto/polygon.png b/assets/images/crypto/polygon.png
new file mode 100644
index 000000000..db721f6e8
Binary files /dev/null and b/assets/images/crypto/polygon.png differ
diff --git a/assets/images/crypto/solana.png b/assets/images/crypto/solana.png
new file mode 100644
index 000000000..7b5fba5c7
Binary files /dev/null and b/assets/images/crypto/solana.png differ
diff --git a/assets/images/crypto/tether.png b/assets/images/crypto/tether.png
new file mode 100644
index 000000000..46115efbd
Binary files /dev/null and b/assets/images/crypto/tether.png differ
diff --git a/assets/images/crypto/tron.png b/assets/images/crypto/tron.png
new file mode 100644
index 000000000..08f181d9f
Binary files /dev/null and b/assets/images/crypto/tron.png differ
diff --git a/assets/images/crypto/usdc.png b/assets/images/crypto/usdc.png
new file mode 100644
index 000000000..f7cb798b6
Binary files /dev/null and b/assets/images/crypto/usdc.png differ
diff --git a/assets/images/crypto/wbtc.png b/assets/images/crypto/wbtc.png
new file mode 100644
index 000000000..236cb13b8
Binary files /dev/null and b/assets/images/crypto/wbtc.png differ
diff --git a/assets/images/crypto/wownero.png b/assets/images/crypto/wownero.png
new file mode 100644
index 000000000..54f3d0f69
Binary files /dev/null and b/assets/images/crypto/wownero.png differ
diff --git a/assets/images/crypto/zano.png b/assets/images/crypto/zano.png
new file mode 100644
index 000000000..1467c7f93
Binary files /dev/null and b/assets/images/crypto/zano.png differ
diff --git a/assets/images/crypto_lock.png b/assets/images/crypto_lock.png
deleted file mode 100644
index 89eadee6b..000000000
Binary files a/assets/images/crypto_lock.png and /dev/null differ
diff --git a/assets/images/dai.png b/assets/images/dai.png
deleted file mode 100644
index 698ffc48e..000000000
Binary files a/assets/images/dai.png and /dev/null differ
diff --git a/assets/images/dai_icon.png b/assets/images/dai_icon.png
index 9aaa95668..29f7f5f7d 100644
Binary files a/assets/images/dai_icon.png and b/assets/images/dai_icon.png differ
diff --git a/assets/images/dark.svg b/assets/images/dark.svg
new file mode 100644
index 000000000..20baf68fc
--- /dev/null
+++ b/assets/images/dark.svg
@@ -0,0 +1,13 @@
+
diff --git a/assets/images/dash.png b/assets/images/dash.png
deleted file mode 100644
index 0856db172..000000000
Binary files a/assets/images/dash.png and /dev/null differ
diff --git a/assets/images/dcr_icon.png b/assets/images/dcr_icon.png
deleted file mode 100644
index 757cd0388..000000000
Binary files a/assets/images/dcr_icon.png and /dev/null differ
diff --git a/assets/images/decred.png b/assets/images/decred.png
deleted file mode 100644
index 0b12f2ef0..000000000
Binary files a/assets/images/decred.png and /dev/null differ
diff --git a/assets/images/decred_icon.png b/assets/images/decred_icon.png
deleted file mode 100644
index 9391abc3d..000000000
Binary files a/assets/images/decred_icon.png and /dev/null differ
diff --git a/assets/images/decred_menu.png b/assets/images/decred_menu.png
deleted file mode 100644
index 5c67923c5..000000000
Binary files a/assets/images/decred_menu.png and /dev/null differ
diff --git a/assets/images/doge_icon.png b/assets/images/doge_icon.png
deleted file mode 100644
index b6292c16c..000000000
Binary files a/assets/images/doge_icon.png and /dev/null differ
diff --git a/assets/images/eth_icon.png b/assets/images/eth_icon.png
deleted file mode 100644
index c96f24caf..000000000
Binary files a/assets/images/eth_icon.png and /dev/null differ
diff --git a/assets/images/header.png b/assets/images/header.png
deleted file mode 100644
index a3e8169aa..000000000
Binary files a/assets/images/header.png and /dev/null differ
diff --git a/assets/images/light.svg b/assets/images/light.svg
new file mode 100644
index 000000000..183a13fd1
--- /dev/null
+++ b/assets/images/light.svg
@@ -0,0 +1,13 @@
+
diff --git a/assets/images/litecoin-ltc_icon.png b/assets/images/litecoin-ltc_icon.png
deleted file mode 100644
index a9f5606cb..000000000
Binary files a/assets/images/litecoin-ltc_icon.png and /dev/null differ
diff --git a/assets/images/litecoin.png b/assets/images/litecoin.png
deleted file mode 100644
index 53e0202ac..000000000
Binary files a/assets/images/litecoin.png and /dev/null differ
diff --git a/assets/images/litecoin_icon.png b/assets/images/litecoin_icon.png
deleted file mode 100644
index 9cc47b6fb..000000000
Binary files a/assets/images/litecoin_icon.png and /dev/null differ
diff --git a/assets/images/litecoin_img.png b/assets/images/litecoin_img.png
deleted file mode 100644
index 8bf55f7a4..000000000
Binary files a/assets/images/litecoin_img.png and /dev/null differ
diff --git a/assets/images/live_support.png b/assets/images/live_support.png
deleted file mode 100644
index 89ad61f45..000000000
Binary files a/assets/images/live_support.png and /dev/null differ
diff --git a/assets/images/matic_icon.png b/assets/images/matic_icon.png
deleted file mode 100644
index 7f5493343..000000000
Binary files a/assets/images/matic_icon.png and /dev/null differ
diff --git a/assets/images/monero_icon.png b/assets/images/monero_icon.png
deleted file mode 100644
index 7b6f74df6..000000000
Binary files a/assets/images/monero_icon.png and /dev/null differ
diff --git a/assets/images/monero_logo.png b/assets/images/monero_logo.png
deleted file mode 100644
index d1ebfc0d8..000000000
Binary files a/assets/images/monero_logo.png and /dev/null differ
diff --git a/assets/images/monero_menu.png b/assets/images/monero_menu.png
deleted file mode 100644
index 51b1e2240..000000000
Binary files a/assets/images/monero_menu.png and /dev/null differ
diff --git a/assets/images/more_links.png b/assets/images/more_links.png
deleted file mode 100644
index 97891f3ad..000000000
Binary files a/assets/images/more_links.png and /dev/null differ
diff --git a/assets/images/nano_icon.png b/assets/images/nano_icon.png
index 8937b8ed2..e961b0867 100644
Binary files a/assets/images/nano_icon.png and b/assets/images/nano_icon.png differ
diff --git a/assets/images/nanogpt.png b/assets/images/nanogpt.png
index 958400452..765271b27 100644
Binary files a/assets/images/nanogpt.png and b/assets/images/nanogpt.png differ
diff --git a/assets/images/pre_seed_dark.png b/assets/images/pre_seed_dark.png
deleted file mode 100755
index ed12c730a..000000000
Binary files a/assets/images/pre_seed_dark.png and /dev/null differ
diff --git a/assets/images/pre_seed_light.png b/assets/images/pre_seed_light.png
deleted file mode 100755
index bb95a6567..000000000
Binary files a/assets/images/pre_seed_light.png and /dev/null differ
diff --git a/assets/images/receive_icon.png b/assets/images/receive_icon.png
deleted file mode 100755
index 8701cc643..000000000
Binary files a/assets/images/receive_icon.png and /dev/null differ
diff --git a/assets/images/receive_icon_raw.png b/assets/images/receive_icon_raw.png
deleted file mode 100644
index 741ed4e4f..000000000
Binary files a/assets/images/receive_icon_raw.png and /dev/null differ
diff --git a/assets/images/red_badge_discount.png b/assets/images/red_badge_discount.png
deleted file mode 100644
index 4f5dc56a2..000000000
Binary files a/assets/images/red_badge_discount.png and /dev/null differ
diff --git a/assets/images/restoreSeed.png b/assets/images/restoreSeed.png
deleted file mode 100644
index a51ea1193..000000000
Binary files a/assets/images/restoreSeed.png and /dev/null differ
diff --git a/assets/images/restore_keys.png b/assets/images/restore_keys.png
deleted file mode 100644
index bbb7890f1..000000000
Binary files a/assets/images/restore_keys.png and /dev/null differ
diff --git a/assets/images/restore_seed.png b/assets/images/restore_seed.png
deleted file mode 100644
index 938cac4dd..000000000
Binary files a/assets/images/restore_seed.png and /dev/null differ
diff --git a/assets/images/restore_seeds.png b/assets/images/restore_seeds.png
new file mode 100644
index 000000000..9f3d14732
Binary files /dev/null and b/assets/images/restore_seeds.png differ
diff --git a/assets/images/restore_wallet_image.png b/assets/images/restore_wallet_image.png
deleted file mode 100644
index 9fee53f1d..000000000
Binary files a/assets/images/restore_wallet_image.png and /dev/null differ
diff --git a/assets/images/seedIco.png b/assets/images/seedIco.png
deleted file mode 100644
index d40fe1f2f..000000000
Binary files a/assets/images/seedIco.png and /dev/null differ
diff --git a/assets/images/seedKeys.png b/assets/images/seedKeys.png
deleted file mode 100644
index 7cdc42d3f..000000000
Binary files a/assets/images/seedKeys.png and /dev/null differ
diff --git a/assets/images/seed_verified.png b/assets/images/seed_verified.png
deleted file mode 100644
index e03706193..000000000
Binary files a/assets/images/seed_verified.png and /dev/null differ
diff --git a/assets/images/setup_2fa_img.png b/assets/images/setup_2fa_img.png
deleted file mode 100644
index ce6f0d733..000000000
Binary files a/assets/images/setup_2fa_img.png and /dev/null differ
diff --git a/assets/images/sol_icon.png b/assets/images/sol_icon.png
deleted file mode 100644
index c9a9f3b6a..000000000
Binary files a/assets/images/sol_icon.png and /dev/null differ
diff --git a/assets/images/trx_icon.png b/assets/images/trx_icon.png
deleted file mode 100644
index c5d2b45f1..000000000
Binary files a/assets/images/trx_icon.png and /dev/null differ
diff --git a/assets/images/usdc_icon.png b/assets/images/usdc_icon.png
index 283533b42..f7cb798b6 100644
Binary files a/assets/images/usdc_icon.png and b/assets/images/usdc_icon.png differ
diff --git a/assets/images/usdt.png b/assets/images/usdt.png
deleted file mode 100644
index c7f71194f..000000000
Binary files a/assets/images/usdt.png and /dev/null differ
diff --git a/assets/images/usdt_icon.png b/assets/images/usdt_icon.png
deleted file mode 100644
index c1bfa0f58..000000000
Binary files a/assets/images/usdt_icon.png and /dev/null differ
diff --git a/assets/images/usdtbsc_icon.png b/assets/images/usdtbsc_icon.png
deleted file mode 100644
index 9f2cda237..000000000
Binary files a/assets/images/usdtbsc_icon.png and /dev/null differ
diff --git a/assets/images/usdterc.png b/assets/images/usdterc.png
deleted file mode 100644
index 212b301b5..000000000
Binary files a/assets/images/usdterc.png and /dev/null differ
diff --git a/assets/images/usdterc20_icon.png b/assets/images/usdterc20_icon.png
index 63482a842..46115efbd 100644
Binary files a/assets/images/usdterc20_icon.png and b/assets/images/usdterc20_icon.png differ
diff --git a/assets/images/usdterc_icon.png b/assets/images/usdterc_icon.png
index e2e736a6a..46115efbd 100644
Binary files a/assets/images/usdterc_icon.png and b/assets/images/usdterc_icon.png differ
diff --git a/assets/images/usdttrc20_icon.png b/assets/images/usdttrc20_icon.png
deleted file mode 100644
index 4d3f15688..000000000
Binary files a/assets/images/usdttrc20_icon.png and /dev/null differ
diff --git a/assets/images/wallet_guides.png b/assets/images/wallet_guides.png
deleted file mode 100644
index 3f2d9f270..000000000
Binary files a/assets/images/wallet_guides.png and /dev/null differ
diff --git a/assets/images/wbtc_icon.png b/assets/images/wbtc_icon.png
index d836eb391..236cb13b8 100644
Binary files a/assets/images/wbtc_icon.png and b/assets/images/wbtc_icon.png differ
diff --git a/assets/images/wownero_icon.png b/assets/images/wownero_icon.png
deleted file mode 100644
index a3da77b9e..000000000
Binary files a/assets/images/wownero_icon.png and /dev/null differ
diff --git a/assets/images/wownero_menu.png b/assets/images/wownero_menu.png
deleted file mode 100644
index a3da77b9e..000000000
Binary files a/assets/images/wownero_menu.png and /dev/null differ
diff --git a/assets/images/xmr_btc.png b/assets/images/xmr_btc.png
deleted file mode 100644
index 858664265..000000000
Binary files a/assets/images/xmr_btc.png and /dev/null differ
diff --git a/assets/images/zano_bg_icon.png b/assets/images/zano_bg_icon.png
deleted file mode 100644
index 5ea593beb..000000000
Binary files a/assets/images/zano_bg_icon.png and /dev/null differ
diff --git a/assets/images/zano_icon.png b/assets/images/zano_icon.png
deleted file mode 100644
index fd48fd6a5..000000000
Binary files a/assets/images/zano_icon.png and /dev/null differ
diff --git a/cw_core/lib/crypto_currency.dart b/cw_core/lib/crypto_currency.dart
index 39e62b4b1..a5c2a8179 100644
--- a/cw_core/lib/crypto_currency.dart
+++ b/cw_core/lib/crypto_currency.dart
@@ -134,20 +134,20 @@ class CryptoCurrency extends EnumerableItem with Serializable implemen
];
// title, tag (if applicable), fullName (if unique), raw, name, iconPath
- static const xmr = CryptoCurrency(title: 'XMR', fullName: 'Monero', raw: 0, name: 'xmr', iconPath: 'assets/images/monero_icon.png', decimals: 12);
+ static const xmr = CryptoCurrency(title: 'XMR', fullName: 'Monero', raw: 0, name: 'xmr', iconPath: 'assets/images/crypto/monero.png', decimals: 12);
static const ada = CryptoCurrency(title: 'ADA', fullName: 'Cardano', raw: 1, name: 'ada', iconPath: 'assets/images/ada_icon.png', decimals: 6);
- static const bch = CryptoCurrency(title: 'BCH', fullName: 'Bitcoin Cash', raw: 2, name: 'bch', iconPath: 'assets/images/bch_icon.png', decimals: 8);
+ static const bch = CryptoCurrency(title: 'BCH', fullName: 'Bitcoin Cash', raw: 2, name: 'bch', iconPath: 'assets/images/crypto/bitcoin-cash.png', decimals: 8);
static const bnb = CryptoCurrency(title: 'BNB', tag: 'BSC', fullName: 'Binance Coin', raw: 3, name: 'bnb', iconPath: 'assets/images/bnb_icon.png', decimals: 8);
- static const btc = CryptoCurrency(title: 'BTC', fullName: 'Bitcoin', raw: 4, name: 'btc', iconPath: 'assets/images/btc.png', decimals: 8);
- static const dai = CryptoCurrency(title: 'DAI', tag: 'ETH', fullName: 'Dai', raw: 5, name: 'dai', iconPath: 'assets/images/dai_icon.png', decimals: 18);
+ static const btc = CryptoCurrency(title: 'BTC', fullName: 'Bitcoin', raw: 4, name: 'btc', iconPath: 'assets/images/crypto/bitcoin.png', decimals: 8);
+ static const dai = CryptoCurrency(title: 'DAI', tag: 'ETH', fullName: 'Dai', raw: 5, name: 'dai', iconPath: 'assets/images/crypto/dai.png', decimals: 18);
static const dash = CryptoCurrency(title: 'DASH', fullName: 'Dash', raw: 6, name: 'dash', iconPath: 'assets/images/dash_icon.png', decimals: 8);
static const eos = CryptoCurrency(title: 'EOS', fullName: 'EOS', raw: 7, name: 'eos', iconPath: 'assets/images/eos_icon.png', decimals: 4);
- static const eth = CryptoCurrency(title: 'ETH', fullName: 'Ethereum', raw: 8, name: 'eth', iconPath: 'assets/images/eth_icon.png', decimals: 18);
- static const ltc = CryptoCurrency(title: 'LTC', fullName: 'Litecoin', raw: 9, name: 'ltc', iconPath: 'assets/images/litecoin-ltc_icon.png', decimals: 8);
- static const nano = CryptoCurrency(title: 'XNO', fullName: 'Nano', raw: 10, name: 'xno', iconPath: 'assets/images/nano_icon.png', decimals: 30);
- static const trx = CryptoCurrency(title: 'TRX', fullName: 'TRON', raw: 11, name: 'trx', iconPath: 'assets/images/trx_icon.png', decimals: 6);
- static const usdt = CryptoCurrency(title: 'USDT', tag: 'OMNI', fullName: 'USDT Tether', raw: 12, name: 'usdt', iconPath: 'assets/images/usdt_icon.png', decimals: 6);
- static const usdterc20 = CryptoCurrency(title: 'USDT', tag: 'ETH', fullName: 'USDT Tether', raw: 13, name: 'usdterc20', iconPath: 'assets/images/usdterc20_icon.png', decimals: 6);
+ static const eth = CryptoCurrency(title: 'ETH', fullName: 'Ethereum', raw: 8, name: 'eth', iconPath: 'assets/images/crypto/ethereum.png', decimals: 18);
+ static const ltc = CryptoCurrency(title: 'LTC', fullName: 'Litecoin', raw: 9, name: 'ltc', iconPath: 'assets/images/crypto/litecoin.png', decimals: 8);
+ static const nano = CryptoCurrency(title: 'XNO', fullName: 'Nano', raw: 10, name: 'xno', iconPath: 'assets/images/crypto/nano.png', decimals: 30);
+ static const trx = CryptoCurrency(title: 'TRX', fullName: 'TRON', raw: 11, name: 'trx', iconPath: 'assets/images/crypto/tron.png', decimals: 6);
+ static const usdt = CryptoCurrency(title: 'USDT', tag: 'OMNI', fullName: 'USDT Tether', raw: 12, name: 'usdt', iconPath: 'assets/images/crypto/tether.png', decimals: 6);
+ static const usdterc20 = CryptoCurrency(title: 'USDT', tag: 'ETH', fullName: 'USDT Tether', raw: 13, name: 'usdterc20', iconPath: 'assets/images/crypto/tether.png', decimals: 6);
static const xlm = CryptoCurrency(title: 'XLM', fullName: 'Stellar', raw: 14, name: 'xlm', iconPath: 'assets/images/xlm_icon.png', decimals: 7);
static const xrp = CryptoCurrency(title: 'XRP', fullName: 'Ripple', raw: 15, name: 'xrp', iconPath: 'assets/images/xrp_icon.png', decimals: 6);
static const xhv = CryptoCurrency(title: 'XHV', fullName: 'Haven Protocol', raw: 16, name: 'xhv', iconPath: 'assets/images/xhv_logo.png', decimals: 12);
@@ -170,25 +170,25 @@ class CryptoCurrency extends EnumerableItem with Serializable implemen
static const avaxc = CryptoCurrency(title: 'AVAX', tag: 'AVAXC', fullName: 'Avalanche', raw: 31, name: 'avaxc', iconPath: 'assets/images/avaxc_icon.png', decimals: 9);
static const btt = CryptoCurrency(title: 'BTT', tag: 'ETH', fullName: 'BitTorrent', raw: 32, name: 'btt', iconPath: 'assets/images/btt_icon.png', decimals: 18);
static const bttc = CryptoCurrency(title: 'BTTC', tag: 'TRX', fullName: 'BitTorrent-NEW', raw: 33, name: 'bttc', iconPath: 'assets/images/btt_icon.png', decimals: 18);
- static const doge = CryptoCurrency(title: 'DOGE', fullName: 'Dogecoin', raw: 34, name: 'doge', iconPath: 'assets/images/doge_icon.png', decimals: 8);
+ static const doge = CryptoCurrency(title: 'DOGE', fullName: 'Dogecoin', raw: 34, name: 'doge', iconPath: 'assets/images/crypto/dogecoin.png', decimals: 8);
static const firo = CryptoCurrency(title: 'FIRO', raw: 35, name: 'firo', iconPath: 'assets/images/firo_icon.png', decimals: 8);
- static const usdttrc20 = CryptoCurrency(title: 'USDT', tag: 'TRX', fullName: 'USDT Tether', raw: 36, name: 'usdttrc20', iconPath: 'assets/images/usdttrc20_icon.png', decimals: 6);
+ static const usdttrc20 = CryptoCurrency(title: 'USDT', tag: 'TRX', fullName: 'USDT Tether', raw: 36, name: 'usdttrc20', iconPath: 'assets/images/crypto/tether.png', decimals: 6);
static const hbar = CryptoCurrency(title: 'HBAR', fullName: 'Hedera', raw: 37, name: 'hbar', iconPath: 'assets/images/hbar_icon.png', decimals: 8);
static const sc = CryptoCurrency(title: 'SC', fullName: 'Siacoin', raw: 38, name: 'sc', iconPath: 'assets/images/sc_icon.png', decimals: 16);
- static const sol = CryptoCurrency(title: 'SOL', fullName: 'Solana', raw: 39, name: 'sol', iconPath: 'assets/images/sol_icon.png', decimals: 9);
- static const usdc = CryptoCurrency(title: 'USDC', tag: 'ETH', fullName: 'USD Coin', raw: 40, name: 'usdc', iconPath: 'assets/images/usdc_icon.png', decimals: 6);
- static const usdcsol = CryptoCurrency(title: 'USDC', tag: 'SOL', fullName: 'USDC Coin', raw: 41, name: 'usdcsol', iconPath: 'assets/images/usdc_icon.png', decimals: 6);
+ static const sol = CryptoCurrency(title: 'SOL', fullName: 'Solana', raw: 39, name: 'sol', iconPath: 'assets/images/crypto/solana.png', decimals: 9);
+ static const usdc = CryptoCurrency(title: 'USDC', tag: 'ETH', fullName: 'USD Coin', raw: 40, name: 'usdc', iconPath: 'assets/images/crypto/usdc.png', decimals: 6);
+ static const usdcsol = CryptoCurrency(title: 'USDC', tag: 'SOL', fullName: 'USDC Coin', raw: 41, name: 'usdcsol', iconPath: 'assets/images/crypto/usdc.png', decimals: 6);
static const zaddr = CryptoCurrency(title: 'ZZEC', tag: 'ZEC', fullName: 'Shielded Zcash', raw: 42, name: 'zaddr', iconPath: 'assets/images/zec_icon.png', decimals: 8);
static const zec = CryptoCurrency(title: 'TZEC', tag: 'ZEC', fullName: 'Transparent Zcash', raw: 43, name: 'zec', iconPath: 'assets/images/zec_icon.png', decimals: 8);
static const zen = CryptoCurrency(title: 'ZEN', fullName: 'Horizen', raw: 44, name: 'zen', iconPath: 'assets/images/zen_icon.png', decimals: 8);
static const xvg = CryptoCurrency(title: 'XVG', fullName: 'Verge', raw: 45, name: 'xvg', iconPath: 'assets/images/xvg_icon.png', decimals: 8);
- static const usdcpoly = CryptoCurrency(title: 'USDC', tag: 'POL', fullName: 'USD Coin', raw: 46, name: 'usdcpoly', iconPath: 'assets/images/usdc_icon.png', decimals: 6);
- static const dcr = CryptoCurrency(title: 'DCR', fullName: 'Decred', raw: 47, name: 'dcr', iconPath: 'assets/images/dcr_icon.png', decimals: 8);
+ static const usdcpoly = CryptoCurrency(title: 'USDC', tag: 'POL', fullName: 'USD Coin', raw: 46, name: 'usdcpoly', iconPath: 'assets/images/crypto/usdc.png', decimals: 6);
+ static const dcr = CryptoCurrency(title: 'DCR', fullName: 'Decred', raw: 47, name: 'dcr', iconPath: 'assets/images/crypto/decred.png', decimals: 8);
static const kmd = CryptoCurrency(title: 'KMD', fullName: 'Komodo', raw: 48, name: 'kmd', iconPath: 'assets/images/kmd_icon.png', decimals: 8);
static const mana = CryptoCurrency(title: 'MANA', tag: 'ETH', fullName: 'Decentraland', raw: 49, name: 'mana', iconPath: 'assets/images/mana_icon.png', decimals: 18);
- static const maticpoly = CryptoCurrency(title: 'POL', tag: 'POL', fullName: 'Polygon', raw: 50, name: 'maticpoly', iconPath: 'assets/images/matic_icon.png', decimals: 18);
- static const matic = CryptoCurrency(title: 'MATIC', tag: 'ETH', fullName: 'Polygon', raw: 51, name: 'matic', iconPath: 'assets/images/matic_icon.png', decimals: 18);
+ static const maticpoly = CryptoCurrency(title: 'POL', tag: 'POL', fullName: 'Polygon', raw: 50, name: 'maticpoly', iconPath: 'assets/images/crypto/polygon.png', decimals: 18);
+ static const matic = CryptoCurrency(title: 'MATIC', tag: 'ETH', fullName: 'Polygon', raw: 51, name: 'matic', iconPath: 'assets/images/crypto/polygon.png', decimals: 18);
static const mkr = CryptoCurrency(title: 'MKR', tag: 'ETH', fullName: 'Maker', raw: 52, name: 'mkr', iconPath: 'assets/images/mkr_icon.png', decimals: 18);
static const near = CryptoCurrency(title: 'NEAR', fullName: 'NEAR Protocol', raw: 53, name: 'near', iconPath: 'assets/images/near_icon.png', decimals: 24);
static const oxt = CryptoCurrency(title: 'OXT', tag: 'ETH', fullName: 'Orchid', raw: 54, name: 'oxt', iconPath: 'assets/images/oxt_icon.png', decimals: 18);
@@ -199,7 +199,7 @@ class CryptoCurrency extends EnumerableItem with Serializable implemen
static const scrt = CryptoCurrency(title: 'SCRT', fullName: 'Secret Network', raw: 59, name: 'scrt', iconPath: 'assets/images/scrt_icon.png', decimals: 6);
static const uni = CryptoCurrency(title: 'UNI', tag: 'ETH', fullName: 'Uniswap', raw: 60, name: 'uni', iconPath: 'assets/images/uni_icon.png', decimals: 18);
static const stx = CryptoCurrency(title: 'STX', fullName: 'Stacks', raw: 61, name: 'stx', iconPath: 'assets/images/stx_icon.png', decimals: 8);
- static const btcln = CryptoCurrency(title: 'BTC', tag: 'LN', fullName: 'Bitcoin Lightning Network', raw: 62, name: 'btcln', iconPath: 'assets/images/btc.png', decimals: 8);
+ static const btcln = CryptoCurrency(title: 'BTC', tag: 'LN', fullName: 'Bitcoin Lightning Network', raw: 62, name: 'btcln', iconPath: 'assets/images/crypto/bitcoin.png', decimals: 8);
static const shib = CryptoCurrency(title: 'SHIB', tag: 'ETH', fullName: 'Shiba Inu', raw: 63, name: 'shib', iconPath: 'assets/images/shib_icon.png', decimals: 18);
static const aave = CryptoCurrency(title: 'AAVE', tag: 'ETH', fullName: 'Aave', raw: 64, name: 'aave', iconPath: 'assets/images/aave_icon.png', decimals: 18);
static const arb = CryptoCurrency(title: 'ARB', fullName: 'Arbitrum', raw: 65, name: 'arb', iconPath: 'assets/images/arb_icon.png', decimals: 18);
@@ -218,25 +218,25 @@ class CryptoCurrency extends EnumerableItem with Serializable implemen
static const pepe = CryptoCurrency(title: 'PEPE', tag: 'ETH', fullName: 'Pepe', raw: 78, name: 'pepe', iconPath: 'assets/images/pepe_icon.png', decimals: 18);
static const storj = CryptoCurrency(title: 'STORJ', tag: 'ETH', fullName: 'Storj', raw: 79, name: 'storj', iconPath: 'assets/images/storj_icon.png', decimals: 8);
static const tusd = CryptoCurrency(title: 'TUSD', tag: 'ETH', fullName: 'TrueUSD', raw: 80, name: 'tusd', iconPath: 'assets/images/tusd_icon.png', decimals: 18);
- static const wbtc = CryptoCurrency(title: 'WBTC', tag: 'ETH', fullName: 'Wrapped Bitcoin', raw: 81, name: 'wbtc', iconPath: 'assets/images/wbtc_icon.png', decimals: 8);
+ static const wbtc = CryptoCurrency(title: 'WBTC', tag: 'ETH', fullName: 'Wrapped Bitcoin', raw: 81, name: 'wbtc', iconPath: 'assets/images/crypto/wbtc.png', decimals: 8);
static const weth = CryptoCurrency(title: 'WETH', tag: 'ETH', fullName: 'Wrapped Ethereum', raw: 82, name: 'weth', iconPath: 'assets/images/weth_icon.png', decimals: 18);
static const zrx = CryptoCurrency(title: 'ZRX', tag: 'ETH', fullName: '0x Protocol', raw: 83, name: 'zrx', iconPath: 'assets/images/zrx_icon.png', decimals: 18);
static const dydx = CryptoCurrency(title: 'DYDX', tag: 'ETH', fullName: 'dYdX', raw: 84, name: 'dydx', iconPath: 'assets/images/dydx_icon.png', decimals: 18);
static const steth = CryptoCurrency(title: 'STETH', tag: 'ETH', fullName: 'Lido Staked Ethereum', raw: 85, name: 'steth', iconPath: 'assets/images/steth_icon.png', decimals: 18);
static const banano = CryptoCurrency(title: 'BAN', fullName: 'Banano', raw: 86, name: 'banano', iconPath: 'assets/images/nano_icon.png', decimals: 29);
- static const usdtPoly = CryptoCurrency(title: 'USDT', tag: 'POL', fullName: 'Tether USD (PoS)', raw: 87, name: 'usdtpoly', iconPath: 'assets/images/usdt_icon.png', decimals: 6);
- static const usdcEPoly = CryptoCurrency(title: 'USDC.E', tag: 'POL', fullName: 'USD Coin (PoS)', raw: 88, name: 'usdcepoly', iconPath: 'assets/images/usdc_icon.png', decimals: 6);
+ static const usdtPoly = CryptoCurrency(title: 'USDT', tag: 'POL', fullName: 'Tether USD (PoS)', raw: 87, name: 'usdtpoly', iconPath: 'assets/images/crypto/tether.png', decimals: 6);
+ static const usdcEPoly = CryptoCurrency(title: 'USDC.E', tag: 'POL', fullName: 'USD Coin (PoS)', raw: 88, name: 'usdcepoly', iconPath: 'assets/images/crypto/usdc.png', decimals: 6);
static const kaspa = CryptoCurrency(title: 'KAS', fullName: 'Kaspa', raw: 89, name: 'kas', iconPath: 'assets/images/kaspa_icon.png', decimals: 8);
static const digibyte = CryptoCurrency(title: 'DGB', fullName: 'DigiByte', raw: 90, name: 'dgb', iconPath: 'assets/images/digibyte.png', decimals: 8);
- static const usdtSol = CryptoCurrency(title: 'USDT', tag: 'SOL', fullName: 'USDT Tether', raw: 91, name: 'usdtsol', iconPath: 'assets/images/usdt_icon.png', decimals: 6);
- static const usdcTrc20 = CryptoCurrency(title: 'USDC', tag: 'TRX', fullName: 'USDC Coin', raw: 92, name: 'usdctrc20', iconPath: 'assets/images/usdc_icon.png', decimals: 6);
+ static const usdtSol = CryptoCurrency(title: 'USDT', tag: 'SOL', fullName: 'USDT Tether', raw: 91, name: 'usdtsol', iconPath: 'assets/images/crypto/tether.png', decimals: 6);
+ static const usdcTrc20 = CryptoCurrency(title: 'USDC', tag: 'TRX', fullName: 'USDC Coin', raw: 92, name: 'usdctrc20', iconPath: 'assets/images/crypto/usdc.png', decimals: 6);
static const tbtc = CryptoCurrency(title: 'tBTC', fullName: 'Testnet Bitcoin', raw: 93, name: 'tbtc', iconPath: 'assets/images/tbtc.png', decimals: 8);
- static const wow = CryptoCurrency(title: 'WOW', fullName: 'Wownero', raw: 94, name: 'wow', iconPath: 'assets/images/wownero_icon.png', decimals: 11);
+ static const wow = CryptoCurrency(title: 'WOW', fullName: 'Wownero', raw: 94, name: 'wow', iconPath: 'assets/images/crypto/wownero.png', decimals: 11);
static const ton = CryptoCurrency(title: 'TON', fullName: 'Toncoin', raw: 95, name: 'ton', iconPath: 'assets/images/ton_icon.png', decimals: 8);
- static const zano = CryptoCurrency(title: 'ZANO', tag: 'ZANO', fullName: 'Zano', raw: 96, name: 'zano', iconPath: 'assets/images/zano_icon.png', decimals: 12);
+ static const zano = CryptoCurrency(title: 'ZANO', tag: 'ZANO', fullName: 'Zano', raw: 96, name: 'zano', iconPath: 'assets/images/crypto/zano.png', decimals: 12);
static const flip = CryptoCurrency(title: 'FLIP', tag: 'ETH', fullName: 'Chainflip', raw: 97, name: 'flip', iconPath: 'assets/images/flip_icon.png', decimals: 18);
static const deuro = CryptoCurrency(title: 'DEURO', tag: 'ETH', fullName: 'Decentralized Euro', raw: 98, name: 'deuro', iconPath: 'assets/images/deuro_icon.png', decimals: 18);
- static const usdtbsc = CryptoCurrency(title: 'USDT', tag: 'BSC', fullName: 'USDT Binance coin', raw: 99, name: 'usdtbsc', iconPath: 'assets/images/usdtbsc_icon.png', decimals: 18);
+ static const usdtbsc = CryptoCurrency(title: 'USDT', tag: 'BSC', fullName: 'USDT Binance coin', raw: 99, name: 'usdtbsc', iconPath: 'assets/images/crypto/tether.png', decimals: 18);
static const ndeps = CryptoCurrency(title: 'NDEPS', tag: 'ETH', fullName: 'Native Decentralized Euro Protocol Share', raw: 100, name: 'ndeps', iconPath: 'assets/images/ndeps_icon.png', decimals: 18);
static const deps = CryptoCurrency(title: 'DEPS', tag: 'ETH', fullName: 'Decentralized Euro Protocol Share', raw: 101, name: 'deps', iconPath: 'assets/images/deps_icon.png', decimals: 18);
static const kbtc = CryptoCurrency(title: 'KBTC', tag: 'ETH', fullName: 'Kraken Wrapped Bitcoin', raw: 102, name: 'kbtc', iconPath: 'assets/images/kbtc_icon.png', decimals: 8);
diff --git a/lib/cake_pay/src/cards/cake_pay_buy_card_page.dart b/lib/cake_pay/src/cards/cake_pay_buy_card_page.dart
index 1d53f9b4b..1d24a5ad4 100644
--- a/lib/cake_pay/src/cards/cake_pay_buy_card_page.dart
+++ b/lib/cake_pay/src/cards/cake_pay_buy_card_page.dart
@@ -39,9 +39,8 @@ import 'package:keyboard_actions/keyboard_actions.dart';
import 'package:mobx/mobx.dart';
class CakePayBuyCardPage extends BasePage {
- CakePayBuyCardPage(
- this.cakePayBuyCardViewModel
- ) : _sendViewModel = cakePayBuyCardViewModel.sendViewModel,
+ CakePayBuyCardPage(this.cakePayBuyCardViewModel)
+ : _sendViewModel = cakePayBuyCardViewModel.sendViewModel,
_amountFieldFocus = FocusNode(),
_amountController = TextEditingController(),
_quantityFieldFocus = FocusNode(),
@@ -303,7 +302,8 @@ class CakePayBuyCardPage extends BasePage {
methods.length <= 1 || selected == null
? const SizedBox.shrink()
: _buildPaymentMethodWidget(methods, selected),
- if (_sendViewModel.walletType == WalletType.litecoin && _sendViewModel.isMwebEnabled)
+ if (_sendViewModel.walletType == WalletType.litecoin &&
+ _sendViewModel.isMwebEnabled)
Observer(
builder: (_) => Padding(
padding: EdgeInsets.only(top: 10, bottom: 0, right: 20, left: 20),
@@ -323,8 +323,7 @@ class CakePayBuyCardPage extends BasePage {
captionColor: Theme.of(context).colorScheme.onSurfaceVariant,
borderColor: Theme.of(context).colorScheme.primary,
iconColor: Theme.of(context).colorScheme.primary,
- value:
- _sendViewModel.coinTypeToSpendFrom == UnspentCoinType.any,
+ value: _sendViewModel.coinTypeToSpendFrom == UnspentCoinType.any,
onChanged: (bool? value) {
_sendViewModel.setAllowMwebCoins(value ?? false);
},
@@ -351,9 +350,8 @@ class CakePayBuyCardPage extends BasePage {
text: '(Dev) Simulate Purchasing Gift Card',
isDisabled: !cakePayBuyCardViewModel.isAmountSufficient ||
cakePayBuyCardViewModel.isPurchasing,
- isLoading:
- _sendViewModel.state is IsExecutingState ||
- cakePayBuyCardViewModel.isPurchasing,
+ isLoading: _sendViewModel.state is IsExecutingState ||
+ cakePayBuyCardViewModel.isPurchasing,
color: Theme.of(context).colorScheme.primary,
textColor: Theme.of(context).colorScheme.onPrimary,
),
@@ -600,7 +598,7 @@ class CakePayBuyCardPage extends BasePage {
profileName: order?.cards.first.cardName ?? 'Cake Pay',
profileImageUrl: order?.cards.first.cardImagePath ?? '',
),
- fiatAmount: '${order?.totalReceiveAmount}',
+ fiatAmount: '${order?.totalReceiveAmount}',
))
.toList();
@@ -613,7 +611,6 @@ class CakePayBuyCardPage extends BasePage {
return ConfirmSendingBottomSheet(
key: ValueKey('cake_pay_buy_page_confirm_sending_dialog_key'),
titleText: S.of(bottomSheetContext).confirm_transaction,
- currentTheme: currentTheme,
cakePayBuyCardViewModel: cakePayBuyCardViewModel,
paymentId: S.of(bottomSheetContext).payment_id,
paymentIdValue: cakePayBuyCardViewModel.order?.orderId,
@@ -627,7 +624,7 @@ class CakePayBuyCardPage extends BasePage {
fiatAmountValue: _sendViewModel.pendingTransactionFiatAmountFormatted,
fee: S.of(bottomSheetContext).send_fee,
feeValue: _sendViewModel.pendingTransaction!.feeFormatted,
- feeFiatAmount:_sendViewModel.pendingTransactionFeeFiatAmountFormatted,
+ feeFiatAmount: _sendViewModel.pendingTransactionFeeFiatAmountFormatted,
outputs: displayingOutputs,
footerType: FooterType.slideActionButton,
slideActionButtonText:
@@ -732,7 +729,6 @@ class CakePayBuyCardPage extends BasePage {
context: context,
isDismissible: false,
builder: (BuildContext bottomSheetContext) => InfoBottomSheet(
- currentTheme: currentTheme,
footerType: FooterType.singleActionButton,
titleText: S.of(bottomSheetContext).proceed_on_device,
contentImage: 'assets/images/hardware_wallet/ledger_nano_x.png',
diff --git a/lib/cake_pay/src/cards/cake_pay_cards_page.dart b/lib/cake_pay/src/cards/cake_pay_cards_page.dart
index adc850f55..cee2ea240 100644
--- a/lib/cake_pay/src/cards/cake_pay_cards_page.dart
+++ b/lib/cake_pay/src/cards/cake_pay_cards_page.dart
@@ -10,13 +10,10 @@ import 'package:cake_wallet/cake_pay/src/widgets/card_item.dart';
import 'package:cake_wallet/src/screens/dashboard/widgets/filter_widget.dart';
import 'package:cake_wallet/src/widgets/bottom_sheet/base_bottom_sheet_widget.dart';
import 'package:cake_wallet/src/widgets/bottom_sheet/cake_pay_card_info_bottom_sheet_widget.dart';
-import 'package:cake_wallet/src/widgets/cake_scrollbar.dart';
import 'package:cake_wallet/src/widgets/gradient_background.dart';
import 'package:cake_wallet/src/widgets/picker.dart';
import 'package:cake_wallet/src/widgets/tab_view_wrapper_widget.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
import 'package:cake_wallet/typography.dart';
-import 'package:cake_wallet/utils/debounce.dart';
import 'package:cake_wallet/utils/feature_flag.dart';
import 'package:cake_wallet/utils/responsive_layout_util.dart';
import 'package:cake_wallet/utils/show_pop_up.dart';
@@ -94,10 +91,7 @@ class CakePayCardsPage extends BasePage {
@override
Widget body(BuildContext context) {
- return CakePayCardsPageBody(
- cardsListViewModel: _cardsListViewModel,
- currentTheme: currentTheme,
- titleColor: titleColor);
+ return CakePayCardsPageBody(cardsListViewModel: _cardsListViewModel, titleColor: titleColor);
}
}
@@ -105,12 +99,10 @@ class CakePayCardsPageBody extends StatefulWidget {
const CakePayCardsPageBody({
super.key,
required CakePayCardsListViewModel cardsListViewModel,
- required this.currentTheme,
required this.titleColor,
}) : _cardsListViewModel = cardsListViewModel;
final CakePayCardsListViewModel _cardsListViewModel;
- final MaterialThemeBase currentTheme;
final Color? Function(BuildContext) titleColor;
@override
@@ -188,8 +180,8 @@ class _CakePayCardsPageBodyState extends State {
],
views: [
_MyCardsTab(
- cardsListViewModel: widget._cardsListViewModel,
- currentTheme: widget.currentTheme),
+ cardsListViewModel: widget._cardsListViewModel,
+ ),
_ShopTab(cardsListViewModel: widget._cardsListViewModel)
]),
)
@@ -258,10 +250,9 @@ class _TrailingIcon extends StatelessWidget {
}
class _MyCardsTab extends StatefulWidget {
- const _MyCardsTab({required this.cardsListViewModel, required this.currentTheme});
+ const _MyCardsTab({required this.cardsListViewModel});
final CakePayCardsListViewModel cardsListViewModel;
- final MaterialThemeBase currentTheme;
@override
State<_MyCardsTab> createState() => _MyCardsTabState();
@@ -322,18 +313,20 @@ class _MyCardsTabState extends State<_MyCardsTab> {
logoUrl: card.cardImageUrl,
title: card.name,
subTitle: '\$100',
- onTap: () => _showCardInfoBottomSheet(context, card, widget.currentTheme),
+ onTap: () => _showCardInfoBottomSheet(context, card),
);
},
),
],
);
- return showThumb ? Scrollbar(
- key: ValueKey('cake_pay_my_cards_tab_scrollbar_key'),
- thumbVisibility: true,
- trackVisibility: true,
- child: userCardsList,
- ) : userCardsList;
+ return showThumb
+ ? Scrollbar(
+ key: ValueKey('cake_pay_my_cards_tab_scrollbar_key'),
+ thumbVisibility: true,
+ trackVisibility: true,
+ child: userCardsList,
+ )
+ : userCardsList;
}),
),
],
@@ -342,8 +335,7 @@ class _MyCardsTabState extends State<_MyCardsTab> {
}
}
-Future _showCardInfoBottomSheet(
- BuildContext context, CakePayCard card, MaterialThemeBase currentTheme) async {
+Future _showCardInfoBottomSheet(BuildContext context, CakePayCard card) async {
bool isReloadable = false; // TODO: replace with real logic
if (card.name.toLowerCase().contains('prepaid')) {
isReloadable = true;
@@ -360,7 +352,6 @@ Future _showCardInfoBottomSheet(
titleText: 'Reloadable Card',
balance: '100 USD',
howToUse: card.howToUse,
- currentTheme: currentTheme,
footerType: FooterType.doubleActionButton,
applyBoxShadow: true,
contentImage: card.cardImageUrl,
@@ -376,7 +367,6 @@ Future _showCardInfoBottomSheet(
titleText: card.name,
balance: '500 USD',
howToUse: card.howToUse,
- currentTheme: currentTheme,
footerType: FooterType.singleActionButton,
applyBoxShadow: true,
contentImage: card.cardImageUrl,
@@ -400,7 +390,6 @@ class _ShopTab extends StatefulWidget {
class _ShopTabState extends State<_ShopTab> {
late final ScrollController _scroll;
-
@override
void initState() {
super.initState();
@@ -466,8 +455,7 @@ class _ShopTabState extends State<_ShopTab> {
return const _Loading();
}
- if (vendors.isEmpty)
- return Center(child: Text(S.of(context).no_cards_found));
+ if (vendors.isEmpty) return Center(child: Text(S.of(context).no_cards_found));
final loadingMore = viewModel.isLoadingNextPage;
final showThumb = vendors.length > 3;
diff --git a/lib/di.dart b/lib/di.dart
index 61d478a59..3587d1712 100644
--- a/lib/di.dart
+++ b/lib/di.dart
@@ -1169,7 +1169,6 @@ Future setup({
getIt.registerFactoryParam(
(paymentFlowResult, _) => SwapConfirmationBottomSheet(
paymentFlowResult: paymentFlowResult,
- currentTheme: getIt.get().themeStore.currentTheme,
exchangeViewModel: getIt.get(),
authService: getIt.get(),
),
@@ -1177,7 +1176,6 @@ Future setup({
getIt.registerFactory(
() => SwapDetailsBottomSheet(
- currentTheme: getIt.get().themeStore.currentTheme,
exchangeTradeViewModel: getIt.get(),
),
);
diff --git a/lib/entities/preferences_key.dart b/lib/entities/preferences_key.dart
index 36022a929..b607ce7ed 100644
--- a/lib/entities/preferences_key.dart
+++ b/lib/entities/preferences_key.dart
@@ -37,6 +37,9 @@ class PreferencesKey {
static const exchangeStatusKey = 'exchange_status';
static const currentTheme = 'current_theme';
static const themeMode = 'theme_mode';
+ static const blackThemeOled = 'black_theme_oled_enabled';
+ static const savedDarkTheme = 'saved_dark_theme';
+ static const savedLightTheme = 'saved_light_theme';
static const displayActionListModeKey = 'display_list_mode';
static const currentPinLength = 'current_pin_length';
static const currentLanguageCode = 'language_code';
diff --git a/lib/nostr/nostr_api.dart b/lib/nostr/nostr_api.dart
index be59f0eba..8d9164e57 100644
--- a/lib/nostr/nostr_api.dart
+++ b/lib/nostr/nostr_api.dart
@@ -29,7 +29,10 @@ class NostrProfileHandler {
}
static Future processRelays(
- BuildContext context, ProfilePointer profile, String nip05Address) async {
+ BuildContext context,
+ ProfilePointer profile,
+ String nip05Address,
+ ) async {
String userDomain = _extractDomain(nip05Address);
const int metaData = 0;
@@ -45,7 +48,8 @@ class NostrProfileHandler {
}
await _showErrorDialog(context, S.of(context).no_relays, S.of(context).no_relay_on_domain);
- String? chosenRelayUrl = await _showRelayChoiceDialog(context, profile.relays ?? []);
+ String? chosenRelayUrl =
+ await _showRelayChoiceDialog(context, profile.relays ?? []);
if (chosenRelayUrl != null) {
final userData = await _fetchInfoFromRelay(chosenRelayUrl, profile.pubkey, [metaData]);
if (userData != null) {
@@ -121,7 +125,10 @@ class NostrProfileHandler {
}
}
- static Future _showRelayChoiceDialog(BuildContext context, List relays) async {
+ static Future _showRelayChoiceDialog(
+ BuildContext context,
+ List relays,
+ ) async {
String? selectedRelay;
if (context.mounted) {
diff --git a/lib/src/screens/base_page.dart b/lib/src/screens/base_page.dart
index 149598d62..5adf565e0 100644
--- a/lib/src/screens/base_page.dart
+++ b/lib/src/screens/base_page.dart
@@ -72,7 +72,7 @@ abstract class BasePage extends StatelessWidget {
Widget backButton(BuildContext context) => Icon(
Icons.arrow_back_ios,
- color: pageIconColor(context),
+ color: Theme.of(context).colorScheme.primary,
size: 16,
);
diff --git a/lib/src/screens/buy/buy_sell_page.dart b/lib/src/screens/buy/buy_sell_page.dart
index c14df4d50..af29d02b2 100644
--- a/lib/src/screens/buy/buy_sell_page.dart
+++ b/lib/src/screens/buy/buy_sell_page.dart
@@ -78,11 +78,10 @@ class BuySellPage extends BasePage {
Widget? leading(BuildContext context) {
final _backButton = Icon(
Icons.arrow_back_ios,
- color: Theme.of(context).colorScheme.onSurface,
+ color: Theme.of(context).colorScheme.primary,
size: 16,
);
- final _closeButton =
- buySellViewModel.isDarkTheme ? closeButtonImageDarkTheme : closeButtonImage;
+ final _closeButton = currentTheme.isDark ? closeButtonImageDarkTheme : closeButtonImage;
bool isMobileView = responsiveLayoutUtil.shouldRenderMobileUI;
@@ -211,7 +210,7 @@ class BuySellPage extends BasePage {
borderRadius: 30,
padding: EdgeInsets.symmetric(horizontal: 24, vertical: 8),
leadingIcon: Icons.arrow_forward_ios,
- isDarkTheme: buySellViewModel.isDarkTheme);
+ isDarkTheme: currentTheme.isDark);
}
if (buySellViewModel.paymentMethodState is PaymentMethodFailed) {
return OptionTilePlaceholder(errorText: 'No payment methods available', borderRadius: 30);
@@ -225,7 +224,7 @@ class BuySellPage extends BasePage {
title: selectedPaymentMethod.title,
onPressed: () => _pickPaymentMethod(context),
leadingIcon: Icons.arrow_forward_ios,
- isLightMode: !buySellViewModel.isDarkTheme,
+ isLightMode: !currentTheme.isDark,
borderRadius: 30,
padding: EdgeInsets.symmetric(horizontal: 24, vertical: 8),
titleTextStyle: Theme.of(context).textTheme.titleMedium?.copyWith(
@@ -321,8 +320,8 @@ class BuySellPage extends BasePage {
_cryptoAddressFocus.addListener(() async {
if (!_cryptoAddressFocus.hasFocus && cryptoAddressController.text.isNotEmpty) {
final domain = cryptoAddressController.text;
- buySellViewModel.cryptoCurrencyAddress =
- await fetchParsedAddress(context, domain, buySellViewModel.cryptoCurrency);
+ buySellViewModel.cryptoCurrencyAddress = await fetchParsedAddress(
+ context, domain, buySellViewModel.cryptoCurrency);
}
});
@@ -404,7 +403,7 @@ class BuySellPage extends BasePage {
onCurrencySelected: (currency) => buySellViewModel.changeFiatCurrency(currency: currency),
imageArrow: Image.asset(
'assets/images/arrow_bottom_purple_icon.png',
- color: Theme.of(context).colorScheme.onSurface,
+ color: Theme.of(context).colorScheme.primary,
height: 8,
),
currencyButtonColor: Colors.transparent,
@@ -441,7 +440,7 @@ class BuySellPage extends BasePage {
onCurrencySelected: (currency) => buySellViewModel.changeCryptoCurrency(currency: currency),
imageArrow: Image.asset(
'assets/images/arrow_bottom_cake_green.png',
- color: Theme.of(context).colorScheme.onSurface,
+ color: Theme.of(context).colorScheme.primary,
height: 8,
),
currencyButtonColor: Colors.transparent,
@@ -508,8 +507,12 @@ class BuySellPage extends BasePage {
}
Future fetchParsedAddress(
- BuildContext context, String domain, CryptoCurrency currency) async {
- final parsedAddress = await getIt.get().resolve(context, domain, currency);
+ BuildContext context,
+ String domain,
+ CryptoCurrency currency,
+ ) async {
+ final parsedAddress =
+ await getIt.get().resolve(context, domain, currency);
final address = await extractAddressFromParsed(context, parsedAddress);
return address;
}
diff --git a/lib/src/screens/connect_device/connect_device_page.dart b/lib/src/screens/connect_device/connect_device_page.dart
index 784a50195..7bde27434 100644
--- a/lib/src/screens/connect_device/connect_device_page.dart
+++ b/lib/src/screens/connect_device/connect_device_page.dart
@@ -316,7 +316,6 @@ class ConnectDevicePageBodyState extends State {
isScrollControlled: true,
builder: (BuildContext bottomSheetContext) => InfoStepsBottomSheet(
titleText: S.of(context).how_to_connect,
- currentTheme: widget.currentTheme,
steps: [
InfoStep('${S.of(context).step} 1', S.of(context).connect_hw_info_step_1),
InfoStep('${S.of(context).step} 2', S.of(context).connect_hw_info_step_2),
diff --git a/lib/src/screens/connect_device/monero_hardware_wallet_options_page.dart b/lib/src/screens/connect_device/monero_hardware_wallet_options_page.dart
index d73d910f2..a129d6f65 100644
--- a/lib/src/screens/connect_device/monero_hardware_wallet_options_page.dart
+++ b/lib/src/screens/connect_device/monero_hardware_wallet_options_page.dart
@@ -31,7 +31,7 @@ class _MoneroHardwareWalletOptionsForm extends StatefulWidget {
const _MoneroHardwareWalletOptionsForm(this._walletHardwareRestoreVM);
final WalletHardwareRestoreViewModel _walletHardwareRestoreVM;
-
+
@override
_MoneroHardwareWalletOptionsFormState createState() =>
_MoneroHardwareWalletOptionsFormState(_walletHardwareRestoreVM);
diff --git a/lib/src/screens/connect_device/select_device_manufacturer_page.dart b/lib/src/screens/connect_device/select_device_manufacturer_page.dart
index b1192ac43..920e8e77b 100644
--- a/lib/src/screens/connect_device/select_device_manufacturer_page.dart
+++ b/lib/src/screens/connect_device/select_device_manufacturer_page.dart
@@ -109,7 +109,6 @@ class SelectDeviceManufacturerPage extends BasePage {
arguments: [manufacturer.hardwareWalletType]);
}
},
- isDarkTheme: currentTheme.isDark,
),
),
),
@@ -127,7 +126,6 @@ class SelectDeviceManufacturerPage extends BasePage {
onPressed: () =>
Fluttertoast.showToast(msg: 'One more tap and it might work'),
// Ester egg
- isDarkTheme: currentTheme.isDark,
isUnavailable: true,
),
),
diff --git a/lib/src/screens/connect_device/widgets/manufacturer_option_tile.dart b/lib/src/screens/connect_device/widgets/manufacturer_option_tile.dart
index 6e49ae9d4..235d70c2a 100644
--- a/lib/src/screens/connect_device/widgets/manufacturer_option_tile.dart
+++ b/lib/src/screens/connect_device/widgets/manufacturer_option_tile.dart
@@ -1,11 +1,10 @@
-import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/core/theme_extension.dart';
import 'package:flutter/material.dart';
class ManufacturerOptionTile extends StatelessWidget {
const ManufacturerOptionTile({
required this.onPressed,
required this.image,
- required this.isDarkTheme,
this.tag,
this.isUnavailable = false,
});
@@ -14,7 +13,6 @@ class ManufacturerOptionTile extends StatelessWidget {
final Widget image;
final String? tag;
final bool isUnavailable;
- final bool isDarkTheme;
@override
Widget build(BuildContext context) => GestureDetector(
@@ -28,12 +26,8 @@ class ManufacturerOptionTile extends StatelessWidget {
borderRadius: BorderRadius.circular(12),
gradient: LinearGradient(
colors: [
- isDarkTheme
- ? CustomThemeColors.cardGradientColorPrimaryDark
- : CustomThemeColors.cardGradientColorPrimaryLight,
- isDarkTheme
- ? CustomThemeColors.cardGradientColorSecondaryDark
- : CustomThemeColors.cardGradientColorSecondaryLight,
+ context.customColors.cardGradientColorPrimary,
+ context.customColors.cardGradientColorSecondary,
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
diff --git a/lib/src/screens/contact/contact_page.dart b/lib/src/screens/contact/contact_page.dart
index 2b54736cc..1cc030fa0 100644
--- a/lib/src/screens/contact/contact_page.dart
+++ b/lib/src/screens/contact/contact_page.dart
@@ -144,13 +144,14 @@ class ContactPage extends BasePage {
void _presentCurrencyPicker(BuildContext context) {
showPopUp(
builder: (_) => CurrencyPicker(
- selectedAtIndex: contactViewModel.currency != null
- ? contactViewModel.currencies.indexOf(contactViewModel.currency!)
- : -1,
- items: contactViewModel.currencies,
- title: S.of(context).please_select,
- hintText: S.of(context).search_currency,
- onItemSelected: (Currency item) => contactViewModel.currency = item as CryptoCurrency),
+ selectedAtIndex: contactViewModel.currency != null
+ ? contactViewModel.currencies.indexOf(contactViewModel.currency!)
+ : -1,
+ items: contactViewModel.currencies,
+ title: S.of(context).please_select,
+ hintText: S.of(context).search_currency,
+ onItemSelected: (Currency item) => contactViewModel.currency = item as CryptoCurrency,
+ ),
context: context,
);
}
diff --git a/lib/src/screens/dashboard/dashboard_page.dart b/lib/src/screens/dashboard/dashboard_page.dart
index 98cb2f2db..107024a77 100644
--- a/lib/src/screens/dashboard/dashboard_page.dart
+++ b/lib/src/screens/dashboard/dashboard_page.dart
@@ -174,7 +174,7 @@ class _DashboardPageView extends BasePage {
label: S.of(context).wallet_menu,
child: SvgPicture.asset(
'assets/images/menu.svg',
- color: Theme.of(context).colorScheme.onSurface,
+ color: Theme.of(context).colorScheme.primary,
),
),
),
@@ -262,7 +262,6 @@ class _DashboardPageView extends BasePage {
),
NavigationDock(
dashboardViewModel: dashboardViewModel,
- currentTheme: currentTheme,
)
],
),
diff --git a/lib/src/screens/dashboard/desktop_widgets/desktop_wallet_selection_dropdown.dart b/lib/src/screens/dashboard/desktop_widgets/desktop_wallet_selection_dropdown.dart
index 74e757068..a83f21234 100644
--- a/lib/src/screens/dashboard/desktop_widgets/desktop_wallet_selection_dropdown.dart
+++ b/lib/src/screens/dashboard/desktop_widgets/desktop_wallet_selection_dropdown.dart
@@ -30,22 +30,22 @@ class DesktopWalletSelectionDropDown extends StatefulWidget {
}
class _DesktopWalletSelectionDropDownState extends State {
- final moneroIcon = Image.asset('assets/images/monero_logo.png', height: 24, width: 24);
- final bitcoinIcon = Image.asset('assets/images/bitcoin.png', height: 24, width: 24);
+ final moneroIcon = Image.asset('assets/images/crypto/monero.png', height: 24, width: 24);
+ final bitcoinIcon = Image.asset('assets/images/crypto/bitcoin.png', height: 24, width: 24);
final tBitcoinIcon = Image.asset('assets/images/tbtc.png', height: 24, width: 24);
- final litecoinIcon = Image.asset('assets/images/litecoin_icon.png', height: 24, width: 24);
+ final litecoinIcon = Image.asset('assets/images/crypto/litecoin.png', height: 24, width: 24);
final havenIcon = Image.asset('assets/images/haven_logo.png', height: 24, width: 24);
- final ethereumIcon = Image.asset('assets/images/eth_icon.png', height: 24, width: 24);
- final polygonIcon = Image.asset('assets/images/matic_icon.png', height: 24, width: 24);
- final bitcoinCashIcon = Image.asset('assets/images/bch_icon.png', height: 24, width: 24);
- final nanoIcon = Image.asset('assets/images/nano_icon.png', height: 24, width: 24);
- final bananoIcon = Image.asset('assets/images/nano_icon.png', height: 24, width: 24);
- final solanaIcon = Image.asset('assets/images/sol_icon.png', height: 24, width: 24);
- final tronIcon = Image.asset('assets/images/trx_icon.png', height: 24, width: 24);
- final wowneroIcon = Image.asset('assets/images/wownero_icon.png', height: 24, width: 24);
- final zanoIcon = Image.asset('assets/images/zano_icon.png', height: 24, width: 24);
- final decredIcon = Image.asset('assets/images/decred_icon.png', height: 24, width: 24);
- final dogeIcon = Image.asset('assets/images/doge_icon.png', height: 24, width: 24);
+ final ethereumIcon = Image.asset('assets/images/crypto/ethereum.png', height: 24, width: 24);
+ final polygonIcon = Image.asset('assets/images/crypto/polygon.png', height: 24, width: 24);
+ final bitcoinCashIcon = Image.asset('assets/images/crypto/bitcoin-cash.png', height: 24, width: 24);
+ final nanoIcon = Image.asset('assets/images/crypto/nano.png', height: 24, width: 24);
+ final bananoIcon = Image.asset('assets/images/crypto/nano.png', height: 24, width: 24);
+ final solanaIcon = Image.asset('assets/images/crypto/solana.png', height: 24, width: 24);
+ final tronIcon = Image.asset('assets/images/crypto/tron.png', height: 24, width: 24);
+ final wowneroIcon = Image.asset('assets/images/crypto/wownero.png', height: 24, width: 24);
+ final zanoIcon = Image.asset('assets/images/crypto/zano.png', height: 24, width: 24);
+ final decredIcon = Image.asset('assets/images/crypto/decred.png', height: 24, width: 24);
+ final dogeIcon = Image.asset('assets/images/crypto/dogecoin.png', height: 24, width: 24);
final nonWalletTypeIcon = Image.asset('assets/images/close.png', height: 24, width: 24);
Image _newWalletImage(BuildContext context) => Image.asset(
diff --git a/lib/src/screens/dashboard/edit_token_page.dart b/lib/src/screens/dashboard/edit_token_page.dart
index 777519f00..7399ac0bd 100644
--- a/lib/src/screens/dashboard/edit_token_page.dart
+++ b/lib/src/screens/dashboard/edit_token_page.dart
@@ -10,8 +10,7 @@ import 'package:cake_wallet/src/widgets/checkbox_widget.dart';
import 'package:cake_wallet/src/widgets/primary_button.dart';
import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart';
import 'package:cake_wallet/src/widgets/warning_box_widget.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
-import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/core/theme_extension.dart';
import 'package:cake_wallet/utils/show_pop_up.dart';
import 'package:cake_wallet/view_model/dashboard/home_settings_view_model.dart';
import 'package:cw_core/crypto_currency.dart';
@@ -44,7 +43,6 @@ class EditTokenPage extends BasePage {
homeSettingsViewModel: homeSettingsViewModel,
token: token,
initialContractAddress: initialContractAddress,
- currentTheme: currentTheme,
);
}
}
@@ -55,13 +53,11 @@ class EditTokenPageBody extends StatefulWidget {
required this.homeSettingsViewModel,
this.token,
this.initialContractAddress,
- required this.currentTheme,
}) : super(key: key);
final HomeSettingsViewModel homeSettingsViewModel;
final CryptoCurrency? token;
final String? initialContractAddress;
- final MaterialThemeBase currentTheme;
@override
State createState() => _EditTokenPageBodyState();
@@ -128,8 +124,7 @@ class _EditTokenPageBodyState extends State {
void _checkIfTokenIsVerified(String? contractAddress) {
if (contractAddress == null) return;
- final isVerified =
- widget.homeSettingsViewModel.checkIfTokenIsWhitelisted(contractAddress);
+ final isVerified = widget.homeSettingsViewModel.checkIfTokenIsWhitelisted(contractAddress);
if (!mounted) return;
setState(() {
@@ -151,13 +146,10 @@ class _EditTokenPageBodyState extends State {
WarningBox(
padding: EdgeInsets.all(16),
content: S.of(context).add_token_warning,
- currentTheme: widget.currentTheme,
showBorder: false,
textWeight: FontWeight.w500,
textAlign: TextAlign.start,
- textColor: widget.currentTheme.isDark
- ? CustomThemeColors.warningOutlineColorDark
- : CustomThemeColors.warningOutlineColorLight,
+ textColor: context.customColors.warningOutlineColor,
iconSize: 22,
iconSpacing: 16,
),
@@ -443,12 +435,9 @@ class _EditTokenPageBodyState extends State {
? WarningBox(
padding: EdgeInsets.all(16),
content: S.of(context).tokens_strong_warning,
- currentTheme: widget.currentTheme,
showBorder: false,
textWeight: FontWeight.w500,
- textColor: widget.currentTheme.isDark
- ? CustomThemeColors.warningOutlineColorDark
- : CustomThemeColors.warningOutlineColorLight,
+ textColor: context.customColors.warningOutlineColor,
showIcon: false,
)
: Text(
diff --git a/lib/src/screens/dashboard/pages/address_page.dart b/lib/src/screens/dashboard/pages/address_page.dart
index 77ec84346..c7e5c8793 100644
--- a/lib/src/screens/dashboard/pages/address_page.dart
+++ b/lib/src/screens/dashboard/pages/address_page.dart
@@ -60,7 +60,7 @@ class AddressPage extends BasePage {
Widget? leading(BuildContext context) {
final _backButton = Icon(
Icons.arrow_back_ios,
- color: titleColor(context),
+ color: Theme.of(context).colorScheme.primary,
size: 16,
);
final _closeButton = currentTheme.isDark ? closeButtonImageDarkTheme : closeButtonImage;
@@ -114,7 +114,7 @@ class AddressPage extends BasePage {
context: context,
);
},
- icon: Icon(Icons.share, size: 20, color: pageIconColor(context)),
+ icon: Icon(Icons.share, size: 20, color: Theme.of(context).colorScheme.primary),
),
),
);
@@ -150,7 +150,6 @@ class AddressPage extends BasePage {
addressListViewModel: addressListViewModel,
amountTextFieldFocusNode: _cryptoAmountFocus,
amountController: _amountController,
- currentTheme: dashboardViewModel.appStore.themeStore.currentTheme,
),
),
),
diff --git a/lib/src/screens/dashboard/pages/balance/balance_row_widget.dart b/lib/src/screens/dashboard/pages/balance/balance_row_widget.dart
index 288429363..766914f76 100644
--- a/lib/src/screens/dashboard/pages/balance/balance_row_widget.dart
+++ b/lib/src/screens/dashboard/pages/balance/balance_row_widget.dart
@@ -6,7 +6,7 @@ import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/src/screens/exchange_trade/information_page.dart';
import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
-import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/core/theme_extension.dart';
import 'package:cake_wallet/utils/payment_request.dart';
import 'package:cake_wallet/utils/show_pop_up.dart';
import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart';
@@ -71,22 +71,20 @@ class BalanceRowWidget extends StatelessWidget {
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15.0),
gradient: LinearGradient(
- colors: [
- dashboardViewModel.isDarkTheme
- ? CustomThemeColors.cardGradientColorPrimaryDark
- : CustomThemeColors.cardGradientColorPrimaryLight,
- dashboardViewModel.isDarkTheme
- ? CustomThemeColors.cardGradientColorSecondaryDark
- : CustomThemeColors.cardGradientColorSecondaryLight,
- ],
- begin: Alignment.topCenter,
- end: Alignment.bottomCenter,
- ),
+ colors: [
+ context.customColors.cardGradientColorPrimary,
+ context.customColors.cardGradientColorSecondary,
+ ],
+ begin: Alignment.topCenter,
+ end: Alignment.bottomCenter,
+ ),
),
child: TextButton(
onPressed: _showToast,
onLongPress: () => dashboardViewModel.balanceViewModel.switchBalanceValue(),
style: TextButton.styleFrom(
+ side: BorderSide(
+ width: 1.25, color: Theme.of(context).colorScheme.surfaceContainerHigh),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(15)),
),
child: Container(
@@ -328,12 +326,8 @@ class BalanceRowWidget extends StatelessWidget {
borderRadius: BorderRadius.circular(15),
gradient: LinearGradient(
colors: [
- dashboardViewModel.isDarkTheme
- ? CustomThemeColors.cardGradientColorPrimaryDark
- : CustomThemeColors.cardGradientColorPrimaryLight,
- dashboardViewModel.isDarkTheme
- ? CustomThemeColors.cardGradientColorSecondaryDark
- : CustomThemeColors.cardGradientColorSecondaryLight,
+ context.customColors.cardGradientColorPrimary,
+ context.customColors.cardGradientColorSecondary,
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
@@ -531,7 +525,8 @@ class BalanceRowWidget extends StatelessWidget {
style: OutlinedButton.styleFrom(
backgroundColor: Theme.of(context).colorScheme.primary,
side: BorderSide(
- color: Theme.of(context).colorScheme.outlineVariant.withAlpha(0),
+ color:
+ Theme.of(context).colorScheme.outlineVariant.withAlpha(0),
width: 0,
),
shape: RoundedRectangleBorder(
@@ -588,7 +583,8 @@ class BalanceRowWidget extends StatelessWidget {
style: OutlinedButton.styleFrom(
backgroundColor: Theme.of(context).colorScheme.surface,
side: BorderSide(
- color: Theme.of(context).colorScheme.outlineVariant.withAlpha(0),
+ color:
+ Theme.of(context).colorScheme.outlineVariant.withAlpha(0),
width: 0,
),
shape: RoundedRectangleBorder(
diff --git a/lib/src/screens/dashboard/pages/balance/crypto_balance_widget.dart b/lib/src/screens/dashboard/pages/balance/crypto_balance_widget.dart
index fc526aae9..7ff65a76f 100644
--- a/lib/src/screens/dashboard/pages/balance/crypto_balance_widget.dart
+++ b/lib/src/screens/dashboard/pages/balance/crypto_balance_widget.dart
@@ -9,6 +9,7 @@ import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
import 'package:cake_wallet/src/widgets/dashboard_card_widget.dart';
import 'package:cake_wallet/src/widgets/introducing_card.dart';
import 'package:cake_wallet/src/widgets/standard_switch.dart';
+import 'package:cake_wallet/themes/core/theme_extension.dart';
import 'package:cake_wallet/utils/feature_flag.dart';
import 'package:cake_wallet/utils/show_pop_up.dart';
import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart';
@@ -57,7 +58,6 @@ class CryptoBalanceWidget extends StatelessWidget {
return Padding(
padding: const EdgeInsets.fromLTRB(16, 0, 16, 16),
child: DashBoardRoundedCardWidget(
- isDarkTheme: dashboardViewModel.isDarkTheme,
title: "Invalid monero bindings",
subTitle: dashboardViewModel.getMoneroError.toString(),
),
@@ -72,7 +72,6 @@ class CryptoBalanceWidget extends StatelessWidget {
return Padding(
padding: const EdgeInsets.fromLTRB(16, 0, 16, 16),
child: DashBoardRoundedCardWidget(
- isDarkTheme: dashboardViewModel.isDarkTheme,
title: "Invalid wownero bindings",
subTitle: dashboardViewModel.getWowneroError.toString(),
),
@@ -157,7 +156,6 @@ class CryptoBalanceWidget extends StatelessWidget {
return Padding(
padding: const EdgeInsets.fromLTRB(16, 0, 16, 8),
child: DashBoardRoundedCardWidget(
- isDarkTheme: dashboardViewModel.isDarkTheme,
title: S.of(context).rep_warning,
subTitle: S.of(context).rep_warning_sub,
onTap: () => Navigator.of(context).pushNamed(Routes.changeRep),
@@ -220,7 +218,6 @@ class CryptoBalanceWidget extends StatelessWidget {
Padding(
padding: const EdgeInsets.fromLTRB(16, 0, 16, 8),
child: DashBoardRoundedCardWidget(
- isDarkTheme: dashboardViewModel.isDarkTheme,
customBorder: 30,
title: "This wallet has encountered an issue",
subTitle: "Here are the things that you should note:\n - " +
@@ -233,7 +230,6 @@ class CryptoBalanceWidget extends StatelessWidget {
Padding(
padding: const EdgeInsets.fromLTRB(16, 0, 16, 0),
child: DashBoardRoundedCardWidget(
- isDarkTheme: dashboardViewModel.isDarkTheme,
shadowBlur: dashboardViewModel.getShadowBlur(),
shadowSpread: dashboardViewModel.getShadowSpread(),
marginV: 0,
@@ -285,7 +281,7 @@ class CryptoBalanceWidget extends StatelessWidget {
],
),
onTap: () => _toggleSilentPaymentsScanning(context),
- image: !dashboardViewModel.appStore.themeStore.currentTheme.isDark
+ image: !context.currentTheme.isDark
? Image.asset(btcLockLight, height: 48)
: Image.asset(btcLockDark, height: 48),
),
@@ -296,7 +292,6 @@ class CryptoBalanceWidget extends StatelessWidget {
Padding(
padding: const EdgeInsets.fromLTRB(16, 0, 16, 8),
child: InfoCard(
- isDarkTheme: dashboardViewModel.isDarkTheme,
title: S.of(context).litecoin_mweb,
description: S.of(context).litecoin_mweb_description,
leftButtonTitle: S.of(context).litecoin_mweb_dismiss,
@@ -327,7 +322,6 @@ class CryptoBalanceWidget extends StatelessWidget {
Padding(
padding: const EdgeInsets.fromLTRB(16, 0, 16, 8),
child: InfoCard(
- isDarkTheme: dashboardViewModel.isDarkTheme,
title: S.of(context).synchronizing,
description: S.of(context).decred_info_card_details,
image: 'assets/images/dcr_icon.png',
@@ -344,7 +338,6 @@ class CryptoBalanceWidget extends StatelessWidget {
Padding(
padding: const EdgeInsets.fromLTRB(16, 0, 16, 8),
child: InfoCard(
- isDarkTheme: dashboardViewModel.isDarkTheme,
title: "Payjoin",
description: S.of(context).payjoin_card_content,
hintWidget: GestureDetector(
diff --git a/lib/src/screens/dashboard/pages/cake_features_page.dart b/lib/src/screens/dashboard/pages/cake_features_page.dart
index 29066bc75..b2b361d1e 100644
--- a/lib/src/screens/dashboard/pages/cake_features_page.dart
+++ b/lib/src/screens/dashboard/pages/cake_features_page.dart
@@ -40,7 +40,6 @@ class CakeFeaturesPage extends StatelessWidget {
children: [
SizedBox(height: 2),
DashBoardRoundedCardWidget(
- isDarkTheme: dashboardViewModel.isDarkTheme,
shadowBlur: dashboardViewModel.getShadowBlur(),
shadowSpread: dashboardViewModel.getShadowSpread(),
onTap: () {
@@ -53,16 +52,15 @@ class CakeFeaturesPage extends StatelessWidget {
title: 'Cake Pay',
subTitle: S.of(context).cake_pay_subtitle,
image: Image.asset(
- 'assets/images/cards.png',
- height: 100,
- width: 115,
+ 'assets/images/cakepay.png',
+ height: 74,
+ width: 70,
fit: BoxFit.cover,
),
),
Observer(builder: (_) {
if (dashboardViewModel.type == WalletType.ethereum) {
return DashBoardRoundedCardWidget(
- isDarkTheme: dashboardViewModel.isDarkTheme,
shadowBlur: dashboardViewModel.getShadowBlur(),
shadowSpread: dashboardViewModel.getShadowSpread(),
onTap: () => Navigator.of(context).pushNamed(Routes.dEuroSavings),
@@ -80,7 +78,6 @@ class CakeFeaturesPage extends StatelessWidget {
return const SizedBox();
}),
DashBoardRoundedCardWidget(
- isDarkTheme: dashboardViewModel.isDarkTheme,
shadowBlur: dashboardViewModel.getShadowBlur(),
shadowSpread: dashboardViewModel.getShadowSpread(),
onTap: () => _launchUrl("cake.nano-gpt.com"),
diff --git a/lib/src/screens/dashboard/pages/navigation_dock.dart b/lib/src/screens/dashboard/pages/navigation_dock.dart
index e21e32659..d3afd4e0c 100644
--- a/lib/src/screens/dashboard/pages/navigation_dock.dart
+++ b/lib/src/screens/dashboard/pages/navigation_dock.dart
@@ -1,7 +1,6 @@
import 'dart:ui';
import 'package:cake_wallet/entities/main_actions.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
-import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/core/theme_extension.dart';
import 'package:flutter/material.dart';
import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart';
import 'package:cake_wallet/src/screens/dashboard/widgets/action_button.dart';
@@ -10,11 +9,9 @@ import 'package:flutter_mobx/flutter_mobx.dart';
class NavigationDock extends StatelessWidget {
const NavigationDock({
required this.dashboardViewModel,
- required this.currentTheme,
});
final DashboardViewModel dashboardViewModel;
- final MaterialThemeBase currentTheme;
@override
Widget build(BuildContext context) {
@@ -24,13 +21,15 @@ class NavigationDock extends StatelessWidget {
return Container(
height: 150,
alignment: Alignment.bottomCenter,
- decoration: dashboardViewModel.settingsStore.backgroundImage.isEmpty ? BoxDecoration(
- gradient: LinearGradient(
- begin: Alignment.topCenter,
- end: Alignment.bottomCenter,
- colors: _getColors(context, !currentTheme.isDark),
- ),
- ) : null,
+ decoration: dashboardViewModel.settingsStore.backgroundImage.isEmpty
+ ? BoxDecoration(
+ gradient: LinearGradient(
+ begin: Alignment.topCenter,
+ end: Alignment.bottomCenter,
+ colors: _getColors(context),
+ ),
+ )
+ : null,
//color: Colors.transparent,
child: Container(
decoration: BoxDecoration(
@@ -38,7 +37,7 @@ class NavigationDock extends StatelessWidget {
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
- colors: _getColors(context, !currentTheme.isDark),
+ colors: _getColors(context),
),
),
margin: const EdgeInsets.only(left: 8, right: 8, bottom: 16),
@@ -95,25 +94,15 @@ class NavigationDock extends StatelessWidget {
);
}
- List _getColors(BuildContext context, bool isBright) {
- return isBright
- ? [
- CustomThemeColors.backgroundGradientColorLight.withAlpha(5),
- CustomThemeColors.backgroundGradientColorLight.withAlpha(50),
- CustomThemeColors.backgroundGradientColorLight.withAlpha(125),
- CustomThemeColors.backgroundGradientColorLight.withAlpha(150),
- CustomThemeColors.backgroundGradientColorLight.withAlpha(200),
- CustomThemeColors.backgroundGradientColorLight,
- CustomThemeColors.backgroundGradientColorLight
- ]
- : [
- CustomThemeColors.backgroundGradientColorDark.withAlpha(5),
- CustomThemeColors.backgroundGradientColorDark.withAlpha(50),
- CustomThemeColors.backgroundGradientColorDark.withAlpha(125),
- CustomThemeColors.backgroundGradientColorDark.withAlpha(150),
- CustomThemeColors.backgroundGradientColorDark.withAlpha(200),
- CustomThemeColors.backgroundGradientColorDark,
- CustomThemeColors.backgroundGradientColorDark
- ];
+ List _getColors(BuildContext context) {
+ return [
+ context.customColors.backgroundGradientColor.withAlpha(5),
+ context.customColors.backgroundGradientColor.withAlpha(50),
+ context.customColors.backgroundGradientColor.withAlpha(125),
+ context.customColors.backgroundGradientColor.withAlpha(150),
+ context.customColors.backgroundGradientColor.withAlpha(200),
+ context.customColors.backgroundGradientColor,
+ context.customColors.backgroundGradientColor,
+ ];
}
}
diff --git a/lib/src/screens/dashboard/pages/nft_details_page.dart b/lib/src/screens/dashboard/pages/nft_details_page.dart
index 67139d480..86ed136ed 100644
--- a/lib/src/screens/dashboard/pages/nft_details_page.dart
+++ b/lib/src/screens/dashboard/pages/nft_details_page.dart
@@ -232,19 +232,19 @@ class _NFTSingleInfoTile extends StatelessWidget {
Text(
infoType,
style: Theme.of(context).textTheme.bodySmall?.copyWith(
- color: Theme.of(context).colorScheme.onSurfaceVariant,
- fontWeight: FontWeight.w500,
- height: 1,
- ),
+ color: Theme.of(context).colorScheme.onSurfaceVariant,
+ fontWeight: FontWeight.w500,
+ height: 1,
+ ),
),
const SizedBox(height: 8),
Text(
infoValue,
style: Theme.of(context).textTheme.titleMedium?.copyWith(
- fontWeight: FontWeight.w600,
- color: Theme.of(context).colorScheme.onSurface,
- height: 1,
- ),
+ fontWeight: FontWeight.w600,
+ color: Theme.of(context).colorScheme.onSurface,
+ height: 1,
+ ),
),
],
),
diff --git a/lib/src/screens/dashboard/pages/transactions_page.dart b/lib/src/screens/dashboard/pages/transactions_page.dart
index 6afd2f6a9..85ffbcbe4 100644
--- a/lib/src/screens/dashboard/pages/transactions_page.dart
+++ b/lib/src/screens/dashboard/pages/transactions_page.dart
@@ -49,7 +49,6 @@ class TransactionsPage extends StatelessWidget {
final status = dashboardViewModel.status;
if (status is SyncingSyncStatus) {
return DashBoardRoundedCardWidget(
- isDarkTheme: dashboardViewModel.isDarkTheme,
key: ValueKey('transactions_page_syncing_alert_card_key'),
onTap: () {
try {
diff --git a/lib/src/screens/dashboard/widgets/home_screen_account_widget.dart b/lib/src/screens/dashboard/widgets/home_screen_account_widget.dart
index e54aa8359..55572d568 100644
--- a/lib/src/screens/dashboard/widgets/home_screen_account_widget.dart
+++ b/lib/src/screens/dashboard/widgets/home_screen_account_widget.dart
@@ -12,14 +12,12 @@ class HomeScreenAccountWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return GestureDetector(
- onTap: () async {
- await showPopUp(
- context: context,
- builder: (_) => getIt.get());
- },
+ onTap: () async {
+ await showPopUp(context: context, builder: (_) => getIt.get());
+ },
behavior: HitTestBehavior.opaque,
child: Padding(
- padding: EdgeInsets.only(top: 25, bottom: 25, left: 25, right: 0),
+ padding: EdgeInsets.all(25.0),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
@@ -32,31 +30,36 @@ class HomeScreenAccountWidget extends StatelessWidget {
child: Text(
walletName ?? '',
style: Theme.of(context).textTheme.headlineSmall?.copyWith(
- fontWeight: FontWeight.bold,
- color: Theme.of(context).colorScheme.onSurface,
- ),
+ fontWeight: FontWeight.bold,
+ color: Theme.of(context).colorScheme.onSurface,
+ ),
),
),
SizedBox(
height: 5.0,
),
- Container(
- child: Text(
- accountName ?? '',
- style: Theme.of(context).textTheme.bodyMedium?.copyWith(
- fontWeight: FontWeight.bold,
- color: Theme.of(context).colorScheme.onSurfaceVariant,
+ Row(
+ children: [
+ Padding(padding: EdgeInsets.only(left: 20)),
+ Container(
+ child: Text(
+ accountName ?? '',
+ style: Theme.of(context).textTheme.bodyMedium?.copyWith(
+ fontWeight: FontWeight.bold,
+ color: Theme.of(context).colorScheme.primary,
+ ),
+ ),
),
- ),
+ Container(
+ child: Icon(
+ Icons.keyboard_arrow_down,
+ color: Theme.of(context).colorScheme.primary,
+ ),
+ ),
+ ],
),
],
),
- Container(
- child: Icon(
- Icons.keyboard_arrow_down,
- color: Theme.of(context).colorScheme.onSurfaceVariant,
- ),
- ),
],
),
),
diff --git a/lib/src/screens/dashboard/widgets/info_card.dart b/lib/src/screens/dashboard/widgets/info_card.dart
index cb13d7035..42552aa09 100644
--- a/lib/src/screens/dashboard/widgets/info_card.dart
+++ b/lib/src/screens/dashboard/widgets/info_card.dart
@@ -8,14 +8,13 @@ class InfoCard extends StatelessWidget {
final String title;
final String description;
final String image;
- final bool isDarkTheme;
final Function() leftButtonAction;
final Function() rightButtonAction;
final Widget? hintWidget;
const InfoCard({
- Key? key,
+ super.key,
required this.title,
required this.description,
required this.leftButtonTitle,
@@ -23,14 +22,12 @@ class InfoCard extends StatelessWidget {
required this.leftButtonAction,
required this.rightButtonAction,
required this.image,
- required this.isDarkTheme,
this.hintWidget,
- }) : super(key: key);
+ });
@override
Widget build(BuildContext context) {
return DashBoardRoundedCardWidget(
- isDarkTheme: isDarkTheme,
marginH: 0,
marginV: 0,
customBorder: 30,
diff --git a/lib/src/screens/dashboard/widgets/menu_widget.dart b/lib/src/screens/dashboard/widgets/menu_widget.dart
index b96f0e4cc..4302f728c 100644
--- a/lib/src/screens/dashboard/widgets/menu_widget.dart
+++ b/lib/src/screens/dashboard/widgets/menu_widget.dart
@@ -24,21 +24,21 @@ class MenuWidgetState extends State {
this.tileHeight = 60,
this.fromTopEdge = 50,
this.fromBottomEdge = 25,
- this.moneroIcon = Image.asset('assets/images/monero_menu.png'),
- this.bitcoinIcon = Image.asset('assets/images/bitcoin_menu.png'),
- this.litecoinIcon = Image.asset('assets/images/litecoin_menu.png'),
+ this.moneroIcon = Image.asset('assets/images/crypto/monero.png'),
+ this.bitcoinIcon = Image.asset('assets/images/crypto/bitcoin.png'),
+ this.litecoinIcon = Image.asset('assets/images/crypto/litecoin.png'),
this.havenIcon = Image.asset('assets/images/haven_menu.png'),
- this.ethereumIcon = Image.asset('assets/images/eth_icon.png'),
- this.nanoIcon = Image.asset('assets/images/nano_icon.png'),
- this.bananoIcon = Image.asset('assets/images/nano_icon.png'),
- this.bitcoinCashIcon = Image.asset('assets/images/bch_icon.png'),
- this.polygonIcon = Image.asset('assets/images/matic_icon.png'),
- this.solanaIcon = Image.asset('assets/images/sol_icon.png'),
- this.tronIcon = Image.asset('assets/images/trx_icon.png'),
- this.wowneroIcon = Image.asset('assets/images/wownero_icon.png'),
- this.zanoIcon = Image.asset('assets/images/zano_icon.png'),
- this.decredIcon = Image.asset('assets/images/decred_menu.png'),
- this.dogecoinIcon = Image.asset('assets/images/doge_icon.png');
+ this.ethereumIcon = Image.asset('assets/images/crypto/ethereum.png'),
+ this.nanoIcon = Image.asset('assets/images/crypto/nano.png'),
+ this.bananoIcon = Image.asset('assets/images/crypto/nano.png'),
+ this.bitcoinCashIcon = Image.asset('assets/images/crypto/bitcoin-cash.png'),
+ this.polygonIcon = Image.asset('assets/images/crypto/polygon.png'),
+ this.solanaIcon = Image.asset('assets/images/crypto/solana.png'),
+ this.tronIcon = Image.asset('assets/images/crypto/tron.png'),
+ this.wowneroIcon = Image.asset('assets/images/crypto/wownero.png'),
+ this.zanoIcon = Image.asset('assets/images/crypto/zano.png'),
+ this.decredIcon = Image.asset('assets/images/crypto/decred.png'),
+ this.dogecoinIcon = Image.asset('assets/images/crypto/dogecoin.png');
final largeScreen = 731;
@@ -114,10 +114,8 @@ class MenuWidgetState extends State {
}
int itemCount = items.length;
- moneroIcon =
- Image.asset('assets/images/monero_menu.png', color: Theme.of(context).colorScheme.primary);
- bitcoinIcon =
- Image.asset('assets/images/bitcoin_menu.png', color: Theme.of(context).colorScheme.primary);
+ moneroIcon = Image.asset('assets/images/crypto/monero.png');
+ bitcoinIcon = Image.asset('assets/images/crypto/bitcoin.png');
return Row(
mainAxisSize: MainAxisSize.max,
diff --git a/lib/src/screens/dashboard/widgets/present_receive_option_picker.dart b/lib/src/screens/dashboard/widgets/present_receive_option_picker.dart
index 9217db03f..8d4ea99cd 100644
--- a/lib/src/screens/dashboard/widgets/present_receive_option_picker.dart
+++ b/lib/src/screens/dashboard/widgets/present_receive_option_picker.dart
@@ -18,59 +18,65 @@ class PresentReceiveOptionPicker extends StatelessWidget {
Widget build(BuildContext context) {
final arrowBottom = Image.asset(
'assets/images/arrow_bottom_purple_icon.png',
- color: color,
+ color: Theme.of(context).colorScheme.primary,
height: 6,
);
- return TextButton(
- onPressed: () => _showPicker(context),
- style: ButtonStyle(
- padding: WidgetStateProperty.all(EdgeInsets.zero),
- splashFactory: NoSplash.splashFactory,
- foregroundColor: WidgetStateProperty.all(Colors.transparent),
- overlayColor: WidgetStateProperty.all(Colors.transparent),
- ),
- child: Row(
- mainAxisSize: MainAxisSize.min,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Column(
- crossAxisAlignment: CrossAxisAlignment.center,
+ return Padding(
+ padding: EdgeInsets.only(left: 6),
+ child: TextButton(
+ onPressed: () => _showPicker(context),
+ style: ButtonStyle(
+ padding: WidgetStateProperty.all(EdgeInsets.zero),
+ splashFactory: NoSplash.splashFactory,
+ foregroundColor: WidgetStateProperty.all(Colors.transparent),
+ overlayColor: WidgetStateProperty.all(Colors.transparent),
+ ),
+ child: Row(
mainAxisSize: MainAxisSize.min,
+ crossAxisAlignment: CrossAxisAlignment.start,
children: [
- Text(
- S.current.receive,
- style: Theme.of(context).textTheme.bodyMedium!.copyWith(
- fontSize: 17.0,
- fontWeight: FontWeight.bold,
- color: color,
- ),
- ),
- Observer(
- builder: (_) => Text(
- receiveOptionViewModel.selectedReceiveOption
- .toString()
- .replaceAll(RegExp(r'silent payments', caseSensitive: false),
- S.current.silent_payments)
- .replaceAll(
- RegExp(r'default', caseSensitive: false), S.current.string_default),
- style: Theme.of(context).textTheme.bodySmall!.copyWith(
- fontSize: 10.0,
- fontWeight: FontWeight.w500,
- color: color,
+ Column(
+ crossAxisAlignment: CrossAxisAlignment.center,
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Text(
+ S.current.receive,
+ style: Theme.of(context).textTheme.bodyMedium!.copyWith(
+ fontSize: 17.0,
+ fontWeight: FontWeight.bold,
+ color: Theme.of(context).colorScheme.onSurface,
+ ),
+ ),
+ Row(
+ children: [
+ Observer(
+ builder: (_) => Text(
+ receiveOptionViewModel.selectedReceiveOption
+ .toString()
+ .replaceAll(RegExp(r'silent payments', caseSensitive: false),
+ S.current.silent_payments)
+ .replaceAll(RegExp(r'default', caseSensitive: false),
+ S.current.string_default),
+ style: Theme.of(context).textTheme.bodySmall!.copyWith(
+ fontSize: 10.0,
+ fontWeight: FontWeight.w500,
+ color: Theme.of(context).colorScheme.onSurfaceVariant,
+ ),
+ ),
),
- ),
+ ],
+ ),
+ ],
+ ),
+ SizedBox(width: 5),
+ Padding(
+ padding: EdgeInsets.only(top: 12),
+ child: arrowBottom,
)
],
),
- SizedBox(width: 5),
- Padding(
- padding: EdgeInsets.only(top: 12),
- child: arrowBottom,
- )
- ],
- ),
- );
+ ));
}
void _showPicker(BuildContext context) async {
diff --git a/lib/src/screens/dashboard/widgets/sync_indicator_icon.dart b/lib/src/screens/dashboard/widgets/sync_indicator_icon.dart
index 238c96dac..fda425303 100644
--- a/lib/src/screens/dashboard/widgets/sync_indicator_icon.dart
+++ b/lib/src/screens/dashboard/widgets/sync_indicator_icon.dart
@@ -1,10 +1,14 @@
-import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/core/custom_theme_colors.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
class SyncIndicatorIcon extends StatelessWidget {
SyncIndicatorIcon(
- {this.boolMode = true, this.isSynced = false, this.value = waiting, this.size = 6.0, this.showTorIcon = false});
+ {this.boolMode = true,
+ this.isSynced = false,
+ this.value = waiting,
+ this.size = 6.0,
+ this.showTorIcon = false});
final bool boolMode;
final bool isSynced;
@@ -25,9 +29,7 @@ class SyncIndicatorIcon extends StatelessWidget {
Color indicatorColor;
if (boolMode) {
- indicatorColor = isSynced
- ? CustomThemeColors.syncGreen
- : CustomThemeColors.syncYellow;
+ indicatorColor = isSynced ? CustomThemeColors.syncGreen : CustomThemeColors.syncYellow;
} else {
switch (value.toLowerCase()) {
case actionRequired:
@@ -48,14 +50,18 @@ class SyncIndicatorIcon extends StatelessWidget {
return Container(
height: size,
width: size,
- decoration: showTorIcon ? null : BoxDecoration(
- shape: BoxShape.circle,
- color: indicatorColor,
- ),
- child: showTorIcon ? SvgPicture.asset(
- "assets/images/tor.svg",
- color: indicatorColor,
- ) : null,
+ decoration: showTorIcon
+ ? null
+ : BoxDecoration(
+ shape: BoxShape.circle,
+ color: indicatorColor,
+ ),
+ child: showTorIcon
+ ? SvgPicture.asset(
+ "assets/images/tor.svg",
+ color: indicatorColor,
+ )
+ : null,
);
}
}
diff --git a/lib/src/screens/exchange/widgets/exchange_card.dart b/lib/src/screens/exchange/widgets/exchange_card.dart
index 12b4748b7..15426b668 100644
--- a/lib/src/screens/exchange/widgets/exchange_card.dart
+++ b/lib/src/screens/exchange/widgets/exchange_card.dart
@@ -206,7 +206,7 @@ class ExchangeCardState extends State> {
style: Theme.of(context).textTheme.titleLarge!.copyWith(
fontSize: 18,
fontWeight: FontWeight.w600,
- color: Theme.of(context).colorScheme.onSurfaceVariant
+ color: Theme.of(context).colorScheme.onSurfaceVariant,
),
)
],
@@ -281,7 +281,7 @@ class ExchangeCardState extends State> {
S.of(context).refund_address,
style: Theme.of(context).textTheme.bodyMedium!.copyWith(
fontWeight: FontWeight.w500,
- color: Theme.of(context).colorScheme.onSurfaceVariant
+ color: Theme.of(context).colorScheme.onSurfaceVariant,
),
),
)
diff --git a/lib/src/screens/exchange/widgets/mobile_exchange_cards_section.dart b/lib/src/screens/exchange/widgets/mobile_exchange_cards_section.dart
index 4606b21d5..e7186e0fa 100644
--- a/lib/src/screens/exchange/widgets/mobile_exchange_cards_section.dart
+++ b/lib/src/screens/exchange/widgets/mobile_exchange_cards_section.dart
@@ -37,7 +37,7 @@ class MobileExchangeCardsSection extends StatelessWidget {
bottomLeft: Radius.circular(24),
bottomRight: Radius.circular(24),
),
- color: Theme.of(context).colorScheme.surfaceContainerHighest,
+ color: Theme.of(context).colorScheme.surfaceContainerHigh,
),
padding: EdgeInsets.fromLTRB(24, 105, 24, 24),
child: Column(
diff --git a/lib/src/screens/exchange/widgets/present_provider_picker.dart b/lib/src/screens/exchange/widgets/present_provider_picker.dart
index f4c21ed28..d68aa5dac 100644
--- a/lib/src/screens/exchange/widgets/present_provider_picker.dart
+++ b/lib/src/screens/exchange/widgets/present_provider_picker.dart
@@ -15,55 +15,58 @@ class PresentProviderPicker extends StatelessWidget {
Widget build(BuildContext context) {
final arrowBottom = Image.asset(
'assets/images/arrow_bottom_purple_icon.png',
- color: Theme.of(context).colorScheme.onSurface,
+ color: Theme.of(context).colorScheme.primary,
height: 6,
);
- return TextButton(
- onPressed: () => presentProviderPicker(context),
- style: ButtonStyle(
- padding: WidgetStateProperty.all(EdgeInsets.zero),
- splashFactory: NoSplash.splashFactory,
- foregroundColor: WidgetStateProperty.all(Colors.transparent),
- overlayColor: WidgetStateProperty.all(Colors.transparent),
- ),
- child: Row(
- mainAxisSize: MainAxisSize.min,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Column(
- crossAxisAlignment: CrossAxisAlignment.center,
- mainAxisSize: MainAxisSize.min,
- children: [
- Text(
- S.of(context).swap,
- style: Theme.of(context).textTheme.bodyMedium?.copyWith(
- fontSize: 16.0,
- fontWeight: FontWeight.w600,
- ),
- ),
- Observer(
- builder: (_) => Text(
- exchangeViewModel.selectedProviders.isEmpty
- ? S.of(context).choose_one
- : exchangeViewModel.selectedProviders.length > 1
- ? S.of(context).automatic
- : exchangeViewModel.selectedProviders.first.title,
- style: Theme.of(context).textTheme.bodySmall?.copyWith(
- fontSize: 10.0,
- fontWeight: FontWeight.w500,
- color: Theme.of(context).colorScheme.onSurfaceVariant,
+ return Padding(
+ padding: EdgeInsets.only(left: 10),
+ child: TextButton(
+ onPressed: () => presentProviderPicker(context),
+ style: ButtonStyle(
+ padding: WidgetStateProperty.all(EdgeInsets.zero),
+ splashFactory: NoSplash.splashFactory,
+ foregroundColor: WidgetStateProperty.all(Colors.transparent),
+ overlayColor: WidgetStateProperty.all(Colors.transparent),
+ ),
+ child: Row(
+ mainAxisSize: MainAxisSize.min,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Column(
+ crossAxisAlignment: CrossAxisAlignment.center,
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Text(
+ S.of(context).swap,
+ style: Theme.of(context).textTheme.bodyMedium?.copyWith(
+ fontSize: 16.0,
+ fontWeight: FontWeight.w600,
),
),
- )
- ],
- ),
- SizedBox(width: 5),
- Padding(
- padding: EdgeInsets.only(top: 12),
- child: arrowBottom,
- )
- ],
+ Observer(
+ builder: (_) => Text(
+ exchangeViewModel.selectedProviders.isEmpty
+ ? S.of(context).choose_one
+ : exchangeViewModel.selectedProviders.length > 1
+ ? S.of(context).automatic
+ : exchangeViewModel.selectedProviders.first.title,
+ style: Theme.of(context).textTheme.bodySmall?.copyWith(
+ fontSize: 10.0,
+ fontWeight: FontWeight.w500,
+ color: Theme.of(context).colorScheme.onSurfaceVariant,
+ ),
+ ),
+ )
+ ],
+ ),
+ SizedBox(width: 5),
+ Padding(
+ padding: EdgeInsets.only(top: 12),
+ child: arrowBottom,
+ )
+ ],
+ ),
),
);
}
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 610d67ecb..ba60bdb73 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
@@ -114,7 +114,6 @@ class ExchangeTradeExternalSendPage extends BasePage {
(item) => TradeItemRowWidget(
key: ValueKey(
'exchange_trade_external_send_page_send_item_${item.title}_key'),
- currentTheme: currentTheme,
title: item.title,
value: item.data,
isCopied: true,
diff --git a/lib/src/screens/exchange_trade/exchange_trade_page.dart b/lib/src/screens/exchange_trade/exchange_trade_page.dart
index 1e8e74a2d..840fbcf01 100644
--- a/lib/src/screens/exchange_trade/exchange_trade_page.dart
+++ b/lib/src/screens/exchange_trade/exchange_trade_page.dart
@@ -6,7 +6,6 @@ import 'package:cake_wallet/src/screens/exchange_trade/widgets/exchange_trade_ca
import 'package:cake_wallet/src/widgets/bottom_sheet/base_bottom_sheet_widget.dart';
import 'package:cake_wallet/src/widgets/bottom_sheet/confirm_sending_bottom_sheet_widget.dart';
import 'package:cake_wallet/src/widgets/bottom_sheet/info_bottom_sheet_widget.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
import 'package:cake_wallet/utils/request_review_handler.dart';
import 'package:cake_wallet/utils/responsive_layout_util.dart';
import 'package:mobx/mobx.dart';
@@ -87,20 +86,13 @@ class ExchangeTradePage extends BasePage {
}
@override
- Widget body(BuildContext context) => ExchangeTradeForm(
- exchangeTradeViewModel,
- currentTheme,
- );
+ Widget body(BuildContext context) => ExchangeTradeForm(exchangeTradeViewModel);
}
class ExchangeTradeForm extends StatefulWidget {
- ExchangeTradeForm(
- this.exchangeTradeViewModel,
- this.currentTheme,
- );
+ ExchangeTradeForm(this.exchangeTradeViewModel);
final ExchangeTradeViewModel exchangeTradeViewModel;
- final MaterialThemeBase currentTheme;
@override
ExchangeTradeState createState() => ExchangeTradeState();
@@ -162,7 +154,6 @@ class ExchangeTradeState extends State {
: Offstage(),
_ExchangeTradeItemsCardSection(
viewModel: widget.exchangeTradeViewModel,
- currentTheme: widget.currentTheme,
),
],
);
@@ -282,7 +273,6 @@ class ExchangeTradeState extends State {
builder: (BuildContext bottomSheetContext) {
return ConfirmSendingBottomSheet(
key: ValueKey('exchange_trade_page_confirm_sending_bottom_sheet_key'),
- currentTheme: widget.currentTheme,
footerType: FooterType.slideActionButton,
walletType: widget.exchangeTradeViewModel.sendViewModel.walletType,
titleText: S.of(bottomSheetContext).confirm_transaction,
@@ -329,7 +319,6 @@ class ExchangeTradeState extends State {
isScrollControlled: true,
builder: (BuildContext bottomSheetContext) {
return InfoBottomSheet(
- currentTheme: widget.currentTheme,
footerType: FooterType.singleActionButton,
titleText: S.of(bottomSheetContext).transaction_sent,
contentImage: 'assets/images/birthday_cake.png',
@@ -359,24 +348,18 @@ class ExchangeTradeState extends State {
}
class _ExchangeTradeItemsCardSection extends StatelessWidget {
- const _ExchangeTradeItemsCardSection({
- required this.viewModel,
- required this.currentTheme,
- });
+ const _ExchangeTradeItemsCardSection({required this.viewModel});
final ExchangeTradeViewModel viewModel;
- final MaterialThemeBase currentTheme;
@override
Widget build(BuildContext context) {
final firstExchangeCard = ExchangeTradeCardItemWidget(
- currentTheme: currentTheme,
isReceiveDetailsCard: true,
exchangeTradeViewModel: viewModel,
);
final secondExchangeCard = ExchangeTradeCardItemWidget(
- currentTheme: currentTheme,
isReceiveDetailsCard: false,
exchangeTradeViewModel: viewModel,
);
diff --git a/lib/src/screens/exchange_trade/widgets/exchange_trade_card_item_widget.dart b/lib/src/screens/exchange_trade/widgets/exchange_trade_card_item_widget.dart
index 821eb2338..dabca54ed 100644
--- a/lib/src/screens/exchange_trade/widgets/exchange_trade_card_item_widget.dart
+++ b/lib/src/screens/exchange_trade/widgets/exchange_trade_card_item_widget.dart
@@ -4,7 +4,6 @@ import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
import 'package:cake_wallet/src/widgets/list_row.dart';
import 'package:cake_wallet/src/widgets/picker.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
import 'package:cake_wallet/utils/show_bar.dart';
import 'package:cake_wallet/utils/show_pop_up.dart';
import 'package:cake_wallet/view_model/exchange/exchange_trade_view_model.dart';
@@ -20,7 +19,6 @@ class ExchangeTradeCardItemWidget extends StatelessWidget {
ExchangeTradeCardItemWidget({
required this.isReceiveDetailsCard,
required this.exchangeTradeViewModel,
- required this.currentTheme,
Key? key,
}) : feesViewModel = exchangeTradeViewModel.feesViewModel,
output = exchangeTradeViewModel.output;
@@ -29,7 +27,6 @@ class ExchangeTradeCardItemWidget extends StatelessWidget {
final bool isReceiveDetailsCard;
final FeesViewModel feesViewModel;
final ExchangeTradeViewModel exchangeTradeViewModel;
- final MaterialThemeBase currentTheme;
@override
Widget build(BuildContext context) {
@@ -51,7 +48,6 @@ class ExchangeTradeCardItemWidget extends StatelessWidget {
.where((item) => item.isReceiveDetail == isReceiveDetailsCard)
.map(
(item) => TradeItemRowWidget(
- currentTheme: currentTheme,
title: item.title,
value: item.data,
isCopied: item.isCopied,
@@ -151,14 +147,12 @@ class TradeItemRowWidget extends StatelessWidget {
final String value;
final bool isCopied;
final Image copyImage;
- final MaterialThemeBase currentTheme;
const TradeItemRowWidget({
required this.title,
required this.value,
required this.isCopied,
required this.copyImage,
- required this.currentTheme,
super.key,
});
diff --git a/lib/src/screens/integrations/deuro/savings_page.dart b/lib/src/screens/integrations/deuro/savings_page.dart
index 8aee7fd83..57192f2a9 100644
--- a/lib/src/screens/integrations/deuro/savings_page.dart
+++ b/lib/src/screens/integrations/deuro/savings_page.dart
@@ -55,7 +55,6 @@ class DEuroSavingsPage extends BasePage {
children: [
Observer(
builder: (_) => SavingsCard(
- isDarkTheme: currentTheme.isDark,
interestRate: "${_dEuroViewModel.interestRateFormated}%",
savingsBalance: _dEuroViewModel.savingsBalanceFormated,
fiatSavingsBalance: _dEuroViewModel.fiatSavingsBalanceFormated,
@@ -71,7 +70,6 @@ class DEuroSavingsPage extends BasePage {
),
Observer(
builder: (_) => InterestCardWidget(
- isDarkTheme: currentTheme.isDark,
title: S.of(context).deuro_savings_collect_interest,
fiatAccruedInterest: _dEuroViewModel.fiatAccruedInterestFormated,
fiatCurrency: _dEuroViewModel.isFiatDisabled ? null : _dEuroViewModel.fiat,
@@ -178,7 +176,6 @@ class DEuroSavingsPage extends BasePage {
key: ValueKey('savings_page_confirm_sending_dialog_key'),
footerType: FooterType.slideActionButton,
titleText: title,
- currentTheme: currentTheme,
walletType: WalletType.ethereum,
titleIconPath: CryptoCurrency.deuro.iconPath,
currency: CryptoCurrency.deuro,
@@ -214,7 +211,6 @@ class DEuroSavingsPage extends BasePage {
key: ValueKey('savings_page_confirm_approval_dialog_key'),
footerType: FooterType.slideActionButton,
titleText: S.of(bottomSheetContext).approve_tokens,
- currentTheme: currentTheme,
walletType: WalletType.ethereum,
titleIconPath: CryptoCurrency.deuro.iconPath,
currency: CryptoCurrency.deuro,
@@ -247,7 +243,6 @@ class DEuroSavingsPage extends BasePage {
isDismissible: false,
builder: (BuildContext bottomSheetContext) => InfoBottomSheet(
footerType: FooterType.singleActionButton,
- currentTheme: currentTheme,
titleText: S.of(bottomSheetContext).transaction_sent,
contentImage: 'assets/images/birthday_cake.png',
content: S.of(bottomSheetContext).deuro_tx_commited_content,
@@ -311,7 +306,6 @@ class DEuroSavingsPage extends BasePage {
showModalBottomSheet(
context: context,
builder: (BuildContext bottomSheetContext) => TooltipSheet(
- currentTheme: currentTheme,
titleText: title,
titleIconPath: CryptoCurrency.deuro.iconPath,
tooltip: content,
@@ -333,7 +327,6 @@ class DEuroSavingsPage extends BasePage {
context: context,
isScrollControlled: true,
builder: (BuildContext bottomSheetContext) => InfoBottomSheet(
- currentTheme: currentTheme,
height: 350,
titleText: "dEURO",
titleIconPath: CryptoCurrency.deuro.iconPath,
@@ -360,7 +353,6 @@ class DEuroSavingsPage extends BasePage {
return showModalBottomSheet(
context: context,
builder: (BuildContext bottomSheetContext) => InfoBottomSheet(
- currentTheme: currentTheme,
titleText: title,
titleIconPath: CryptoCurrency.deuro.iconPath,
contentImage: 'assets/images/deuro_not_enough_eth.png',
diff --git a/lib/src/screens/integrations/deuro/widgets/interest_card_widget.dart b/lib/src/screens/integrations/deuro/widgets/interest_card_widget.dart
index 6d1852ec1..a1cf055a5 100644
--- a/lib/src/screens/integrations/deuro/widgets/interest_card_widget.dart
+++ b/lib/src/screens/integrations/deuro/widgets/interest_card_widget.dart
@@ -1,7 +1,7 @@
import 'package:cake_wallet/entities/fiat_currency.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/screens/integrations/deuro/widgets/savings_card_widget.dart';
-import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/core/theme_extension.dart';
import 'package:cw_core/crypto_currency.dart';
import 'package:flutter/material.dart';
@@ -9,7 +9,6 @@ class InterestCardWidget extends StatelessWidget {
const InterestCardWidget({
required this.title,
required this.accruedInterest,
- required this.isDarkTheme,
required this.isEnabled,
required this.onCollectInterest,
required this.onReinvestInterest,
@@ -22,7 +21,6 @@ class InterestCardWidget extends StatelessWidget {
final String accruedInterest;
final String? fiatAccruedInterest;
final FiatCurrency? fiatCurrency;
- final bool isDarkTheme;
final bool isEnabled;
final VoidCallback onCollectInterest;
final VoidCallback onReinvestInterest;
@@ -37,12 +35,8 @@ class InterestCardWidget extends StatelessWidget {
borderRadius: BorderRadius.circular(15),
gradient: LinearGradient(
colors: [
- isDarkTheme
- ? CustomThemeColors.cardGradientColorPrimaryDark
- : CustomThemeColors.cardGradientColorPrimaryLight,
- isDarkTheme
- ? CustomThemeColors.cardGradientColorSecondaryDark
- : CustomThemeColors.cardGradientColorSecondaryLight,
+ context.customColors.cardGradientColorPrimary,
+ context.customColors.cardGradientColorSecondary,
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
@@ -52,16 +46,14 @@ class InterestCardWidget extends StatelessWidget {
padding: EdgeInsets.all(20),
child: Column(
children: [
- SavingsCard.getAssetBalanceRow(
- context,
- title: title,
- amount: accruedInterest,
- fiatAmount: fiatAccruedInterest,
- currency: CryptoCurrency.deuro,
- fiatCurrency: fiatCurrency,
- hideSymbol: false,
- onTooltipPressed: onTooltipPressed
- ),
+ SavingsCard.getAssetBalanceRow(context,
+ title: title,
+ amount: accruedInterest,
+ fiatAmount: fiatAccruedInterest,
+ currency: CryptoCurrency.deuro,
+ fiatCurrency: fiatCurrency,
+ hideSymbol: false,
+ onTooltipPressed: onTooltipPressed),
SizedBox(height: 10),
Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
Expanded(
diff --git a/lib/src/screens/integrations/deuro/widgets/savings_card_widget.dart b/lib/src/screens/integrations/deuro/widgets/savings_card_widget.dart
index 36b92b45b..3cb1ba67e 100644
--- a/lib/src/screens/integrations/deuro/widgets/savings_card_widget.dart
+++ b/lib/src/screens/integrations/deuro/widgets/savings_card_widget.dart
@@ -4,28 +4,14 @@ import 'package:auto_size_text/auto_size_text.dart';
import 'package:cake_wallet/entities/fiat_currency.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
-import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/core/theme_extension.dart';
import 'package:cw_core/crypto_currency.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class SavingsCard extends StatelessWidget {
- final bool isDarkTheme;
- final bool isEnabled;
- final bool isLoading;
- final String interestRate;
- final String savingsBalance;
- final String? fiatSavingsBalance;
- final FiatCurrency? fiatCurrency;
- final CryptoCurrency currency;
- final VoidCallback onAddSavingsPressed;
- final VoidCallback onRemoveSavingsPressed;
- final VoidCallback onApproveSavingsPressed;
- final VoidCallback onTooltipPressed;
-
const SavingsCard({
super.key,
- required this.isDarkTheme,
required this.interestRate,
required this.savingsBalance,
required this.currency,
@@ -39,6 +25,18 @@ class SavingsCard extends StatelessWidget {
this.fiatCurrency,
});
+ final bool isEnabled;
+ final bool isLoading;
+ final String interestRate;
+ final String savingsBalance;
+ final String? fiatSavingsBalance;
+ final FiatCurrency? fiatCurrency;
+ final CryptoCurrency currency;
+ final VoidCallback onAddSavingsPressed;
+ final VoidCallback onRemoveSavingsPressed;
+ final VoidCallback onApproveSavingsPressed;
+ final VoidCallback onTooltipPressed;
+
@override
Widget build(BuildContext context) => Container(
margin: const EdgeInsets.all(15),
@@ -77,12 +75,8 @@ class SavingsCard extends StatelessWidget {
borderRadius: BorderRadius.circular(15),
gradient: LinearGradient(
colors: [
- isDarkTheme
- ? CustomThemeColors.cardGradientColorPrimaryDark
- : CustomThemeColors.cardGradientColorPrimaryLight,
- isDarkTheme
- ? CustomThemeColors.cardGradientColorSecondaryDark
- : CustomThemeColors.cardGradientColorSecondaryLight,
+ context.customColors.cardGradientColorPrimary,
+ context.customColors.cardGradientColorSecondary,
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
diff --git a/lib/src/screens/new_wallet/advanced_privacy_settings_page.dart b/lib/src/screens/new_wallet/advanced_privacy_settings_page.dart
index bd03c17bd..44840dbed 100644
--- a/lib/src/screens/new_wallet/advanced_privacy_settings_page.dart
+++ b/lib/src/screens/new_wallet/advanced_privacy_settings_page.dart
@@ -65,9 +65,8 @@ class _AdvancedPrivacySettingsBody extends StatefulWidget {
this.toggleUseTestnet,
this.privacySettingsViewModel,
this.nodeViewModel,
- this.seedTypeViewModel, {
- Key? key,
- }) : super(key: key);
+ this.seedTypeViewModel,
+ );
final AdvancedPrivacySettingsViewModel privacySettingsViewModel;
final NodeCreateOrEditViewModel nodeViewModel;
diff --git a/lib/src/screens/new_wallet/new_wallet_page.dart b/lib/src/screens/new_wallet/new_wallet_page.dart
index 6240a68a8..be6a4ccbd 100644
--- a/lib/src/screens/new_wallet/new_wallet_page.dart
+++ b/lib/src/screens/new_wallet/new_wallet_page.dart
@@ -44,7 +44,7 @@ class NewWalletPage extends BasePage {
@override
Widget Function(BuildContext, Widget) get rootWrapper =>
- (BuildContext context, Widget scaffold) => GradientBackground(scaffold: scaffold);
+ (BuildContext context, Widget scaffold) => GradientBackground(scaffold: scaffold);
@override
String get title => S.current.new_wallet;
@@ -228,11 +228,11 @@ class _WalletNameFormState extends State {
color: Theme.of(context).colorScheme.onSurface,
),
placeholderTextStyle: Theme.of(context).textTheme.bodyMedium?.copyWith(
- color: Theme.of(context).colorScheme.onSurfaceVariant,
- height: 1.4,
- fontSize: 18.0,
- fontWeight: FontWeight.w500,
- ),
+ color: Theme.of(context).colorScheme.onSurfaceVariant,
+ height: 1.4,
+ fontSize: 18.0,
+ fontWeight: FontWeight.w500,
+ ),
hintText: S.of(context).password,
),
BaseTextFormField(
@@ -247,11 +247,11 @@ class _WalletNameFormState extends State {
color: Theme.of(context).colorScheme.onSurface,
),
placeholderTextStyle: Theme.of(context).textTheme.bodyMedium?.copyWith(
- color: Theme.of(context).colorScheme.onSurfaceVariant,
- height: 1.4,
- fontSize: 18.0,
- fontWeight: FontWeight.w500,
- ),
+ color: Theme.of(context).colorScheme.onSurfaceVariant,
+ height: 1.4,
+ fontSize: 18.0,
+ fontWeight: FontWeight.w500,
+ ),
hintText: S.of(context).repeat_wallet_password,
),
],
diff --git a/lib/src/screens/new_wallet/new_wallet_type_page.dart b/lib/src/screens/new_wallet/new_wallet_type_page.dart
index 2e58032b3..26ae913a7 100644
--- a/lib/src/screens/new_wallet/new_wallet_type_page.dart
+++ b/lib/src/screens/new_wallet/new_wallet_type_page.dart
@@ -143,8 +143,8 @@ class WalletTypeFormState extends State {
key: ValueKey('new_wallet_type_${type.name}_button_key'),
image: Image.asset(
walletTypeToCryptoCurrency(type).iconPath ?? '',
- height: 24,
- width: 24,
+ height: 28,
+ width: 28,
),
text: walletTypeToDisplayName(type),
showTrailingIcon: false,
diff --git a/lib/src/screens/new_wallet/widgets/grouped_wallet_expansion_tile.dart b/lib/src/screens/new_wallet/widgets/grouped_wallet_expansion_tile.dart
index 3d420d751..c028dc621 100644
--- a/lib/src/screens/new_wallet/widgets/grouped_wallet_expansion_tile.dart
+++ b/lib/src/screens/new_wallet/widgets/grouped_wallet_expansion_tile.dart
@@ -51,101 +51,98 @@ class GroupedWalletExpansionTile extends StatelessWidget {
@override
Widget build(BuildContext context) {
- final backgroundColor = color ?? (isSelected ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.surfaceContainer);
+ final backgroundColor = color ??
+ (isSelected
+ ? Theme.of(context).colorScheme.primary
+ : Theme.of(context).colorScheme.surfaceContainer);
final effectiveTextColor = textColor ??
(isSelected
? Theme.of(context).colorScheme.onPrimary
- : Theme.of(context).colorScheme.onSecondaryContainer);
+ : Theme.of(context).colorScheme.onSurface);
final effectiveArrowColor = arrowColor ??
(isSelected
? Theme.of(context).colorScheme.onPrimary
- : Theme.of(context).colorScheme.onSecondaryContainer);
- return Container(
- decoration: BoxDecoration(
- borderRadius: borderRadius ?? BorderRadius.all(Radius.circular(30)),
- color: backgroundColor,
- ),
- margin: margin ?? const EdgeInsets.only(bottom: 12.0),
- child: Theme(
- data: Theme.of(context).copyWith(
- dividerColor: Colors.transparent,
- splashFactory: NoSplash.splashFactory,
- ),
- child: ExpansionTile(
- onExpansionChanged: onExpansionChanged,
- initiallyExpanded: shouldShowCurrentWalletPointer
- ? childWallets.any((element) => element.isCurrent)
- : false,
- key: tileKey,
- tilePadding:
- EdgeInsets.symmetric(vertical: 1, horizontal: !isCurrentlySelectedWallet ? 16 : 0),
- iconColor: effectiveArrowColor,
- collapsedIconColor: effectiveArrowColor,
- leading: leadingWidget,
- trailing: trailingWidget ?? (childWallets.isEmpty ? SizedBox.shrink() : null),
- title: GestureDetector(
- onTap: onTitleTapped,
- child: Text(
- title,
- style: Theme.of(context).textTheme.bodyMedium!.copyWith(
- fontSize: 18,
- fontWeight: FontWeight.w500,
- color: effectiveTextColor,
- ),
- textAlign: TextAlign.left,
- ),
+ : Theme.of(context).colorScheme.onSurfaceVariant);
+ return Padding(
+ padding: EdgeInsets.symmetric(vertical: 6),
+ child: ExpansionTile(
+ shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)),
+ collapsedShape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)),
+ collapsedBackgroundColor: backgroundColor,
+ backgroundColor: backgroundColor,
+ onExpansionChanged: onExpansionChanged,
+ initiallyExpanded: shouldShowCurrentWalletPointer
+ ? childWallets.any((element) => element.isCurrent)
+ : false,
+ key: tileKey,
+ tilePadding:
+ EdgeInsets.symmetric(vertical: 1, horizontal: !isCurrentlySelectedWallet ? 16 : 0),
+ iconColor: effectiveArrowColor,
+ collapsedIconColor: effectiveArrowColor,
+ leading: leadingWidget,
+ trailing: trailingWidget ?? (childWallets.isEmpty ? SizedBox.shrink() : null),
+ title: GestureDetector(
+ onTap: onTitleTapped,
+ child: Text(
+ title,
+ style: Theme.of(context).textTheme.bodyMedium!.copyWith(
+ fontSize: 18,
+ fontWeight: FontWeight.w500,
+ color: effectiveTextColor,
+ ),
+ textAlign: TextAlign.left,
),
- children: childWallets.map(
- (item) {
- final currentColor = item.isCurrent
- ? Theme.of(context).colorScheme.primary
- : Theme.of(context).colorScheme.surface;
- final walletTypeToCrypto = walletTypeToCryptoCurrency(item.type);
- return ListTile(
- contentPadding: EdgeInsets.zero,
- key: ValueKey(item.name),
- trailing: childTrailingWidget?.call(item),
- onTap: () => onChildItemTapped(item),
- leading: SizedBox(
- width: 60,
- child: Row(
- children: [
- item.isCurrent && shouldShowCurrentWalletPointer
- ? Container(
- height: 35,
- width: 6,
- decoration: BoxDecoration(
- borderRadius: BorderRadius.only(
- topRight: Radius.circular(16),
- bottomRight: Radius.circular(16),
- ),
- color: currentColor,
- ),
- )
- : SizedBox(width: 6),
- SizedBox(width: 16),
- Image.asset(
- walletTypeToCrypto.iconPath!,
- width: 32,
- height: 32,
- ),
- ],
- ),
- ),
- title: Text(
- item.name,
- maxLines: 2,
- style: Theme.of(context).textTheme.bodyMedium!.copyWith(
- fontSize: 18,
- fontWeight: FontWeight.w500,
- color: effectiveTextColor,
- ),
- ),
- );
- },
- ).toList(),
),
+ children: childWallets.map(
+ (item) {
+ final currentColor = item.isCurrent
+ ? Theme.of(context).colorScheme.primary
+ : Theme.of(context).colorScheme.surface;
+ final walletTypeToCrypto = walletTypeToCryptoCurrency(item.type);
+ return ListTile(
+ contentPadding: EdgeInsets.zero,
+ key: ValueKey(item.name),
+ trailing: childTrailingWidget?.call(item),
+ onTap: () => onChildItemTapped(item),
+ leading: SizedBox(
+ width: 64,
+ child: Row(
+ children: [
+ item.isCurrent && shouldShowCurrentWalletPointer
+ ? Container(
+ height: 35,
+ width: 6,
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.only(
+ topRight: Radius.circular(16),
+ bottomRight: Radius.circular(16),
+ ),
+ color: currentColor,
+ ),
+ )
+ : SizedBox(width: 7),
+ SizedBox(width: 24),
+ Image.asset(
+ walletTypeToCrypto.iconPath!,
+ width: 32,
+ height: 32,
+ ),
+ ],
+ ),
+ ),
+ title: Text(
+ item.name,
+ maxLines: 2,
+ style: Theme.of(context).textTheme.bodyMedium!.copyWith(
+ fontSize: 18,
+ fontWeight: FontWeight.w500,
+ color: effectiveTextColor,
+ ),
+ ),
+ );
+ },
+ ).toList(),
),
);
}
diff --git a/lib/src/screens/nodes/widgets/node_indicator.dart b/lib/src/screens/nodes/widgets/node_indicator.dart
index aa5458df2..0b6677e37 100644
--- a/lib/src/screens/nodes/widgets/node_indicator.dart
+++ b/lib/src/screens/nodes/widgets/node_indicator.dart
@@ -1,8 +1,8 @@
-import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/core/custom_theme_colors.dart';
import 'package:flutter/material.dart';
class NodeIndicator extends StatelessWidget {
- NodeIndicator({this.isLive = false});
+ const NodeIndicator({this.isLive = false});
final bool isLive;
diff --git a/lib/src/screens/receive/address_list_page.dart b/lib/src/screens/receive/address_list_page.dart
index b2af4389c..5f6794715 100644
--- a/lib/src/screens/receive/address_list_page.dart
+++ b/lib/src/screens/receive/address_list_page.dart
@@ -20,7 +20,6 @@ class AddressListPage extends BasePage {
children: [
AddressList(
addressListViewModel: addressListViewModel,
- currentTheme: currentTheme,
onSelect: (String address) async {
Navigator.of(context).pop(address);
},
diff --git a/lib/src/screens/receive/receive_page.dart b/lib/src/screens/receive/receive_page.dart
index deb583895..030c10a7f 100644
--- a/lib/src/screens/receive/receive_page.dart
+++ b/lib/src/screens/receive/receive_page.dart
@@ -102,10 +102,9 @@ class ReceivePage extends BasePage {
heroTag: _heroTag,
amountTextFieldFocusNode: _cryptoAmountFocus,
amountController: _amountController,
- currentTheme: currentTheme,
),
),
- AddressList(addressListViewModel: addressListViewModel, currentTheme: currentTheme),
+ AddressList(addressListViewModel: addressListViewModel),
Padding(
padding: EdgeInsets.fromLTRB(24, 24, 24, 32),
child: Text(
diff --git a/lib/src/screens/receive/widgets/address_cell.dart b/lib/src/screens/receive/widgets/address_cell.dart
index ad28e71d4..fe26d87f0 100644
--- a/lib/src/screens/receive/widgets/address_cell.dart
+++ b/lib/src/screens/receive/widgets/address_cell.dart
@@ -1,5 +1,4 @@
import 'package:cake_wallet/generated/i18n.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
import 'package:cake_wallet/utils/address_formatter.dart';
import 'package:cake_wallet/view_model/wallet_address_list/wallet_address_list_item.dart';
import 'package:cw_core/wallet_type.dart';
@@ -16,7 +15,6 @@ class AddressCell extends StatelessWidget {
required this.backgroundColor,
required this.textColor,
required this.walletType,
- required this.currentTheme,
this.onTap,
this.onEdit,
this.onHide,
@@ -35,7 +33,6 @@ class AddressCell extends StatelessWidget {
required Color backgroundColor,
required Color textColor,
required WalletType walletType,
- required MaterialThemeBase currentTheme,
Function(String)? onTap,
bool hasBalance = false,
bool hasReceived = false,
@@ -52,7 +49,6 @@ class AddressCell extends StatelessWidget {
backgroundColor: backgroundColor,
textColor: textColor,
walletType: walletType,
- currentTheme: currentTheme,
onTap: onTap,
onEdit: onEdit,
onHide: onHide,
@@ -72,7 +68,6 @@ class AddressCell extends StatelessWidget {
final Color backgroundColor;
final Color textColor;
final WalletType walletType;
- final MaterialThemeBase currentTheme;
final Function(String)? onTap;
final Function()? onEdit;
final Function()? onHide;
diff --git a/lib/src/screens/receive/widgets/address_list.dart b/lib/src/screens/receive/widgets/address_list.dart
index 79b508f70..2f44b9a47 100644
--- a/lib/src/screens/receive/widgets/address_list.dart
+++ b/lib/src/screens/receive/widgets/address_list.dart
@@ -19,15 +19,9 @@ import 'package:flutter/material.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
class AddressList extends StatefulWidget {
- const AddressList({
- super.key,
- required this.addressListViewModel,
- required this.currentTheme,
- this.onSelect,
- });
+ const AddressList({super.key, required this.addressListViewModel, this.onSelect});
final WalletAddressListViewModel addressListViewModel;
- final MaterialThemeBase currentTheme;
final Function(String)? onSelect;
@override
@@ -167,7 +161,6 @@ class _AddressListState extends State {
return AddressCell.fromItem(
item,
isCurrent: isCurrent,
- currentTheme: widget.currentTheme,
walletType: widget.addressListViewModel.type,
hasBalance: widget.addressListViewModel.isBalanceAvailable,
hasReceived: widget.addressListViewModel.isReceivedAvailable,
diff --git a/lib/src/screens/receive/widgets/currency_input_field.dart b/lib/src/screens/receive/widgets/currency_input_field.dart
index 048b1d473..2a061c4d0 100644
--- a/lib/src/screens/receive/widgets/currency_input_field.dart
+++ b/lib/src/screens/receive/widgets/currency_input_field.dart
@@ -1,6 +1,5 @@
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/widgets/base_text_form_field.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
import 'package:cw_core/crypto_amount_format.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
@@ -15,7 +14,6 @@ class CurrencyAmountTextField extends StatelessWidget {
this.allAmountButton = false,
this.isPickerEnable = false,
this.isSelected = false,
- this.currentThemeType = ThemeType.dark,
this.onTapPicker,
this.padding,
this.imageArrow,
@@ -54,7 +52,6 @@ class CurrencyAmountTextField extends StatelessWidget {
final bool isAmountEditable;
final FormFieldValidator? currencyValueValidator;
final bool isPickerEnable;
- final ThemeType currentThemeType;
final bool isSelected;
final bool allAmountButton;
final VoidCallback? allAmountCallback;
@@ -84,7 +81,7 @@ class CurrencyAmountTextField extends StatelessWidget {
child: imageArrow ??
Image.asset(
'assets/images/arrow_bottom_purple_icon.png',
- color: textColor,
+ color: Theme.of(context).colorScheme.primary,
height: 8,
),
),
diff --git a/lib/src/screens/receive/widgets/qr_widget.dart b/lib/src/screens/receive/widgets/qr_widget.dart
index b44f30a59..6a40850b6 100644
--- a/lib/src/screens/receive/widgets/qr_widget.dart
+++ b/lib/src/screens/receive/widgets/qr_widget.dart
@@ -4,7 +4,6 @@ import 'package:cake_wallet/src/widgets/primary_button.dart';
import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/src/screens/exchange/widgets/currency_picker.dart';
import 'package:cake_wallet/src/screens/receive/widgets/currency_input_field.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/screens/receive/widgets/qr_image.dart';
import 'package:cake_wallet/src/widgets/bottom_sheet/base_bottom_sheet_widget.dart';
@@ -24,7 +23,6 @@ import 'package:url_launcher/url_launcher.dart';
class QRWidget extends StatelessWidget {
QRWidget({
required this.addressListViewModel,
- required this.currentTheme,
this.qrVersion,
this.heroTag,
required this.amountController,
@@ -36,7 +34,6 @@ class QRWidget extends StatelessWidget {
final TextEditingController amountController;
final FocusNode? amountTextFieldFocusNode;
final GlobalKey formKey;
- final MaterialThemeBase currentTheme;
final int? qrVersion;
final String? heroTag;
@@ -211,7 +208,6 @@ class QRWidget extends StatelessWidget {
amountFocusNode: amountTextFieldFocusNode,
amountController: amountController,
padding: EdgeInsets.only(top: 20, left: _width / 4),
- currentThemeType: currentTheme.type,
isAmountEditable: true,
tag: addressListViewModel.selectedCurrency.tag,
onTapPicker: () => _presentPicker(context),
@@ -312,7 +308,6 @@ class QRWidget extends StatelessWidget {
builder: (context) => InfoBottomSheet(
titleText: S.of(context).payjoin_unavailable_sheet_title,
content: S.of(context).payjoin_unavailable_sheet_content,
- currentTheme: currentTheme,
footerType: FooterType.doubleActionButton,
doubleActionLeftButtonText: S.of(context).learn_more,
onLeftActionButtonPressed: () => launchUrl(
diff --git a/lib/src/screens/restore/restore_options_page.dart b/lib/src/screens/restore/restore_options_page.dart
index 63a9c60f4..4d9300b06 100644
--- a/lib/src/screens/restore/restore_options_page.dart
+++ b/lib/src/screens/restore/restore_options_page.dart
@@ -10,7 +10,6 @@ import 'package:cake_wallet/utils/permission_handler.dart';
import 'package:cake_wallet/utils/responsive_layout_util.dart';
import 'package:cake_wallet/utils/show_pop_up.dart';
import 'package:cake_wallet/view_model/restore/wallet_restore_from_qr_code.dart';
-import 'package:cake_wallet/wallet_type_utils.dart';
import 'package:cw_core/wallet_info.dart';
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
@@ -20,12 +19,13 @@ class RestoreOptionsPage extends BasePage {
@override
String get title => S.current.restore_restore_wallet;
-
final bool isNewInstall;
@override
- Widget body(BuildContext context) =>
- _RestoreOptionsBody(isNewInstall: isNewInstall, themeType: currentTheme.type);
+ Widget body(BuildContext context) => _RestoreOptionsBody(
+ isNewInstall: isNewInstall,
+ themeType: currentTheme.type,
+ );
}
class _RestoreOptionsBody extends StatefulWidget {
@@ -71,70 +71,68 @@ class _RestoreOptionsBodyState extends State<_RestoreOptionsBody> {
return Center(
child: Container(
- width: ResponsiveLayoutUtilBase.kDesktopMaxWidthConstraint,
- height: double.infinity,
- padding: EdgeInsets.symmetric(vertical: 24, horizontal: 24),
- child: SingleChildScrollView(
- child: Column(
- children: [
- OptionTile(
- key: ValueKey('restore_options_from_seeds_or_keys_button_key'),
- onPressed: () => Navigator.pushNamed(context, Routes.restoreWalletFromSeedKeys),
- image: imageSeedKeys,
- title: S.of(context).restore_title_from_seed_keys,
- description: S.of(context).restore_description_from_seed_keys,
- ),
- if (FeatureFlag.hasBitcoinViewOnly && DeviceInfo.instance.isMobile)
- Padding(
- padding: EdgeInsets.only(top: 24),
- child: OptionTile(
- key: ValueKey('restore_options_from_cupcake_button_key'),
- onPressed: () => _onScanQRCode(context),
- image: imageRestoreCupcake,
- title: S.of(context).restore_title_from_cupcake,
- description: S.of(context).restore_description_from_cupcake,
- tag: S.of(context).new_tag,
- ),
- ),
+ width: ResponsiveLayoutUtilBase.kDesktopMaxWidthConstraint,
+ height: double.infinity,
+ padding: EdgeInsets.symmetric(vertical: 24, horizontal: 24),
+ child: SingleChildScrollView(
+ child: Column(
+ children: [
+ OptionTile(
+ key: ValueKey('restore_options_from_seeds_or_keys_button_key'),
+ onPressed: () => Navigator.pushNamed(context, Routes.restoreWalletFromSeedKeys),
+ image: imageSeedKeys,
+ title: S.of(context).restore_title_from_seed_keys,
+ description: S.of(context).restore_description_from_seed_keys,
+ ),
+ if (FeatureFlag.hasBitcoinViewOnly && DeviceInfo.instance.isMobile)
Padding(
- padding: EdgeInsets.only(top: 24),
+ padding: EdgeInsets.only(top: 12),
child: OptionTile(
- key: ValueKey('restore_options_from_hardware_wallet_button_key'),
- onPressed: () => Navigator.pushNamed(
- context,
- isSingleCoin
- ? Routes.connectHardwareWallet
- : Routes.restoreWalletFromHardwareWallet),
- image: imageRestoreHW,
- title: S.of(context).restore_title_from_hardware_wallet,
- description: S.of(context).restore_description_from_hardware_wallet,
+ key: ValueKey('restore_options_from_cupcake_button_key'),
+ onPressed: () => _onScanQRCode(context),
+ image: imageRestoreCupcake,
+ title: S.of(context).restore_title_from_cupcake,
+ description: S.of(context).restore_description_from_cupcake,
+ tag: S.of(context).new_tag,
),
),
- if (widget.isNewInstall)
- Padding(
- padding: EdgeInsets.only(top: 24),
- child: OptionTile(
- key: ValueKey('restore_options_from_backup_button_key'),
- onPressed: () => Navigator.pushNamed(context, Routes.restoreFromBackup),
- image: imageRestoreBackup,
- title: S.of(context).restore_title_from_backup,
- description: S.of(context).restore_description_from_backup,
- ),
+ Padding(
+ padding: EdgeInsets.only(top: 12),
+ child: OptionTile(
+ key: ValueKey('restore_options_from_hardware_wallet_button_key'),
+ onPressed: () =>
+ Navigator.pushNamed(context, Routes.restoreWalletFromHardwareWallet),
+ image: imageRestoreHW,
+ title: S.of(context).restore_title_from_hardware_wallet,
+ description: S.of(context).restore_description_from_hardware_wallet,
+ ),
+ ),
+ if (widget.isNewInstall)
+ Padding(
+ padding: EdgeInsets.only(top: 12),
+ child: OptionTile(
+ key: ValueKey('restore_options_from_backup_button_key'),
+ onPressed: () => Navigator.pushNamed(context, Routes.restoreFromBackup),
+ image: imageRestoreBackup,
+ title: S.of(context).restore_title_from_backup,
+ description: S.of(context).restore_description_from_backup,
),
- if (DeviceInfo.instance.isMobile)
- Padding(
- padding: EdgeInsets.only(top: 24),
- child: OptionTile(
- key: ValueKey('restore_options_from_qr_button_key'),
- onPressed: () => _onScanQRCode(context),
- image: imageRestoreQR,
- title: S.of(context).scan_qr_code,
- description: S.of(context).cold_or_recover_wallet,
- ),
+ ),
+ if (DeviceInfo.instance.isMobile)
+ Padding(
+ padding: EdgeInsets.only(top: 12),
+ child: OptionTile(
+ key: ValueKey('restore_options_from_qr_button_key'),
+ onPressed: () => _onScanQRCode(context),
+ image: imageRestoreQR,
+ title: S.of(context).scan_qr_code,
+ description: S.of(context).cold_or_recover_wallet,
),
- ],
- ),
- )),
+ ),
+ ],
+ ),
+ ),
+ ),
);
}
diff --git a/lib/src/screens/restore/wallet_restore_page.dart b/lib/src/screens/restore/wallet_restore_page.dart
index 411178c83..ef2fd3eb5 100644
--- a/lib/src/screens/restore/wallet_restore_page.dart
+++ b/lib/src/screens/restore/wallet_restore_page.dart
@@ -42,7 +42,6 @@ class WalletRestorePage extends BasePage {
: S.current.restore_title_from_keys,
style: Theme.of(context).textTheme.titleMedium?.copyWith(
fontSize: 18,
-
fontWeight: FontWeight.w600,
),
),
@@ -147,7 +146,6 @@ class WalletRestorePage extends BasePage {
bottom: MediaQuery.of(bottomSheetContext).viewInsets.bottom,
),
child: AddPassphraseBottomSheet(
- currentTheme: currentTheme,
titleText: S.of(context).add_passphrase,
onRestoreButtonPressed: (passphrase) async {
await _onPassphraseBottomSheetRestoreButtonPressed(
diff --git a/lib/src/screens/root/root.dart b/lib/src/screens/root/root.dart
index cfedbc36d..f3da7945a 100644
--- a/lib/src/screens/root/root.dart
+++ b/lib/src/screens/root/root.dart
@@ -153,6 +153,10 @@ class RootState extends State with WidgetsBindingObserver {
break;
case AppLifecycleState.resumed:
+
+ // Reset inactive state when app resumes
+ if (_isInactive) setState(() => _setInactive(false));
+
widget.authService.requireAuth().then((value) {
if (mounted) {
setState(() {
@@ -201,8 +205,14 @@ class RootState extends State with WidgetsBindingObserver {
@override
void didChangePlatformBrightness() {
+ // Only handle theme changes when the app is active (not in background)
+ if (_isInactive) return;
+
if (widget.appStore.themeStore.themeMode == ThemeMode.system) {
Future.delayed(Duration(milliseconds: Platform.isIOS ? 500 : 0), () {
+ // Double-check that app is still active before applying theme change
+ if (_isInactive) return;
+
final systemTheme = widget.appStore.themeStore.getThemeFromSystem();
if (widget.appStore.themeStore.currentTheme != systemTheme) {
widget.appStore.themeStore.setTheme(systemTheme);
@@ -272,6 +282,16 @@ class RootState extends State with WidgetsBindingObserver {
_postFrameCallback = false;
_setInactive(false);
});
+
+ // Apply any missed theme changes after successful authentication
+ if (widget.appStore.themeStore.themeMode == ThemeMode.system) {
+ Future.delayed(Duration(milliseconds: 100), () {
+ final systemTheme = widget.appStore.themeStore.getThemeFromSystem();
+ if (widget.appStore.themeStore.currentTheme != systemTheme) {
+ widget.appStore.themeStore.setTheme(systemTheme);
+ }
+ });
+ }
}
void _setInactive(bool value) {
diff --git a/lib/src/screens/seed/wallet_seed_page.dart b/lib/src/screens/seed/wallet_seed_page.dart
index 8fcda18b9..1101097f9 100644
--- a/lib/src/screens/seed/wallet_seed_page.dart
+++ b/lib/src/screens/seed/wallet_seed_page.dart
@@ -68,19 +68,16 @@ class WalletSeedPage extends BasePage {
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(height: 16),
- WarningBox(
- content: S.current.cake_seeds_save_disclaimer,
- currentTheme: currentTheme,
- ),
+ WarningBox(content: S.current.cake_seeds_save_disclaimer),
SizedBox(height: 36),
Text(
key: ValueKey('wallet_seed_page_wallet_name_text_key'),
walletSeedViewModel.name,
style: Theme.of(context).textTheme.bodyMedium!.copyWith(
- fontSize: 18,
- fontWeight: FontWeight.w600,
- color: Theme.of(context).colorScheme.onSurface,
- ),
+ fontSize: 18,
+ fontWeight: FontWeight.w600,
+ color: Theme.of(context).colorScheme.onSurface,
+ ),
),
SizedBox(height: 24),
Expanded(
diff --git a/lib/src/screens/send/send_page.dart b/lib/src/screens/send/send_page.dart
index f5d180731..67dd7306e 100644
--- a/lib/src/screens/send/send_page.dart
+++ b/lib/src/screens/send/send_page.dart
@@ -580,7 +580,6 @@ class SendPage extends BasePage {
key: ValueKey('send_page_confirm_sending_bottom_sheet_key'),
titleText: S.of(bottomSheetContext).confirm_transaction,
accessibleNavigationModeSlideActionButtonText: S.of(bottomSheetContext).send,
- currentTheme: currentTheme,
footerType: FooterType.slideActionButton,
walletType: sendViewModel.walletType,
titleIconPath: sendViewModel.selectedCryptoCurrency.iconPath,
@@ -630,7 +629,6 @@ class SendPage extends BasePage {
builder: (BuildContext bottomSheetContext) {
return showContactSheet && sendViewModel.ocpRequest == null
? InfoBottomSheet(
- currentTheme: currentTheme,
footerType: FooterType.doubleActionButton,
titleText: S.of(bottomSheetContext).transaction_sent,
contentImage: 'assets/images/contact.png',
@@ -684,7 +682,6 @@ class SendPage extends BasePage {
},
)
: InfoBottomSheet(
- currentTheme: currentTheme,
footerType: FooterType.singleActionButton,
titleText: S.of(bottomSheetContext).transaction_sent,
contentImage: 'assets/images/birthday_cake.png',
@@ -747,7 +744,6 @@ class SendPage extends BasePage {
builder: (context) {
dialogContext = context;
return InfoBottomSheet(
- currentTheme: currentTheme,
footerType: FooterType.singleActionButton,
titleText: S.of(context).proceed_on_device,
contentImage: 'assets/images/hardware_wallet/ledger_nano_x.png',
diff --git a/lib/src/screens/send/widgets/send_card.dart b/lib/src/screens/send/widgets/send_card.dart
index d1848e61d..d12071936 100644
--- a/lib/src/screens/send/widgets/send_card.dart
+++ b/lib/src/screens/send/widgets/send_card.dart
@@ -121,8 +121,11 @@ class SendCardState extends State with AutomaticKeepAliveClientMixin with AutomaticKeepAliveClientMixin _handleSelectWallet(
paymentViewModel,
@@ -221,7 +223,6 @@ class SendCardState extends State with AutomaticKeepAliveClientMixin AlertWithOneAction(
- alertTitle: S.current.background_sync,
- alertContent: S.current.unrestricted_background_service_notice,
- buttonText: S.current.ok,
- buttonAction: () => Navigator.of(context).pop(),
- ));
+ await showPopUp(
+ context: context,
+ builder: (context) => AlertWithOneAction(
+ alertTitle: S.current.background_sync,
+ alertContent: S.current.unrestricted_background_service_notice,
+ buttonText: S.current.ok,
+ buttonAction: () => Navigator.of(context).pop(),
+ ));
await dashboardViewModel.disableBatteryOptimization();
for (var i = 0; i < 4 * 60; i++) {
await Future.delayed(Duration(milliseconds: 250));
@@ -65,16 +64,20 @@ class BackgroundSyncPage extends BasePage {
items: SyncMode.all,
displayItem: (SyncMode syncMode) => syncMode.name,
selectedItem: dashboardViewModel.settingsStore.currentSyncMode,
- onItemSelected: (dashboardViewModel.batteryOptimizationEnabled && dashboardViewModel.hasBatteryOptimization) ? null : (syncMode) async {
- dashboardViewModel.setSyncMode(syncMode);
- });
+ onItemSelected: (dashboardViewModel.batteryOptimizationEnabled &&
+ dashboardViewModel.hasBatteryOptimization)
+ ? null
+ : (syncMode) async {
+ dashboardViewModel.setSyncMode(syncMode);
+ });
}),
if (dashboardViewModel.hasBgsyncNetworkConstraints)
Observer(builder: (context) {
return SettingsSwitcherCell(
title: S.current.background_sync_on_unmetered_network,
value: dashboardViewModel.backgroundSyncNetworkUnmetered,
- onValueChange: (_, bool value) => dashboardViewModel.setBackgroundSyncNetworkUnmetered(value),
+ onValueChange: (_, bool value) =>
+ dashboardViewModel.setBackgroundSyncNetworkUnmetered(value),
);
}),
if (dashboardViewModel.hasBgsyncBatteryNotLowConstraints)
@@ -82,7 +85,8 @@ class BackgroundSyncPage extends BasePage {
return SettingsSwitcherCell(
title: S.current.background_sync_on_battery_low,
value: !dashboardViewModel.backgroundSyncBatteryNotLow,
- onValueChange: (_, bool value) => dashboardViewModel.setBackgroundSyncBatteryNotLow(!value),
+ onValueChange: (_, bool value) =>
+ dashboardViewModel.setBackgroundSyncBatteryNotLow(!value),
);
}),
if (dashboardViewModel.hasBgsyncChargingConstraints)
@@ -90,7 +94,8 @@ class BackgroundSyncPage extends BasePage {
return SettingsSwitcherCell(
title: S.current.background_sync_on_charging,
value: dashboardViewModel.backgroundSyncCharging,
- onValueChange: (_, bool value) => dashboardViewModel.setBackgroundSyncCharging(value),
+ onValueChange: (_, bool value) =>
+ dashboardViewModel.setBackgroundSyncCharging(value),
);
}),
if (dashboardViewModel.hasBgsyncDeviceIdleConstraints)
@@ -98,25 +103,28 @@ class BackgroundSyncPage extends BasePage {
return SettingsSwitcherCell(
title: S.current.background_sync_on_device_idle,
value: dashboardViewModel.backgroundSyncDeviceIdle,
- onValueChange: (_, bool value) => dashboardViewModel.setBackgroundSyncDeviceIdle(value),
+ onValueChange: (_, bool value) =>
+ dashboardViewModel.setBackgroundSyncDeviceIdle(value),
);
}),
Observer(builder: (context) {
return SettingsSwitcherCell(
title: S.current.new_transactions_notifications,
value: dashboardViewModel.backgroundSyncNotificationsEnabled,
- onValueChange: (_, bool value) {
+ onValueChange: (_, bool value) {
try {
dashboardViewModel.setBackgroundSyncNotificationsEnabled(value);
} catch (e) {
- showPopUp(context: context, builder: (context) => AlertWithOneAction(
- alertTitle: S.current.error,
- alertContent: S.current.notification_permission_denied,
- buttonText: S.current.ok,
- buttonAction: () {
- Navigator.of(context).pop();
- },
- ));
+ showPopUp(
+ context: context,
+ builder: (context) => AlertWithOneAction(
+ alertTitle: S.current.error,
+ alertContent: S.current.notification_permission_denied,
+ buttonText: S.current.ok,
+ buttonAction: () {
+ Navigator.of(context).pop();
+ },
+ ));
}
},
);
diff --git a/lib/src/screens/settings/display_settings_page.dart b/lib/src/screens/settings/display_settings_page.dart
index 7420575f1..003e64d90 100644
--- a/lib/src/screens/settings/display_settings_page.dart
+++ b/lib/src/screens/settings/display_settings_page.dart
@@ -3,6 +3,7 @@ import 'package:cake_wallet/entities/language_service.dart';
import 'package:cake_wallet/entities/sync_status_display_mode.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/screens/base_page.dart';
+import 'package:cake_wallet/src/screens/settings/widgets/settings_choices_cell.dart';
import 'package:cake_wallet/src/screens/settings/widgets/settings_picker_cell.dart';
import 'package:cake_wallet/src/screens/settings/widgets/settings_switcher_cell.dart';
import 'package:cake_wallet/src/screens/settings/widgets/settings_theme_choice.dart';
@@ -12,6 +13,7 @@ import 'package:cake_wallet/utils/device_info.dart';
import 'package:cake_wallet/utils/feature_flag.dart';
import 'package:cake_wallet/utils/responsive_layout_util.dart';
import 'package:cake_wallet/utils/show_pop_up.dart';
+import 'package:cake_wallet/view_model/settings/choices_list_item.dart';
import 'package:cake_wallet/view_model/settings/display_settings_view_model.dart';
import 'package:flutter/material.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
@@ -32,6 +34,7 @@ class DisplaySettingsPage extends BasePage {
return Container(
padding: EdgeInsets.only(top: 10),
child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
children: [
SettingsSwitcherCell(
title: S.of(context).show_market_place,
@@ -100,17 +103,59 @@ class DisplaySettingsPage extends BasePage {
),
if (responsiveLayoutUtil.shouldRenderMobileUI && DeviceInfo.instance.isMobile) ...[
- SettingsSwitcherCell(
- title: S.of(context).use_device_theme,
- value: _displaySettingsViewModel.themeMode == ThemeMode.system,
- onValueChange: (_, bool value) {
- _displaySettingsViewModel
- .setThemeMode(value ? ThemeMode.system : ThemeMode.dark);
- },
+ SizedBox(height: 24),
+ Padding(
+ padding: const EdgeInsets.only(left: 24),
+ child: Text(
+ S.current.appearance,
+ style: Theme.of(context).textTheme.bodyMedium?.copyWith(
+ fontWeight: FontWeight.w400,
+ fontSize: 14,
+ height: 22 / 14,
+ color: Theme.of(context).colorScheme.onSurface,
+ ),
+ ),
),
- Semantics(
- label: S.of(context).color_theme,
- child: SettingsThemeChoicesCell(_displaySettingsViewModel),
+ SizedBox(height: 12),
+ Container(
+ margin: EdgeInsets.symmetric(horizontal: 20),
+ decoration: BoxDecoration(
+ color: Theme.of(context).colorScheme.surfaceContainer,
+ borderRadius: BorderRadius.circular(16),
+ ),
+ child: Column(
+ children: [
+ SettingsChoicesCell(
+ ChoicesListItem(
+ title: "",
+ items: ThemeMode.values,
+ selectedItem: _displaySettingsViewModel.themeMode,
+ onItemSelected: (ThemeMode themeMode) =>
+ _displaySettingsViewModel.setThemeMode(themeMode),
+ displayItem: (ThemeMode themeMode) {
+ return themeMode.name[0].toUpperCase() +
+ themeMode.name.substring(1).toLowerCase();
+ },
+ ),
+ useGenericColor: false,
+ padding: EdgeInsets.all(12),
+ ),
+ Container(
+ decoration: BoxDecoration(
+ color: Theme.of(context).colorScheme.surfaceContainerHigh,
+ borderRadius: BorderRadius.circular(16),
+ ),
+ child: Column(
+ children: [
+ Semantics(
+ label: S.of(context).color_theme,
+ child: SettingsThemeChoicesCell(_displaySettingsViewModel),
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
),
],
],
diff --git a/lib/src/screens/settings/security_backup_page.dart b/lib/src/screens/settings/security_backup_page.dart
index 172ae78d9..9ab8d4663 100644
--- a/lib/src/screens/settings/security_backup_page.dart
+++ b/lib/src/screens/settings/security_backup_page.dart
@@ -114,8 +114,8 @@ class SecurityBackupPage extends BasePage {
key: ValueKey('security_backup_page_sign_and_verify'),
title: S.current.sign_verify_title,
handler: (_) => Navigator.of(context).pushNamed(Routes.signPage)
- //_securitySettingsViewModel.pinCodeRequiredDuration,
- ),
+ //_securitySettingsViewModel.pinCodeRequiredDuration,
+ ),
Observer(
builder: (context) {
return SettingsCellWithArrow(
diff --git a/lib/src/screens/settings/trocador_providers_page.dart b/lib/src/screens/settings/trocador_providers_page.dart
index 56ad7541f..e7f89ba51 100644
--- a/lib/src/screens/settings/trocador_providers_page.dart
+++ b/lib/src/screens/settings/trocador_providers_page.dart
@@ -53,7 +53,11 @@ class TrocadorProvidersPage extends BasePage {
}
class Badge extends StatelessWidget {
- Badge({required this.textColor, required this.backgroundColor, required this.title, required this.subTitle});
+ Badge(
+ {required this.textColor,
+ required this.backgroundColor,
+ required this.title,
+ required this.subTitle});
final String title;
final String subTitle;
@@ -79,10 +83,10 @@ class Badge extends StatelessWidget {
title,
textAlign: TextAlign.center,
style: Theme.of(context).textTheme.bodySmall!.copyWith(
- color: textColor,
- fontSize: 7,
- fontWeight: FontWeight.w600,
- ),
+ color: textColor,
+ fontSize: 7,
+ fontWeight: FontWeight.w600,
+ ),
),
VerticalDivider(
color: textColor,
@@ -91,9 +95,9 @@ class Badge extends StatelessWidget {
Text(
subTitle,
style: Theme.of(context).textTheme.bodySmall!.copyWith(
- color: textColor,
- fontWeight: FontWeight.w600,
- ),
+ color: textColor,
+ fontWeight: FontWeight.w600,
+ ),
),
],
),
diff --git a/lib/src/screens/settings/widgets/setting_priority_picker_cell.dart b/lib/src/screens/settings/widgets/setting_priority_picker_cell.dart
index 72249a6b5..a15c4369e 100644
--- a/lib/src/screens/settings/widgets/setting_priority_picker_cell.dart
+++ b/lib/src/screens/settings/widgets/setting_priority_picker_cell.dart
@@ -4,20 +4,20 @@ import 'package:cake_wallet/src/widgets/picker.dart';
import 'package:cake_wallet/src/widgets/standard_list.dart';
class SettingsPriorityPickerCell extends StandardListRow {
- SettingsPriorityPickerCell(
- {required String title,
- required this.selectedItem,
- required this.items,
- this.displayItem,
- this.images,
- this.searchHintText,
- this.isGridView = false,
- this.matchingCriteria,
- this.customValue,
- this.maxValue,
- this.customItemIndex,
- this.onItemSelected})
- : super(
+ SettingsPriorityPickerCell({
+ required String title,
+ required this.selectedItem,
+ required this.items,
+ this.displayItem,
+ this.images,
+ this.searchHintText,
+ this.isGridView = false,
+ this.matchingCriteria,
+ this.customValue,
+ this.maxValue,
+ this.customItemIndex,
+ this.onItemSelected,
+ }) : super(
title: title,
isSelected: false,
onTap: (BuildContext context) async {
diff --git a/lib/src/screens/settings/widgets/settings_choices_cell.dart b/lib/src/screens/settings/widgets/settings_choices_cell.dart
index 0f03dce15..798093f8d 100644
--- a/lib/src/screens/settings/widgets/settings_choices_cell.dart
+++ b/lib/src/screens/settings/widgets/settings_choices_cell.dart
@@ -2,15 +2,19 @@ import 'package:cake_wallet/view_model/settings/choices_list_item.dart';
import 'package:flutter/material.dart';
class SettingsChoicesCell extends StatelessWidget {
- const SettingsChoicesCell(this.choicesListItem, {Key? key}) : super(key: key);
+ const SettingsChoicesCell(this.choicesListItem,
+ {this.useGenericColor = true, this.padding, Key? key})
+ : super(key: key);
final ChoicesListItem choicesListItem;
+ final bool useGenericColor;
+ final EdgeInsets? padding;
@override
Widget build(BuildContext context) {
return Container(
- color: Theme.of(context).colorScheme.surface,
- padding: EdgeInsets.only(left: 24, right: 24, top: 16, bottom: 16),
+ color: useGenericColor ? Theme.of(context).colorScheme.surface : null,
+ padding: padding ?? EdgeInsets.only(left: 24, right: 24, top: 16, bottom: 16),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
@@ -30,7 +34,14 @@ class SettingsChoicesCell extends StatelessWidget {
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
- color: Theme.of(context).colorScheme.surfaceContainerHighest,
+ border: useGenericColor
+ ? null
+ : Border.all(
+ color: Theme.of(context).colorScheme.surfaceContainerHighest,
+ width: 1.5,
+ ),
+ color:
+ useGenericColor ? Theme.of(context).colorScheme.surfaceContainerHighest : null,
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
diff --git a/lib/src/screens/settings/widgets/settings_switcher_cell.dart b/lib/src/screens/settings/widgets/settings_switcher_cell.dart
index 2d97b3ca2..34019c2c8 100644
--- a/lib/src/screens/settings/widgets/settings_switcher_cell.dart
+++ b/lib/src/screens/settings/widgets/settings_switcher_cell.dart
@@ -11,16 +11,21 @@ class SettingsSwitcherCell extends StandardListRow {
this.leading,
void Function(BuildContext context)? onTap,
Key? key,
+ this.padding,
+ this.switchBackgroundColor,
}) : super(title: title, isSelected: false, decoration: decoration, onTap: onTap, key: key);
final bool value;
+ final Color? switchBackgroundColor;
final void Function(BuildContext context, bool value)? onValueChange;
final Widget? leading;
+ final EdgeInsets? padding;
@override
Widget buildTrailing(BuildContext context) => StandardSwitch(
value: value,
onTapped: () => onValueChange?.call(context, !value),
+ backgroundColor: switchBackgroundColor,
);
@override
@@ -29,7 +34,7 @@ class SettingsSwitcherCell extends StandardListRow {
final trailing = buildTrailing(context);
return Container(
height: 56,
- padding: EdgeInsets.only(left: 12, right: 12),
+ padding: padding ?? EdgeInsets.only(left: 12, right: 12),
child: TextButton(
onPressed: () {
if (onTap != null) {
@@ -39,6 +44,7 @@ class SettingsSwitcherCell extends StandardListRow {
}
},
style: ButtonStyle(
+ padding: WidgetStateProperty.all(padding ?? null),
//backgroundColor: MaterialStateProperty.all(Theme.of(context).colorScheme.surfaceContainer),
shape: WidgetStateProperty.all(
RoundedRectangleBorder(
diff --git a/lib/src/screens/settings/widgets/settings_theme_choice.dart b/lib/src/screens/settings/widgets/settings_theme_choice.dart
index ad7371e5b..0536ae9f2 100644
--- a/lib/src/screens/settings/widgets/settings_theme_choice.dart
+++ b/lib/src/screens/settings/widgets/settings_theme_choice.dart
@@ -1,112 +1,154 @@
import 'package:cake_wallet/generated/i18n.dart';
+import 'package:cake_wallet/src/screens/settings/widgets/settings_switcher_cell.dart';
+import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
import 'package:cake_wallet/themes/core/material_base_theme.dart';
-import 'package:cake_wallet/themes/utils/theme_list.dart';
+import 'package:cake_wallet/themes/theme_classes/black_theme.dart';
import 'package:cake_wallet/view_model/settings/display_settings_view_model.dart';
import 'package:flutter/material.dart';
+import 'package:flutter_mobx/flutter_mobx.dart';
class SettingsThemeChoicesCell extends StatelessWidget {
SettingsThemeChoicesCell(this._displaySettingsViewModel);
- final items = ThemeList.all;
-
final DisplaySettingsViewModel _displaySettingsViewModel;
final double cellHeight = 25;
final double cellWidth = 12;
- final double cellRadius = 6;
+ final double cellRadius = 8;
@override
Widget build(BuildContext context) {
- return Container(
- padding: EdgeInsets.all(cellHeight),
- child: Column(
- mainAxisSize: MainAxisSize.min,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Row(
- children: [
- Text(
- S.current.color_theme,
- style: Theme.of(context).textTheme.bodyMedium,
- ),
- ],
- ),
- SizedBox(height: cellHeight),
- GridView.builder(
- itemCount: items.length,
- shrinkWrap: true,
- physics: NeverScrollableScrollPhysics(),
- gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
- crossAxisCount: 3,
- mainAxisExtent: 75,
- crossAxisSpacing: 20,
- ),
- itemBuilder: (context, index) {
- final MaterialThemeBase e = items[index];
- final currentTheme = _displaySettingsViewModel.theme;
- final isSelected = currentTheme == e;
+ return Observer(
+ builder: (context) {
+ final availableThemes = _displaySettingsViewModel.availableThemes;
+ final currentTheme = _displaySettingsViewModel.currentTheme;
+ final availableAccentColors = _displaySettingsViewModel.availableAccentColors;
+ final screenHeight = MediaQuery.of(context).size.height;
- return Padding(
- padding: EdgeInsets.all(5),
- child: Semantics(
- label: e.toString(),
- selected: isSelected,
- child: GestureDetector(
- onTap: () {
- _displaySettingsViewModel.onThemeSelected(e);
- },
- child: Container(
- padding: EdgeInsets.all(5),
- decoration: BoxDecoration(
- borderRadius: BorderRadius.circular(cellRadius),
- border: isSelected
- ? Border.all(color: Theme.of(context).colorScheme.primary)
- : null,
- color: Theme.of(context)
- .colorScheme
- .onSurfaceVariant
- .withOpacity(currentTheme.brightness == Brightness.light ? 0.1 : 0.3),
+ final previewHeight = _getResponsivePreviewHeight(screenHeight);
+ final previewWidth = previewHeight * 0.6;
+
+ return Container(
+ height: getHeight(context, currentTheme, currentTheme.hasAccentColors),
+ padding: EdgeInsets.all(12),
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Expanded(
+ child: ListView.builder(
+ itemCount: availableThemes.length,
+ scrollDirection: Axis.horizontal,
+ itemBuilder: (context, index) {
+ final MaterialThemeBase theme = availableThemes[index];
+ final isSelected = _displaySettingsViewModel.isThemeSelected(theme);
+
+ return Semantics(
+ label: theme.toString(),
+ selected: isSelected,
+ child: GestureDetector(
+ onTap: () {
+ _displaySettingsViewModel.onThemeSelected(theme);
+ },
+ child: Container(
+ margin: EdgeInsets.only(right: 24),
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(cellRadius),
+ border: isSelected
+ ? Border.all(
+ color: Theme.of(context).colorScheme.primary,
+ strokeAlign: BorderSide.strokeAlignOutside)
+ : null,
+ ),
+ child: ClipRRect(
+ borderRadius: BorderRadius.circular(cellRadius),
+ child: CakeImageWidget(
+ imageUrl: _displaySettingsViewModel.getImageForTheme(theme),
+ fit: BoxFit.cover,
+ height: previewHeight,
+ width: previewWidth,
+ ),
+ ),
+ ),
),
+ );
+ },
+ ),
+ ),
+ if (_displaySettingsViewModel.currentTheme.hasAccentColors) ...[
+ SizedBox(height: cellHeight),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Text(
+ S.of(context).accent_color,
+ style: Theme.of(context).textTheme.bodyMedium,
+ ),
+ Container(
+ height: 40,
child: Row(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Container(
- padding:
- EdgeInsets.symmetric(horizontal: cellWidth, vertical: cellHeight),
- decoration: BoxDecoration(
- borderRadius: BorderRadius.only(
- topLeft: Radius.circular(cellRadius),
- bottomLeft: Radius.circular(cellRadius),
+ children: availableAccentColors.map((accentColor) {
+ final isSelected = _displaySettingsViewModel
+ .isAccentColorSelected(accentColor.name.toLowerCase());
+ return GestureDetector(
+ onTap: () {
+ _displaySettingsViewModel
+ .onAccentColorSelected(accentColor.name.toLowerCase());
+ },
+ child: Container(
+ width: 26,
+ height: 26,
+ margin: EdgeInsets.only(right: 11),
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(16),
+ border: isSelected
+ ? Border.all(
+ color: Theme.of(context).colorScheme.onSurfaceVariant,
+ width: 3)
+ : null,
+ color: accentColor.color,
),
- color: e.colorScheme.primary,
),
- ),
- Container(
- padding:
- EdgeInsets.symmetric(horizontal: cellWidth, vertical: cellHeight),
- decoration: BoxDecoration(color: e.colorScheme.surface),
- ),
- Container(
- padding:
- EdgeInsets.symmetric(horizontal: cellWidth, vertical: cellHeight),
- decoration: BoxDecoration(
- borderRadius: BorderRadius.only(
- topRight: Radius.circular(cellRadius),
- bottomRight: Radius.circular(cellRadius),
- ),
- color: e.colorScheme.tertiary,
- ),
- ),
- ],
+ );
+ }).toList(),
),
),
- ),
+ ],
),
- );
- },
+ ],
+ if (_displaySettingsViewModel.currentTheme is BlackTheme)
+ SettingsSwitcherCell(
+ title: S.current.oled_mode,
+ value: _displaySettingsViewModel.isBlackThemeOledEnabled,
+ onValueChange: (_, bool value) {
+ _displaySettingsViewModel.setBlackThemeOled(value);
+ },
+ padding: EdgeInsets.zero,
+ switchBackgroundColor: currentTheme.colorScheme.secondaryContainer,
+ ),
+ ],
),
- ],
- ),
+ );
+ },
);
}
+
+ double getHeight(BuildContext context, MaterialThemeBase theme, bool hasAccentColors) {
+ final screenHeight = MediaQuery.of(context).size.height;
+
+ double baseHeight = (screenHeight * 0.25).clamp(150.0, screenHeight * 0.5);
+
+ if (hasAccentColors) {
+ baseHeight += (screenHeight * 0.05).clamp(35.0, 60.0);
+ }
+
+ if (theme is BlackTheme) {
+ baseHeight += (screenHeight * 0.08).clamp(48.0, 96.0);
+ }
+
+ return baseHeight;
+ }
+
+ double _getResponsivePreviewHeight(double screenHeight) =>
+ (screenHeight * 0.22).clamp(160.0, 240.0);
}
diff --git a/lib/src/screens/support/support_page.dart b/lib/src/screens/support/support_page.dart
index 55a2b237c..bc762c68d 100644
--- a/lib/src/screens/support/support_page.dart
+++ b/lib/src/screens/support/support_page.dart
@@ -12,10 +12,6 @@ class SupportPage extends BasePage {
final SupportViewModel supportViewModel;
- final imageLiveSupport = Image.asset('assets/images/cake_icon.png');
- final imageWalletGuides = Image.asset('assets/images/wallet_guides.png');
- final imageMoreLinks = Image.asset('assets/images/more_links.png');
-
@override
String get title => S.current.settings_support;
diff --git a/lib/src/screens/transaction_details/rbf_details_page.dart b/lib/src/screens/transaction_details/rbf_details_page.dart
index 98d267d6a..521cf0636 100644
--- a/lib/src/screens/transaction_details/rbf_details_page.dart
+++ b/lib/src/screens/transaction_details/rbf_details_page.dart
@@ -121,7 +121,6 @@ class RBFDetailsPage extends BasePage {
}
reaction((_) => transactionDetailsViewModel.sendViewModel.state, (ExecutionState state) {
-
if (state is! IsExecutingState &&
loadingBottomSheetContext != null &&
loadingBottomSheetContext!.mounted) {
@@ -191,16 +190,20 @@ class RBFDetailsPage extends BasePage {
return ConfirmSendingBottomSheet(
key: ValueKey('rbf_confirm_sending_bottom_sheet'),
titleText: S.of(bottomSheetContext).confirm_transaction,
- currentTheme: currentTheme,
walletType: transactionDetailsViewModel.sendViewModel.walletType,
- titleIconPath: transactionDetailsViewModel.sendViewModel.selectedCryptoCurrency.iconPath,
+ titleIconPath:
+ transactionDetailsViewModel.sendViewModel.selectedCryptoCurrency.iconPath,
currency: transactionDetailsViewModel.sendViewModel.selectedCryptoCurrency,
amount: S.of(bottomSheetContext).send_amount,
- amountValue: transactionDetailsViewModel.sendViewModel.pendingTransaction!.amountFormatted,
- fiatAmountValue: transactionDetailsViewModel.sendViewModel.pendingTransactionFiatAmountFormatted,
+ amountValue:
+ transactionDetailsViewModel.sendViewModel.pendingTransaction!.amountFormatted,
+ fiatAmountValue: transactionDetailsViewModel
+ .sendViewModel.pendingTransactionFiatAmountFormatted,
fee: S.of(bottomSheetContext).send_fee,
- feeValue: transactionDetailsViewModel.sendViewModel.pendingTransaction!.feeFormatted,
- feeFiatAmount: transactionDetailsViewModel.sendViewModel.pendingTransactionFeeFiatAmountFormatted,
+ feeValue:
+ transactionDetailsViewModel.sendViewModel.pendingTransaction!.feeFormatted,
+ feeFiatAmount: transactionDetailsViewModel
+ .sendViewModel.pendingTransactionFeeFiatAmountFormatted,
outputs: transactionDetailsViewModel.sendViewModel.outputs,
footerType: FooterType.slideActionButton,
accessibleNavigationModeSlideActionButtonText: S.of(context).send,
diff --git a/lib/src/screens/unspent_coins/unspent_coins_details_page.dart b/lib/src/screens/unspent_coins/unspent_coins_details_page.dart
index 165995ba0..34a76d5b9 100644
--- a/lib/src/screens/unspent_coins/unspent_coins_details_page.dart
+++ b/lib/src/screens/unspent_coins/unspent_coins_details_page.dart
@@ -50,10 +50,12 @@ class UnspentCoinsDetailsPage extends BasePage {
if (item is UnspentCoinsSwitchItem) {
return Observer(
- builder: (_) => UnspentCoinsSwitchRow(
- title: item.title,
- switchValue: item.switchValue(),
- onSwitchValueChange: item.onSwitchValueChange));
+ builder: (_) => UnspentCoinsSwitchRow(
+ title: item.title,
+ switchValue: item.switchValue(),
+ onSwitchValueChange: item.onSwitchValueChange,
+ ),
+ );
}
if (item is BlockExplorerListItem) {
diff --git a/lib/src/screens/wallet_connect/utils/method_utils.dart b/lib/src/screens/wallet_connect/utils/method_utils.dart
index 5c4027a2b..d79adfede 100644
--- a/lib/src/screens/wallet_connect/utils/method_utils.dart
+++ b/lib/src/screens/wallet_connect/utils/method_utils.dart
@@ -5,7 +5,7 @@ import 'package:cake_wallet/src/screens/wallet_connect/models/wc_connection_mode
import 'package:cake_wallet/src/screens/wallet_connect/services/walletkit_service.dart';
import 'package:cake_wallet/src/screens/wallet_connect/widgets/wc_connection_widget.dart';
import 'package:cake_wallet/src/screens/wallet_connect/widgets/wc_request_widget.dart';
-import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/core/custom_theme_colors.dart';
import 'package:flutter/material.dart';
import 'package:reown_walletkit/reown_walletkit.dart';
diff --git a/lib/src/screens/wallet_connect/widgets/wc_request_widget.dart b/lib/src/screens/wallet_connect/widgets/wc_request_widget.dart
index d6ff37fcd..d06b20019 100644
--- a/lib/src/screens/wallet_connect/widgets/wc_request_widget.dart
+++ b/lib/src/screens/wallet_connect/widgets/wc_request_widget.dart
@@ -1,9 +1,7 @@
-import 'package:cake_wallet/di.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/screens/wallet_connect/services/bottom_sheet_service.dart';
import 'package:cake_wallet/src/screens/wallet_connect/widgets/wc_verify_context_widget.dart';
import 'package:cake_wallet/src/widgets/primary_button.dart';
-import 'package:cake_wallet/themes/core/theme_store.dart';
import 'package:flutter/material.dart';
import 'package:reown_walletkit/reown_walletkit.dart';
@@ -22,13 +20,10 @@ class WCRequestWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
- final currentTheme = getIt.get().currentTheme;
-
return Column(
mainAxisSize: MainAxisSize.min,
children: [
WCVerifyContextWidget(
- currentTheme: currentTheme,
verifyContext: verifyContext,
),
const SizedBox(height: 8),
diff --git a/lib/src/screens/wallet_connect/widgets/wc_verify_context_widget.dart b/lib/src/screens/wallet_connect/widgets/wc_verify_context_widget.dart
index b85a8e10f..efc95cc55 100644
--- a/lib/src/screens/wallet_connect/widgets/wc_verify_context_widget.dart
+++ b/lib/src/screens/wallet_connect/widgets/wc_verify_context_widget.dart
@@ -1,6 +1,5 @@
import 'package:cake_wallet/generated/i18n.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
-import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/core/custom_theme_colors.dart';
import 'package:flutter/material.dart';
import 'package:reown_walletkit/reown_walletkit.dart';
@@ -8,11 +7,9 @@ class WCVerifyContextWidget extends StatelessWidget {
const WCVerifyContextWidget({
super.key,
required this.verifyContext,
- required this.currentTheme,
});
final VerifyContext? verifyContext;
- final MaterialThemeBase currentTheme;
@override
Widget build(BuildContext context) {
diff --git a/lib/src/screens/wallet_keys/wallet_keys_page.dart b/lib/src/screens/wallet_keys/wallet_keys_page.dart
index 014805d85..4048636fc 100644
--- a/lib/src/screens/wallet_keys/wallet_keys_page.dart
+++ b/lib/src/screens/wallet_keys/wallet_keys_page.dart
@@ -7,7 +7,6 @@ import 'package:cake_wallet/src/widgets/primary_button.dart';
import 'package:cake_wallet/src/widgets/seedphrase_grid_widget.dart';
import 'package:cake_wallet/src/widgets/text_info_box.dart';
import 'package:cake_wallet/src/widgets/warning_box_widget.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
import 'package:cake_wallet/utils/brightness_util.dart';
import 'package:cake_wallet/utils/clipboard_util.dart';
import 'package:cake_wallet/utils/show_bar.dart';
@@ -36,13 +35,11 @@ class WalletKeysPage extends BasePage {
child: WarningBox(
key: const ValueKey('wallet_keys_page_share_warning_text_key'),
content: S.of(context).do_not_share_warning_text.toUpperCase(),
- currentTheme: currentTheme,
),
),
Expanded(
child: WalletKeysPageBody(
walletKeysViewModel: walletKeysViewModel,
- currentTheme: currentTheme,
),
),
],
@@ -54,11 +51,9 @@ class WalletKeysPage extends BasePage {
class WalletKeysPageBody extends StatefulWidget {
WalletKeysPageBody({
required this.walletKeysViewModel,
- required this.currentTheme,
});
final WalletKeysViewModel walletKeysViewModel;
- final MaterialThemeBase currentTheme;
@override
State createState() => _WalletKeysPageBodyState();
@@ -161,7 +156,11 @@ class _WalletKeysPageBodyState extends State
if (showKeyTab)
Padding(
padding: const EdgeInsets.only(left: 22, right: 22),
- child: _buildKeysTab(context, showSilentPaymentsTab ? widget.walletKeysViewModel.items.sublist(0, 4) : widget.walletKeysViewModel.items),
+ child: _buildKeysTab(
+ context,
+ showSilentPaymentsTab
+ ? widget.walletKeysViewModel.items.sublist(0, 4)
+ : widget.walletKeysViewModel.items),
),
if (showSilentPaymentsTab)
Padding(
diff --git a/lib/src/screens/wallet_list/edit_wallet_button_widget.dart b/lib/src/screens/wallet_list/edit_wallet_button_widget.dart
index d926230bd..99ef56445 100644
--- a/lib/src/screens/wallet_list/edit_wallet_button_widget.dart
+++ b/lib/src/screens/wallet_list/edit_wallet_button_widget.dart
@@ -20,27 +20,17 @@ class EditWalletButtonWidget extends StatelessWidget {
width: width,
child: Row(
children: [
- GestureDetector(
- onTap: onTap,
- child: Center(
- child: Container(
- height: 40,
- width: 44,
- padding: EdgeInsets.all(10),
- decoration: BoxDecoration(
- shape: BoxShape.circle,
- color: Theme.of(context).colorScheme.surface,
- ),
- child: Icon(
- Icons.edit,
- size: 14,
- color: Theme.of(context).colorScheme.onSurfaceVariant,
- ),
- ),
+ TextButton(
+ onPressed: onTap,
+ style: TextButton.styleFrom(
+ backgroundColor: Theme.of(context).colorScheme.surface, shape: CircleBorder()),
+ child: Icon(
+ Icons.edit,
+ size: 14,
+ color: Theme.of(context).colorScheme.onSurfaceVariant,
),
),
if (isGroup) ...{
- SizedBox(width: 6),
Icon(
isExpanded ? Icons.keyboard_arrow_up : Icons.keyboard_arrow_down,
size: 24,
diff --git a/lib/src/screens/wallet_list/filtered_list.dart b/lib/src/screens/wallet_list/filtered_list.dart
index 5316c8472..86368210c 100644
--- a/lib/src/screens/wallet_list/filtered_list.dart
+++ b/lib/src/screens/wallet_list/filtered_list.dart
@@ -29,6 +29,23 @@ class FilteredListState extends State {
if (widget.canReorder) {
return Observer(
builder: (_) => ReorderableListView.builder(
+ proxyDecorator: (child, index, animation) => Material(
+ child: Container(
+ //margin: EdgeInsets.symmetric(vertical: 5),
+ decoration: BoxDecoration(
+ color: Theme.of(context).colorScheme.surfaceContainer,
+ borderRadius: BorderRadius.circular(20.0),
+ boxShadow: [
+ BoxShadow(
+ color: Colors.black.withOpacity(0.3),
+ blurRadius: 5,
+ offset: const Offset(0, 6),
+ spreadRadius: 1)
+ ],
+ ),
+ child: child,
+ ),
+ ),
shrinkWrap: widget.shrinkWrap,
physics: widget.physics ?? const BouncingScrollPhysics(),
itemBuilder: widget.itemBuilder,
diff --git a/lib/src/screens/wallet_list/wallet_list_page.dart b/lib/src/screens/wallet_list/wallet_list_page.dart
index d8f20d2df..2dcaa8d38 100644
--- a/lib/src/screens/wallet_list/wallet_list_page.dart
+++ b/lib/src/screens/wallet_list/wallet_list_page.dart
@@ -116,21 +116,6 @@ class WalletListBody extends StatefulWidget {
}
class WalletListBodyState extends State {
- final moneroIcon = Image.asset('assets/images/monero_logo.png', height: 24, width: 24);
- final bitcoinIcon = Image.asset('assets/images/bitcoin.png', height: 24, width: 24);
- final tBitcoinIcon = Image.asset('assets/images/tbtc.png', height: 24, width: 24);
- final litecoinIcon = Image.asset('assets/images/litecoin_icon.png', height: 24, width: 24);
- final decredIcon = Image.asset('assets/images/decred_icon.png', height: 24, width: 24);
- final nonWalletTypeIcon = Image.asset('assets/images/close.png', height: 24, width: 24);
- final havenIcon = Image.asset('assets/images/haven_logo.png', height: 24, width: 24);
- final ethereumIcon = Image.asset('assets/images/eth_icon.png', height: 24, width: 24);
- final bitcoinCashIcon = Image.asset('assets/images/bch_icon.png', height: 24, width: 24);
- final nanoIcon = Image.asset('assets/images/nano_icon.png', height: 24, width: 24);
- final polygonIcon = Image.asset('assets/images/matic_icon.png', height: 24, width: 24);
- final solanaIcon = Image.asset('assets/images/sol_icon.png', height: 24, width: 24);
- final tronIcon = Image.asset('assets/images/trx_icon.png', height: 24, width: 24);
- final wowneroIcon = Image.asset('assets/images/wownero_icon.png', height: 24, width: 24);
- final zanoIcon = Image.asset('assets/images/zano_icon.png', height: 24, width: 24);
final scrollController = ScrollController();
final double tileHeight = 60;
Flushbar? _progressBar;
@@ -164,69 +149,68 @@ class WalletListBodyState extends State {
),
SizedBox(height: 16),
Container(
- child: Observer(
- builder: (_) => FilteredList(
- shrinkWrap: true,
- list: widget.walletListViewModel.multiWalletGroups,
- updateFunction: widget.walletListViewModel.reorderAccordingToWalletList,
- itemBuilder: (context, index) {
- final group = widget.walletListViewModel.multiWalletGroups[index];
- final groupName =
- group.groupName ?? '${S.current.wallet_group} ${index + 1}';
+ child: Padding(
+ padding: EdgeInsets.only(left: 20, right: 20),
+ child: Observer(
+ builder: (_) => FilteredList(
+ shrinkWrap: true,
+ list: widget.walletListViewModel.multiWalletGroups,
+ updateFunction: widget.walletListViewModel.reorderAccordingToWalletList,
+ itemBuilder: (context, index) {
+ final group = widget.walletListViewModel.multiWalletGroups[index];
+ final groupName =
+ group.groupName ?? '${S.current.wallet_group} ${index + 1}';
- widget.walletListViewModel.updateTileState(
- index,
- widget.walletListViewModel.expansionTileStateTrack[index] ?? false,
- );
+ widget.walletListViewModel.updateTileState(
+ index,
+ widget.walletListViewModel.expansionTileStateTrack[index] ?? false,
+ );
- return GroupedWalletExpansionTile(
- onExpansionChanged: (value) {
- widget.walletListViewModel.updateTileState(index, value);
- setState(() {});
- },
- shouldShowCurrentWalletPointer: true,
- borderRadius: BorderRadius.all(Radius.circular(16)),
- margin: EdgeInsets.only(left: 20, right: 20, bottom: 12),
- title: groupName,
- tileKey: ValueKey('group_wallets_expansion_tile_widget_$index'),
- leadingWidget: Icon(
- Icons.account_balance_wallet_outlined,
- size: 28,
- ),
- trailingWidget: EditWalletButtonWidget(
- width: 74,
- isGroup: true,
- isExpanded:
- widget.walletListViewModel.expansionTileStateTrack[index]!,
- onTap: () {
- final wallet = widget.walletListViewModel
- .convertWalletInfoToWalletListItem(group.wallets.first);
- Navigator.of(context).pushNamed(
- Routes.walletEdit,
- arguments: WalletEditPageArguments(
- walletListViewModel: widget.walletListViewModel,
- editingWallet: wallet,
- isWalletGroup: true,
- groupName: groupName,
- walletGroupKey: group.groupKey,
- ),
- );
+ return GroupedWalletExpansionTile(
+ onExpansionChanged: (value) {
+ widget.walletListViewModel.updateTileState(index, value);
+ setState(() {});
},
- ),
- childWallets: group.wallets.map((walletInfo) {
- return widget.walletListViewModel
- .convertWalletInfoToWalletListItem(walletInfo);
- }).toList(),
- isSelected: false,
- onChildItemTapped: (wallet) =>
- wallet.isCurrent ? null : _loadWallet(wallet),
- childTrailingWidget: (item) {
- return item.isCurrent
- ? SizedBox.shrink()
- : Padding(
- padding: const EdgeInsets.only(right: 16),
- child: EditWalletButtonWidget(
- width: 44,
+ shouldShowCurrentWalletPointer: true,
+ borderRadius: BorderRadius.all(Radius.circular(16)),
+ title: groupName,
+ tileKey: ValueKey('group_wallets_expansion_tile_widget_$index'),
+ leadingWidget: Icon(
+ Icons.account_balance_wallet_outlined,
+ size: 28,
+ ),
+ trailingWidget: EditWalletButtonWidget(
+ width: 88,
+ isGroup: true,
+ isExpanded:
+ widget.walletListViewModel.expansionTileStateTrack[index]!,
+ onTap: () {
+ final wallet = widget.walletListViewModel
+ .convertWalletInfoToWalletListItem(group.wallets.first);
+ Navigator.of(context).pushNamed(
+ Routes.walletEdit,
+ arguments: WalletEditPageArguments(
+ walletListViewModel: widget.walletListViewModel,
+ editingWallet: wallet,
+ isWalletGroup: true,
+ groupName: groupName,
+ walletGroupKey: group.groupKey,
+ ),
+ );
+ },
+ ),
+ childWallets: group.wallets.map((walletInfo) {
+ return widget.walletListViewModel
+ .convertWalletInfoToWalletListItem(walletInfo);
+ }).toList(),
+ isSelected: false,
+ onChildItemTapped: (wallet) =>
+ wallet.isCurrent ? null : _loadWallet(wallet),
+ childTrailingWidget: (item) {
+ return item.isCurrent
+ ? SizedBox.shrink()
+ : EditWalletButtonWidget(
+ width: 60,
onTap: () => Navigator.of(context).pushNamed(
Routes.walletEdit,
arguments: WalletEditPageArguments(
@@ -234,11 +218,11 @@ class WalletListBodyState extends State {
editingWallet: item,
),
),
- ),
- );
- },
- );
- },
+ );
+ },
+ );
+ },
+ ),
),
),
),
@@ -257,68 +241,70 @@ class WalletListBodyState extends State {
),
),
SizedBox(height: 16),
- Container(
- child: Observer(
- builder: (_) => FilteredList(
- shrinkWrap: true,
- list: widget.walletListViewModel.singleWalletsList,
- updateFunction: widget.walletListViewModel.reorderAccordingToWalletList,
- itemBuilder: (context, index) {
- final wallet = widget.walletListViewModel.singleWalletsList[index];
- final currentColor = wallet.isCurrent
- ? Theme.of(context).colorScheme.primary
- : Theme.of(context).colorScheme.surface;
-
- return GroupedWalletExpansionTile(
- tileKey: ValueKey('single_wallets_expansion_tile_widget_$index'),
- isCurrentlySelectedWallet: wallet.isCurrent,
- leadingWidget: SizedBox(
- width: wallet.isCurrent ? 56 : 40,
- child: Row(
- children: [
- wallet.isCurrent
- ? Container(
- height: 35,
- width: 6,
- margin: EdgeInsets.only(right: 16),
- decoration: BoxDecoration(
- borderRadius: BorderRadius.only(
- topRight: Radius.circular(16),
- bottomRight: Radius.circular(16),
+ Padding(
+ padding: EdgeInsets.only(left: 20, right: 20),
+ child: Container(
+ child: Observer(
+ builder: (_) => FilteredList(
+ shrinkWrap: true,
+ list: widget.walletListViewModel.singleWalletsList,
+ updateFunction: widget.walletListViewModel.reorderAccordingToWalletList,
+ itemBuilder: (context, index) {
+ final wallet = widget.walletListViewModel.singleWalletsList[index];
+ final currentColor = wallet.isCurrent
+ ? Theme.of(context).colorScheme.primary
+ : Theme.of(context).colorScheme.surface;
+ return GroupedWalletExpansionTile(
+ tileKey: ValueKey('single_wallets_expansion_tile_widget_$index'),
+ isCurrentlySelectedWallet: wallet.isCurrent,
+ leadingWidget: SizedBox(
+ width: wallet.isCurrent ? 56 : 40,
+ child: Row(
+ children: [
+ wallet.isCurrent
+ ? Container(
+ height: 35,
+ width: 6,
+ margin: EdgeInsets.only(right: 16),
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.only(
+ topRight: Radius.circular(16),
+ bottomRight: Radius.circular(16),
+ ),
+ color: currentColor,
),
- color: currentColor,
- ),
- )
- : SizedBox(width: 6),
- Image.asset(
- walletTypeToCryptoCurrency(wallet.type).iconPath!,
- width: 32,
- height: 32,
- ),
- ],
+ )
+ : SizedBox(width: 6),
+ Image.asset(
+ walletTypeToCryptoCurrency(wallet.type).iconPath!,
+ width: 32,
+ height: 32,
+ ),
+ ],
+ ),
),
- ),
- title: wallet.name,
- isSelected: false,
- borderRadius: BorderRadius.all(Radius.circular(16)),
- margin: EdgeInsets.only(left: 20, right: 20, bottom: 12),
- onTitleTapped: () => wallet.isCurrent ? null : _loadWallet(wallet),
- trailingWidget: wallet.isCurrent
- ? null
- : EditWalletButtonWidget(
- width: 44,
- onTap: () {
- Navigator.of(context).pushNamed(
- Routes.walletEdit,
- arguments: WalletEditPageArguments(
- walletListViewModel: widget.walletListViewModel,
- editingWallet: wallet,
- ),
- );
- },
- ),
- );
- },
+ title: wallet.name,
+ isSelected: false,
+ borderRadius: BorderRadius.all(Radius.circular(16)),
+ margin: EdgeInsets.only(left: 20, right: 20, bottom: 12),
+ onTitleTapped: () => wallet.isCurrent ? null : _loadWallet(wallet),
+ trailingWidget: wallet.isCurrent
+ ? null
+ : EditWalletButtonWidget(
+ width: 64,
+ onTap: () {
+ Navigator.of(context).pushNamed(
+ Routes.walletEdit,
+ arguments: WalletEditPageArguments(
+ walletListViewModel: widget.walletListViewModel,
+ editingWallet: wallet,
+ ),
+ );
+ },
+ ),
+ );
+ },
+ ),
),
),
),
@@ -481,7 +467,8 @@ class WalletListBodyState extends State {
walletType: WalletType.monero,
hardwareWalletType: HardwareWalletType.ledger,
onConnectDevice: (context, ledgerVM) async {
- if (ledgerVM is LedgerViewModel) monero!.setGlobalLedgerConnection(ledgerVM.connection);
+ if (ledgerVM is LedgerViewModel)
+ monero!.setGlobalLedgerConnection(ledgerVM.connection);
didConnect = true;
Navigator.of(context).pop();
},
diff --git a/lib/src/screens/welcome/create_pin_welcome_page.dart b/lib/src/screens/welcome/create_pin_welcome_page.dart
index 49082a1e6..7637d7abf 100644
--- a/lib/src/screens/welcome/create_pin_welcome_page.dart
+++ b/lib/src/screens/welcome/create_pin_welcome_page.dart
@@ -1,6 +1,5 @@
import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart';
-import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:cake_wallet/routes.dart';
@@ -59,9 +58,7 @@ class CreatePinWelcomePage extends BasePage {
gradient: LinearGradient(
colors: [
Theme.of(context).colorScheme.surface,
- currentTheme.isDark
- ? CustomThemeColors.backgroundGradientColorDark
- : CustomThemeColors.backgroundGradientColorLight,
+ currentTheme.customColors.backgroundGradientColor,
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
diff --git a/lib/src/widgets/base_text_form_field.dart b/lib/src/widgets/base_text_form_field.dart
index 05baed589..fbff5a338 100644
--- a/lib/src/widgets/base_text_form_field.dart
+++ b/lib/src/widgets/base_text_form_field.dart
@@ -45,7 +45,8 @@ class BaseTextFormField extends StatelessWidget {
this.borderWidth = 1.0,
this.prefixIconConstraints,
this.suffixIconConstraints,
- super.key, this.suffixText,
+ super.key,
+ this.suffixText,
});
final TextEditingController? controller;
@@ -125,12 +126,12 @@ class BaseTextFormField extends StatelessWidget {
alignLabelWithHint: alignLabelWithHint,
contentPadding: contentPadding,
floatingLabelBehavior: floatingLabelBehavior ?? FloatingLabelBehavior.never,
- prefixIconConstraints: prefixIconConstraints ??
- const BoxConstraints(minWidth: 0, minHeight: 0),
+ prefixIconConstraints:
+ prefixIconConstraints ?? const BoxConstraints(minWidth: 40, minHeight: 0),
prefix: prefix,
prefixIcon: prefixIcon,
- suffixIconConstraints: suffixIconConstraints ??
- const BoxConstraints(minWidth: 0, minHeight: 0),
+ suffixIconConstraints:
+ suffixIconConstraints ?? const BoxConstraints(minWidth: 0, minHeight: 0),
suffix: suffix,
suffixIcon: suffixIcon,
filled: !hasUnderlineBorder,
diff --git a/lib/src/widgets/blockchain_height_widget.dart b/lib/src/widgets/blockchain_height_widget.dart
index cb7f71b24..a835048fd 100644
--- a/lib/src/widgets/blockchain_height_widget.dart
+++ b/lib/src/widgets/blockchain_height_widget.dart
@@ -37,7 +37,6 @@ class BlockchainHeightWidget extends StatefulWidget {
final Function()? toggleSingleScan;
final WalletType walletType;
final Key? blockHeightTextFieldKey;
-
@override
State createState() => BlockchainHeightState();
}
diff --git a/lib/src/widgets/bottom_sheet/add_passphrase_bottom_sheet_widget.dart b/lib/src/widgets/bottom_sheet/add_passphrase_bottom_sheet_widget.dart
index d00fd12fd..dde80d139 100644
--- a/lib/src/widgets/bottom_sheet/add_passphrase_bottom_sheet_widget.dart
+++ b/lib/src/widgets/bottom_sheet/add_passphrase_bottom_sheet_widget.dart
@@ -2,18 +2,16 @@ import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/widgets/base_text_form_field.dart';
import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
import 'package:cake_wallet/src/widgets/primary_button.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
+import 'package:cake_wallet/themes/core/theme_extension.dart';
import 'package:flutter/material.dart';
class AddPassphraseBottomSheet extends StatefulWidget {
AddPassphraseBottomSheet({
required String titleText,
- required this.currentTheme,
required this.onRestoreButtonPressed,
});
final void Function(String) onRestoreButtonPressed;
- final MaterialThemeBase currentTheme;
@override
State createState() => _AddPassphraseBottomSheetState();
@@ -43,8 +41,8 @@ class _AddPassphraseBottomSheetState extends State {
bool obscurePassphrase = true;
@override
Widget build(BuildContext context) {
-
- final passphraseImage = widget.currentTheme.isDark ? passphraseImageDark : passphraseImageLight;
+ final passphraseImage =
+ context.currentTheme.isDark ? passphraseImageDark : passphraseImageLight;
return Container(
decoration: BoxDecoration(
diff --git a/lib/src/widgets/bottom_sheet/base_bottom_sheet_widget.dart b/lib/src/widgets/bottom_sheet/base_bottom_sheet_widget.dart
index a822158a1..4b17a71d7 100644
--- a/lib/src/widgets/bottom_sheet/base_bottom_sheet_widget.dart
+++ b/lib/src/widgets/bottom_sheet/base_bottom_sheet_widget.dart
@@ -1,6 +1,5 @@
import 'package:cake_wallet/src/widgets/primary_button.dart';
import 'package:cake_wallet/src/widgets/standard_slide_button_widget.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
import 'package:flutter/material.dart';
enum FooterType { none, slideActionButton, singleActionButton, doubleActionButton }
@@ -11,7 +10,6 @@ abstract class BaseBottomSheet extends StatelessWidget {
required this.titleText,
this.titleIconPath,
required this.footerType,
- this.currentTheme,
this.slideActionButtonText,
this.onSlideActionComplete,
this.singleActionButtonText,
@@ -25,12 +23,11 @@ abstract class BaseBottomSheet extends StatelessWidget {
this.leftActionButtonKey,
this.rightActionButtonKey,
required this.maxHeight,
- }) : assert(footerType == FooterType.none || currentTheme != null,
+ }) : assert(footerType == FooterType.none,
'currentTheme is required unless footerType is none');
final String titleText;
final String? titleIconPath;
- final MaterialThemeBase? currentTheme;
final FooterType footerType;
final String? slideActionButtonText;
final VoidCallback? onSlideActionComplete;
@@ -115,7 +112,6 @@ abstract class BaseBottomSheet extends StatelessWidget {
key: ValueKey('base_bottom_sheet_widget_standard_slide_button_key'),
buttonText: slideActionButtonText ?? '',
onSlideComplete: onSlideActionComplete ?? () {},
- currentTheme: currentTheme!,
accessibleNavigationModeButtonText: accessibleNavigationModeSlideActionButtonText ?? '',
),
);
diff --git a/lib/src/widgets/bottom_sheet/cake_pay_card_info_bottom_sheet_widget.dart b/lib/src/widgets/bottom_sheet/cake_pay_card_info_bottom_sheet_widget.dart
index 900f59bb9..21d6863b0 100644
--- a/lib/src/widgets/bottom_sheet/cake_pay_card_info_bottom_sheet_widget.dart
+++ b/lib/src/widgets/bottom_sheet/cake_pay_card_info_bottom_sheet_widget.dart
@@ -2,8 +2,6 @@ import 'package:cake_wallet/cake_pay/src/widgets/cake_pay_alert_modal.dart';
import 'package:cake_wallet/cake_pay/src/widgets/flip_card_widget.dart';
import 'package:cake_wallet/cake_pay/src/widgets/link_extractor.dart';
import 'package:cake_wallet/generated/i18n.dart';
-import 'package:cake_wallet/palette.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
import 'package:cake_wallet/utils/image_utill.dart';
import 'package:cake_wallet/utils/show_pop_up.dart';
import 'package:flutter/material.dart';
@@ -13,7 +11,6 @@ import 'base_bottom_sheet_widget.dart';
class CakePayCardInfoBottomSheet extends BaseBottomSheet {
CakePayCardInfoBottomSheet({
required String titleText,
- required MaterialThemeBase currentTheme,
required FooterType footerType,
String? titleIconPath,
String? singleActionButtonText,
@@ -32,12 +29,10 @@ class CakePayCardInfoBottomSheet extends BaseBottomSheet {
this.howToUse,
this.applyBoxShadow = false,
Key? key,
- }) : _currentTheme = currentTheme,
- super(
+ }) : super(
titleText: titleText,
maxHeight: 900,
titleIconPath: titleIconPath,
- currentTheme: currentTheme,
footerType: footerType,
singleActionButtonText: singleActionButtonText,
onSingleActionButtonPressed: onSingleActionButtonPressed,
@@ -51,7 +46,6 @@ class CakePayCardInfoBottomSheet extends BaseBottomSheet {
key: key);
final VoidCallback onUpdateBalancePressed;
- final MaterialThemeBase _currentTheme;
final String? contentImage;
final String? howToUse;
final bool isReloadable;
@@ -63,15 +57,15 @@ class CakePayCardInfoBottomSheet extends BaseBottomSheet {
@override
Widget contentWidget(BuildContext context) {
final itemTitleTextStyle = Theme.of(context).textTheme.bodyMedium!.copyWith(
- fontSize: 16,
- fontWeight: FontWeight.w500,
- decoration: TextDecoration.none,
- );
+ fontSize: 16,
+ fontWeight: FontWeight.w500,
+ decoration: TextDecoration.none,
+ );
final itemSubTitleTextStyle = Theme.of(context).textTheme.bodySmall!.copyWith(
- fontWeight: FontWeight.w600,
- color: Theme.of(context).colorScheme.onSurfaceVariant,
- decoration: TextDecoration.none,
- );
+ fontWeight: FontWeight.w600,
+ color: Theme.of(context).colorScheme.onSurfaceVariant,
+ decoration: TextDecoration.none,
+ );
final tileBackgroundColor = Theme.of(context).colorScheme.surfaceContainer;
@@ -165,9 +159,7 @@ class _HowToUseTile extends StatelessWidget {
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
- Text(
- S.of(context).how_to_use_card,
- style: Theme.of(context).textTheme.bodyLarge),
+ Text(S.of(context).how_to_use_card, style: Theme.of(context).textTheme.bodyLarge),
Icon(
Icons.chevron_right_rounded,
color: Theme.of(context).textTheme.titleLarge!.color!,
@@ -261,11 +253,9 @@ Widget _buildCardImage(BuildContext ctx, String path, bool addShadow) {
return Container(
decoration: addShadow
? BoxDecoration(
- borderRadius: border,
- boxShadow: [
- BoxShadow(color: Colors.black.withAlpha(150), blurRadius: 5)
- ],
- )
+ borderRadius: border,
+ boxShadow: [BoxShadow(color: Colors.black.withAlpha(150), blurRadius: 5)],
+ )
: null,
child: ClipRRect(
borderRadius: border,
@@ -290,9 +280,7 @@ Widget _buildBarcodeSide(BuildContext context, {required String cardNumber, requ
decoration: BoxDecoration(
color: Theme.of(context).cardColor.withAlpha(200),
borderRadius: BorderRadius.circular(10),
- boxShadow: [
- BoxShadow(color: Colors.black.withAlpha(150), blurRadius: 5)
- ],
+ boxShadow: [BoxShadow(color: Colors.black.withAlpha(150), blurRadius: 5)],
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
@@ -300,7 +288,6 @@ Widget _buildBarcodeSide(BuildContext context, {required String cardNumber, requ
Expanded(
child: Container(
color: Theme.of(context).textTheme.titleLarge!.color!.withOpacity(.1),
-
),
),
const SizedBox(height: 12),
@@ -345,7 +332,6 @@ Widget _buildBarcodeSide(BuildContext context, {required String cardNumber, requ
),
],
),
-
],
),
),
diff --git a/lib/src/widgets/bottom_sheet/confirm_sending_bottom_sheet_widget.dart b/lib/src/widgets/bottom_sheet/confirm_sending_bottom_sheet_widget.dart
index 47cacea1e..4bac63a23 100644
--- a/lib/src/widgets/bottom_sheet/confirm_sending_bottom_sheet_widget.dart
+++ b/lib/src/widgets/bottom_sheet/confirm_sending_bottom_sheet_widget.dart
@@ -1,7 +1,6 @@
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/widgets/rounded_icon_button.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
-import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/core/theme_extension.dart';
import 'package:cake_wallet/utils/address_formatter.dart';
import 'package:cake_wallet/utils/image_utill.dart';
import 'package:cake_wallet/view_model/cake_pay/cake_pay_buy_card_view_model.dart';
@@ -18,7 +17,6 @@ import 'base_bottom_sheet_widget.dart';
class ConfirmSendingBottomSheet extends BaseBottomSheet {
ConfirmSendingBottomSheet({
required String titleText,
- required MaterialThemeBase currentTheme,
required FooterType footerType,
String? titleIconPath,
String? slideActionButtonText,
@@ -43,12 +41,10 @@ class ConfirmSendingBottomSheet extends BaseBottomSheet {
this.quantity,
Key? key,
}) : showScrollbar = outputs.length > 3,
- _currentTheme = currentTheme,
super(
titleText: titleText,
maxHeight: 900,
titleIconPath: titleIconPath,
- currentTheme: currentTheme,
footerType: footerType,
slideActionButtonText: slideActionButtonText ?? 'Swipe to send',
onSlideActionComplete: onSlideActionComplete,
@@ -57,7 +53,6 @@ class ConfirmSendingBottomSheet extends BaseBottomSheet {
key: key);
final CryptoCurrency currency;
- final MaterialThemeBase _currentTheme;
final String? paymentId;
final String? paymentIdValue;
final String? expirationTime;
@@ -91,9 +86,9 @@ class ConfirmSendingBottomSheet extends BaseBottomSheet {
decoration: TextDecoration.none,
);
- final tileBackgroundColor = _currentTheme.isDark
- ? CustomThemeColors.backgroundGradientColorDark.withAlpha(140)
- : CustomThemeColors.cardGradientColorPrimaryLight;
+ final tileBackgroundColor = context.currentTheme.isDark
+ ? context.customColors.backgroundGradientColor.withAlpha(140)
+ : context.customColors.cardGradientColorPrimary;
Widget content = Padding(
padding: EdgeInsets.fromLTRB(8, 0, showScrollbar ? 16 : 8, 8),
diff --git a/lib/src/widgets/bottom_sheet/info_bottom_sheet_widget.dart b/lib/src/widgets/bottom_sheet/info_bottom_sheet_widget.dart
index 351616f52..12627a3cf 100644
--- a/lib/src/widgets/bottom_sheet/info_bottom_sheet_widget.dart
+++ b/lib/src/widgets/bottom_sheet/info_bottom_sheet_widget.dart
@@ -1,17 +1,8 @@
import 'package:auto_size_text/auto_size_text.dart';
-import 'package:cake_wallet/src/widgets/simple_checkbox.dart';
-
-
import 'package:cake_wallet/utils/image_utill.dart';
-import 'package:cake_wallet/src/widgets/primary_button.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
-
-
import 'package:cake_wallet/routes.dart';
-import 'package:cake_wallet/src/widgets/primary_button.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
@@ -19,9 +10,12 @@ import 'package:flutter/material.dart';
import 'base_bottom_sheet_widget.dart';
class LoadingBottomSheet extends BaseBottomSheet {
- LoadingBottomSheet(
- {required String titleText, String? titleIconPath})
- : super(titleText: titleText, titleIconPath: titleIconPath, footerType: FooterType.none, maxHeight: 900);
+ LoadingBottomSheet({required String titleText, String? titleIconPath})
+ : super(
+ titleText: titleText,
+ titleIconPath: titleIconPath,
+ footerType: FooterType.none,
+ maxHeight: 900);
@override
Widget contentWidget(BuildContext context) {
@@ -36,7 +30,6 @@ class InfoBottomSheet extends BaseBottomSheet {
InfoBottomSheet({
required String titleText,
String? titleIconPath,
- required this.currentTheme,
required this.footerType,
this.contentImage,
this.contentImageColor,
@@ -59,7 +52,6 @@ class InfoBottomSheet extends BaseBottomSheet {
titleText: titleText,
titleIconPath: titleIconPath,
maxHeight: 900,
- currentTheme: currentTheme,
footerType: footerType,
singleActionButtonText: singleActionButtonText,
onSingleActionButtonPressed: onSingleActionButtonPressed,
@@ -72,7 +64,6 @@ class InfoBottomSheet extends BaseBottomSheet {
rightActionButtonKey: rightActionButtonKey,
key: key);
- final MaterialThemeBase currentTheme;
final FooterType footerType;
final String? contentImage;
final Color? contentImageColor;
@@ -91,7 +82,6 @@ class InfoBottomSheet extends BaseBottomSheet {
final double? contentImageSize;
final bool showDisclaimerText;
-
@override
Widget contentWidget(BuildContext context) {
return SizedBox(
@@ -137,35 +127,36 @@ class InfoBottomSheet extends BaseBottomSheet {
bottomActionPanel ?? const SizedBox(),
if (showDisclaimerText)
Padding(
- padding: const EdgeInsets.only(top: 20, bottom: 10),
- child: RichText(
- textAlign: TextAlign.center,
- text: TextSpan(
- style: Theme.of(context).textTheme.bodyMedium?.copyWith(
- color: Theme.of(context).colorScheme.onSurfaceVariant,
+ padding: const EdgeInsets.only(top: 20, bottom: 10),
+ child: RichText(
+ textAlign: TextAlign.center,
+ text: TextSpan(
+ style: Theme.of(context).textTheme.bodyMedium?.copyWith(
+ color: Theme.of(context).colorScheme.onSurfaceVariant,
+ ),
+ children: [
+ TextSpan(
+ text: 'By continuing you agree to this ',
+ style: Theme.of(context).textTheme.bodyMedium?.copyWith(
+ color: Theme.of(context).colorScheme.onSurfaceVariant,
+ fontWeight: FontWeight.w500,
+ ),
+ ),
+ TextSpan(
+ text: 'disclaimer',
+ style: Theme.of(context).textTheme.bodyMedium?.copyWith(
+ color: Theme.of(context).colorScheme.onSurfaceVariant,
+ decoration: TextDecoration.underline,
+ fontWeight: FontWeight.w700,
+ ),
+ recognizer: TapGestureRecognizer()
+ ..onTap =
+ () => Navigator.pushNamed(context, Routes.readThirdPartyDisclaimer),
+ ),
+ ],
),
- children: [
- TextSpan(
- text: 'By continuing you agree to this ',
- style: Theme.of(context).textTheme.bodyMedium?.copyWith(
- color: Theme.of(context).colorScheme.onSurfaceVariant,
- fontWeight: FontWeight.w500,
- ),
- ),
- TextSpan(
- text: 'disclaimer',
- style: Theme.of(context).textTheme.bodyMedium?.copyWith(
- color: Theme.of(context).colorScheme.onSurfaceVariant,
- decoration: TextDecoration.underline,
- fontWeight: FontWeight.w700,
- ),
- recognizer: TapGestureRecognizer()
- ..onTap = () => Navigator.pushNamed(context, Routes.readThirdPartyDisclaimer),
- ),
- ],
),
),
- ),
],
),
);
diff --git a/lib/src/widgets/bottom_sheet/info_steps_bottom_sheet_widget.dart b/lib/src/widgets/bottom_sheet/info_steps_bottom_sheet_widget.dart
index 327b2d543..6dbc3ee5a 100644
--- a/lib/src/widgets/bottom_sheet/info_steps_bottom_sheet_widget.dart
+++ b/lib/src/widgets/bottom_sheet/info_steps_bottom_sheet_widget.dart
@@ -1,6 +1,6 @@
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/widgets/primary_button.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
+import 'package:cake_wallet/themes/core/theme_extension.dart';
import 'package:flutter/material.dart';
import 'base_bottom_sheet_widget.dart';
@@ -13,15 +13,17 @@ class InfoStep {
}
class InfoStepsBottomSheet extends BaseBottomSheet {
- final MaterialThemeBase currentTheme;
final List steps;
InfoStepsBottomSheet({
required String titleText,
required this.steps,
String? titleIconPath,
- required this.currentTheme,
- }) : super(titleText: titleText, titleIconPath: titleIconPath, footerType: FooterType.none, maxHeight: 900);
+ }) : super(
+ titleText: titleText,
+ titleIconPath: titleIconPath,
+ footerType: FooterType.none,
+ maxHeight: 900);
@override
Widget contentWidget(BuildContext context) => SizedBox(
@@ -33,8 +35,7 @@ class InfoStepsBottomSheet extends BaseBottomSheet {
child: Column(
children: steps
.map((step) => Container(
- margin: EdgeInsets.only(
- bottom: 15, left: 20, right: 20),
+ margin: EdgeInsets.only(bottom: 15, left: 20, right: 20),
padding: EdgeInsets.all(10),
alignment: Alignment.center,
decoration: BoxDecoration(
@@ -51,35 +52,24 @@ class InfoStepsBottomSheet extends BaseBottomSheet {
padding: EdgeInsets.only(left: 16),
child: Column(
mainAxisSize: MainAxisSize.max,
- mainAxisAlignment:
- MainAxisAlignment.start,
- crossAxisAlignment:
- CrossAxisAlignment.start,
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
step.title,
- style: Theme.of(context)
- .textTheme
- .bodyMedium!
- .copyWith(
+ style: Theme.of(context).textTheme.bodyMedium!.copyWith(
fontSize: 20,
fontWeight: FontWeight.w500,
- color: Theme.of(context)
- .colorScheme
- .onSurface,
+ color: context.currentTheme.colorScheme.onSurface,
),
),
Padding(
padding: EdgeInsets.only(top: 5),
child: Text(
step.description,
- style: Theme.of(context)
- .textTheme
- .bodyMedium!
- .copyWith(
- color: Theme.of(context)
- .colorScheme
- .onSurfaceVariant,
+ style: Theme.of(context).textTheme.bodyMedium!.copyWith(
+ color: context
+ .currentTheme.colorScheme.onSurfaceVariant,
),
),
)
@@ -98,10 +88,10 @@ class InfoStepsBottomSheet extends BaseBottomSheet {
padding: const EdgeInsets.all(16),
child: PrimaryButton(
text: S.of(context).close,
- color: Theme.of(context).colorScheme.primary,
- textColor: currentTheme.isDark
- ? Theme.of(context).colorScheme.onSurfaceVariant
- : Theme.of(context).colorScheme.onPrimary,
+ color: context.currentTheme.colorScheme.primary,
+ textColor: context.currentTheme.isDark
+ ? context.currentTheme.colorScheme.onSurfaceVariant
+ : context.currentTheme.colorScheme.onPrimary,
onPressed: () => Navigator.of(context).pop(),
),
)
diff --git a/lib/src/widgets/bottom_sheet/payment_confirmation_bottom_sheet.dart b/lib/src/widgets/bottom_sheet/payment_confirmation_bottom_sheet.dart
index 6ade0be12..23913aa2a 100644
--- a/lib/src/widgets/bottom_sheet/payment_confirmation_bottom_sheet.dart
+++ b/lib/src/widgets/bottom_sheet/payment_confirmation_bottom_sheet.dart
@@ -6,7 +6,6 @@ import 'package:cake_wallet/src/widgets/primary_button.dart';
import 'package:cw_core/wallet_type.dart';
import 'package:cake_wallet/view_model/payment/payment_view_model.dart';
import 'package:cake_wallet/view_model/wallet_switcher_view_model.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
class PaymentConfirmationBottomSheet extends BaseBottomSheet {
@@ -15,7 +14,6 @@ class PaymentConfirmationBottomSheet extends BaseBottomSheet {
required this.paymentFlowResult,
required this.paymentViewModel,
required this.walletSwitcherViewModel,
- required this.currentTheme,
required this.paymentRequest,
required this.onSelectWallet,
required this.onChangeWallet,
@@ -24,13 +22,11 @@ class PaymentConfirmationBottomSheet extends BaseBottomSheet {
titleText: '',
footerType: FooterType.none,
maxHeight: 900,
- currentTheme: currentTheme,
);
final PaymentFlowResult paymentFlowResult;
final PaymentViewModel paymentViewModel;
final WalletSwitcherViewModel walletSwitcherViewModel;
- final MaterialThemeBase currentTheme;
final PaymentRequest paymentRequest;
final VoidCallback onSelectWallet;
final VoidCallback onChangeWallet;
diff --git a/lib/src/widgets/bottom_sheet/swap_confirmation_bottom_sheet.dart b/lib/src/widgets/bottom_sheet/swap_confirmation_bottom_sheet.dart
index c11edf0ad..0864e882c 100644
--- a/lib/src/widgets/bottom_sheet/swap_confirmation_bottom_sheet.dart
+++ b/lib/src/widgets/bottom_sheet/swap_confirmation_bottom_sheet.dart
@@ -19,7 +19,6 @@ import 'package:cw_core/wallet_type.dart';
import 'package:cake_wallet/view_model/payment/payment_view_model.dart';
import 'package:cake_wallet/view_model/exchange/exchange_view_model.dart';
import 'package:cake_wallet/exchange/exchange_trade_state.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
import 'package:cake_wallet/utils/show_pop_up.dart';
@@ -29,7 +28,6 @@ class SwapConfirmationBottomSheet extends BaseBottomSheet {
SwapConfirmationBottomSheet({
Key? key,
required this.paymentFlowResult,
- required this.currentTheme,
required this.exchangeViewModel,
required this.authService,
this.sessionId,
@@ -37,11 +35,9 @@ class SwapConfirmationBottomSheet extends BaseBottomSheet {
titleText: S.current.swap,
footerType: FooterType.none,
maxHeight: 900,
- currentTheme: currentTheme,
);
final PaymentFlowResult paymentFlowResult;
- final MaterialThemeBase currentTheme;
final ExchangeViewModel exchangeViewModel;
final AuthService authService;
final String? sessionId;
diff --git a/lib/src/widgets/bottom_sheet/swap_details_bottom_sheet.dart b/lib/src/widgets/bottom_sheet/swap_details_bottom_sheet.dart
index 9830d381a..79e6cff68 100644
--- a/lib/src/widgets/bottom_sheet/swap_details_bottom_sheet.dart
+++ b/lib/src/widgets/bottom_sheet/swap_details_bottom_sheet.dart
@@ -7,7 +7,6 @@ import 'package:cake_wallet/src/widgets/bottom_sheet/base_bottom_sheet_widget.da
import 'package:cw_core/wallet_type.dart';
import 'package:cake_wallet/view_model/exchange/exchange_trade_view_model.dart';
import 'package:cake_wallet/src/widgets/standard_slide_button_widget.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
import 'package:cake_wallet/core/execution_state.dart';
import 'package:cake_wallet/view_model/send/send_view_model_state.dart';
import 'package:cake_wallet/src/widgets/bottom_sheet/info_bottom_sheet_widget.dart';
@@ -22,11 +21,9 @@ import 'package:flutter_mobx/flutter_mobx.dart';
class SwapDetailsBottomSheet extends StatefulWidget {
SwapDetailsBottomSheet({
Key? key,
- required this.currentTheme,
required this.exchangeTradeViewModel,
}) : super(key: key);
- final MaterialThemeBase currentTheme;
final ExchangeTradeViewModel exchangeTradeViewModel;
@override
@@ -124,7 +121,6 @@ class _SwapDetailsBottomSheetState extends State {
isScrollControlled: true,
builder: (BuildContext bottomSheetContext) {
return InfoBottomSheet(
- currentTheme: widget.currentTheme,
footerType: FooterType.singleActionButton,
titleText: S.of(bottomSheetContext).transaction_sent,
contentImage: 'assets/images/birthday_cake.png',
@@ -155,7 +151,6 @@ class _SwapDetailsBottomSheetState extends State {
titleText: 'Confirm Swap',
footerType: FooterType.none,
maxHeight: 900,
- currentTheme: widget.currentTheme,
exchangeTradeViewModel: widget.exchangeTradeViewModel,
onExecuteSwap: _executeSwap,
);
@@ -192,14 +187,12 @@ class _SwapDetailsBottomSheetContent extends BaseBottomSheet {
required String titleText,
required FooterType footerType,
required double maxHeight,
- MaterialThemeBase? currentTheme,
required this.exchangeTradeViewModel,
required this.onExecuteSwap,
}) : super(
titleText: titleText,
footerType: footerType,
maxHeight: maxHeight,
- currentTheme: currentTheme,
);
final ExchangeTradeViewModel exchangeTradeViewModel;
@@ -250,7 +243,6 @@ class _SwapDetailsBottomSheetContent extends BaseBottomSheet {
knobColor: Theme.of(context).colorScheme.primary,
buttonText: 'Swipe to swap',
onSlideComplete: onExecuteSwap,
- currentTheme: currentTheme!,
accessibleNavigationModeButtonText: 'Complete swap',
);
},
diff --git a/lib/src/widgets/bottom_sheet/tooltip_bottom_sheet.dart b/lib/src/widgets/bottom_sheet/tooltip_bottom_sheet.dart
index 6b75d3753..4984836c9 100644
--- a/lib/src/widgets/bottom_sheet/tooltip_bottom_sheet.dart
+++ b/lib/src/widgets/bottom_sheet/tooltip_bottom_sheet.dart
@@ -6,7 +6,6 @@ class TooltipSheet extends BaseBottomSheet {
final String tooltip;
const TooltipSheet({
- required super.currentTheme,
required super.titleText,
super.titleIconPath,
required this.tooltip,
@@ -25,22 +24,22 @@ class TooltipSheet extends BaseBottomSheet {
@override
Widget contentWidget(BuildContext context) => Container(
- decoration: BoxDecoration(
- borderRadius: BorderRadius.circular(10),
- color: Theme.of(context).colorScheme.surfaceContainer),
- margin: const EdgeInsets.all(12),
- padding: const EdgeInsets.all(12),
- child: AutoSizeText(
- tooltip,
- textAlign: TextAlign.center,
- style: Theme.of(context).textTheme.bodyMedium!.copyWith(
- fontSize: 16,
- fontWeight: FontWeight.w500,
- color: Theme.of(context).colorScheme.onSurfaceVariant,
- decoration: TextDecoration.none,
- ),
- ),
- );
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(10),
+ color: Theme.of(context).colorScheme.surfaceContainer),
+ margin: const EdgeInsets.all(12),
+ padding: const EdgeInsets.all(12),
+ child: AutoSizeText(
+ tooltip,
+ textAlign: TextAlign.center,
+ style: Theme.of(context).textTheme.bodyMedium!.copyWith(
+ fontSize: 16,
+ fontWeight: FontWeight.w500,
+ color: Theme.of(context).colorScheme.onSurfaceVariant,
+ decoration: TextDecoration.none,
+ ),
+ ),
+ );
Widget footerWidget(BuildContext context) => SizedBox.shrink();
}
diff --git a/lib/src/widgets/bottom_sheet/wallet_switcher_bottom_sheet.dart b/lib/src/widgets/bottom_sheet/wallet_switcher_bottom_sheet.dart
index 81e0fd075..e99e344c4 100644
--- a/lib/src/widgets/bottom_sheet/wallet_switcher_bottom_sheet.dart
+++ b/lib/src/widgets/bottom_sheet/wallet_switcher_bottom_sheet.dart
@@ -6,13 +6,11 @@ import 'package:cw_core/wallet_info.dart';
import 'package:cw_core/wallet_type.dart';
import 'package:cake_wallet/view_model/wallet_switcher_view_model.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
class WalletSwitcherBottomSheet extends BaseBottomSheet {
WalletSwitcherBottomSheet({
Key? key,
required this.viewModel,
- required this.currentTheme,
this.filterWalletType,
this.subtitle,
this.onWalletSelected,
@@ -20,11 +18,9 @@ class WalletSwitcherBottomSheet extends BaseBottomSheet {
titleText: S.current.select_a_wallet,
footerType: FooterType.none,
maxHeight: 900,
- currentTheme: currentTheme,
);
final WalletSwitcherViewModel viewModel;
- final MaterialThemeBase currentTheme;
final WalletType? filterWalletType;
final String? subtitle;
final Function(WalletInfo)? onWalletSelected;
diff --git a/lib/src/widgets/dashboard_card_widget.dart b/lib/src/widgets/dashboard_card_widget.dart
index d5b4f8853..69b41b53f 100644
--- a/lib/src/widgets/dashboard_card_widget.dart
+++ b/lib/src/widgets/dashboard_card_widget.dart
@@ -1,8 +1,7 @@
+import 'package:cake_wallet/themes/core/theme_extension.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
-import '../../themes/utils/custom_theme_colors.dart';
-
class DashBoardRoundedCardWidget extends StatelessWidget {
DashBoardRoundedCardWidget({
this.onTap,
@@ -19,7 +18,6 @@ class DashBoardRoundedCardWidget extends StatelessWidget {
super.key,
this.marginV,
this.marginH,
- required this.isDarkTheme,
});
final VoidCallback? onTap;
@@ -35,7 +33,6 @@ class DashBoardRoundedCardWidget extends StatelessWidget {
final double? marginH;
final double? shadowSpread;
final double? shadowBlur;
- final bool isDarkTheme;
@override
Widget build(BuildContext context) {
@@ -48,12 +45,8 @@ class DashBoardRoundedCardWidget extends StatelessWidget {
borderRadius: BorderRadius.circular(15),
gradient: LinearGradient(
colors: [
- isDarkTheme
- ? CustomThemeColors.cardGradientColorPrimaryDark
- : CustomThemeColors.cardGradientColorPrimaryLight,
- isDarkTheme
- ? CustomThemeColors.cardGradientColorSecondaryDark
- : CustomThemeColors.cardGradientColorSecondaryLight,
+ context.customColors.cardGradientColorPrimary,
+ context.customColors.cardGradientColorSecondary,
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
@@ -76,6 +69,8 @@ class DashBoardRoundedCardWidget extends StatelessWidget {
style: TextButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15),
+ side: BorderSide(
+ width: 1.25, color: Theme.of(context).colorScheme.surfaceContainerHigh),
),
padding: EdgeInsets.only(left: 24, top: 24, right: 20, bottom: 24),
),
diff --git a/lib/src/widgets/gradient_background.dart b/lib/src/widgets/gradient_background.dart
index fd9066ece..a36fb75f0 100644
--- a/lib/src/widgets/gradient_background.dart
+++ b/lib/src/widgets/gradient_background.dart
@@ -1,8 +1,8 @@
-import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/core/theme_extension.dart';
import 'package:flutter/material.dart';
class GradientBackground extends StatelessWidget {
- const GradientBackground({required this.scaffold});
+ const GradientBackground({required this.scaffold, super.key});
final Widget scaffold;
@@ -14,9 +14,7 @@ class GradientBackground extends StatelessWidget {
gradient: LinearGradient(
colors: [
Theme.of(context).colorScheme.surface,
- Theme.of(context).brightness == Brightness.dark
- ? CustomThemeColors.backgroundGradientColorDark
- : CustomThemeColors.backgroundGradientColorLight,
+ context.customColors.backgroundGradientColor,
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
diff --git a/lib/src/widgets/option_tile.dart b/lib/src/widgets/option_tile.dart
index cdc4fb9f4..f241797da 100644
--- a/lib/src/widgets/option_tile.dart
+++ b/lib/src/widgets/option_tile.dart
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
+import 'package:cake_wallet/themes/core/theme_extension.dart';
class OptionTile extends StatelessWidget {
const OptionTile({
@@ -23,10 +24,22 @@ class OptionTile extends StatelessWidget {
return Container(
width: double.infinity,
alignment: Alignment.center,
- child: ElevatedButton(
+ decoration: ShapeDecoration(
+ gradient: LinearGradient(
+ colors: [
+ context.customColors.cardGradientColorPrimary,
+ context.customColors.cardGradientColorSecondary,
+ ],
+ begin: Alignment.topCenter,
+ end: Alignment.bottomCenter,
+ ),
+ shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(15)),
+ ),
+ child: TextButton(
style: TextButton.styleFrom(
- backgroundColor: Theme.of(context).colorScheme.surfaceContainer,
- shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
+ side: BorderSide(width: 1.25, color: Theme.of(context).colorScheme.surfaceContainerHigh),
+ backgroundColor: Colors.transparent,
+ shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(15)),
padding: EdgeInsets.all(24),
),
onPressed: onPressed,
@@ -50,15 +63,15 @@ class OptionTile extends StatelessWidget {
constraints: BoxConstraints(maxWidth: 220),
child: Text(title, style: Theme.of(context).textTheme.titleMedium),
),
- if (tag != null) Container(
- decoration: BoxDecoration(
- border: Border.all(),
- borderRadius: BorderRadius.circular(20),
- color: Theme.of(context).colorScheme.onSurfaceVariant
- ),
- padding: EdgeInsets.symmetric(horizontal: 5),
- margin: EdgeInsets.only(left: 5),
- child: Text(tag!))
+ if (tag != null)
+ Container(
+ decoration: BoxDecoration(
+ border: Border.all(),
+ borderRadius: BorderRadius.circular(20),
+ color: Theme.of(context).colorScheme.onSurfaceVariant),
+ padding: EdgeInsets.symmetric(horizontal: 5),
+ margin: EdgeInsets.only(left: 5),
+ child: Text(tag!))
],
),
Padding(
diff --git a/lib/src/widgets/picker.dart b/lib/src/widgets/picker.dart
index b1fa6f5e5..572645749 100644
--- a/lib/src/widgets/picker.dart
+++ b/lib/src/widgets/picker.dart
@@ -4,7 +4,7 @@ import 'dart:math';
import 'package:cake_wallet/entities/seed_type.dart';
import 'package:cake_wallet/src/widgets/search_bar_widget.dart';
-import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/core/theme_extension.dart';
import 'package:cake_wallet/utils/responsive_layout_util.dart';
import 'package:cw_core/transaction_priority.dart';
import 'package:flutter/material.dart';
@@ -77,7 +77,6 @@ class _PickerState- extends State> {
List images;
List
- filteredItems = [];
List filteredImages = [];
-
final TextEditingController searchController = TextEditingController();
ScrollController controller = ScrollController();
@@ -519,16 +518,13 @@ class _PickerState
- extends State> {
}
Widget buildSlider({required int index, required bool isActivated}) {
- final isDarkMode = Theme.of(context).brightness == Brightness.dark;
return Row(
children: [
Expanded(
child: Slider(
activeColor: Theme.of(context).colorScheme.primary,
- inactiveColor: isDarkMode
- ? CustomThemeColors.toggleColorOffStateDark
- : CustomThemeColors.toggleColorOffStateLight,
- thumbColor: CustomThemeColors.toggleKnobStateColorLight,
+ inactiveColor: context.customColors.toggleColorOffState,
+ thumbColor: context.customColors.toggleKnobStateColor,
value: widget.sliderValue == null || widget.sliderValue! < 1 ? 1 : widget.sliderValue!,
onChanged: isActivated ? widget.onSliderChanged : null,
min: widget.minValue ?? 1,
diff --git a/lib/src/widgets/primary_button.dart b/lib/src/widgets/primary_button.dart
index b4d8cfdaa..750d4cb45 100644
--- a/lib/src/widgets/primary_button.dart
+++ b/lib/src/widgets/primary_button.dart
@@ -46,16 +46,15 @@ class PrimaryButton extends StatelessWidget {
borderRadius: borderRadius ?? BorderRadius.circular(12.0),
),
),
- overlayColor: WidgetStateProperty.all(Colors.transparent),
),
child: Text(
text,
textAlign: TextAlign.center,
style: Theme.of(context).textTheme.bodyMedium!.copyWith(
- fontSize: 15.0,
- fontWeight: FontWeight.w600,
- color: isDisabled ? textColor.withOpacity(0.5) : textColor,
- ),
+ fontSize: 15.0,
+ fontWeight: FontWeight.w600,
+ color: isDisabled ? textColor.withOpacity(0.5) : textColor,
+ ),
),
),
),
@@ -117,10 +116,10 @@ class LoadingPrimaryButton extends StatelessWidget {
: Text(
text,
style: Theme.of(context).textTheme.bodyMedium!.copyWith(
- fontSize: 15.0,
- fontWeight: FontWeight.w600,
- color: isDisabled ? textColor.withOpacity(0.5) : textColor,
- ),
+ fontSize: 15.0,
+ fontWeight: FontWeight.w600,
+ color: isDisabled ? textColor.withOpacity(0.5) : textColor,
+ ),
),
),
),
@@ -228,7 +227,7 @@ class PrimaryImageButton extends StatelessWidget {
child: SizedBox(
width: double.infinity,
height: 52.0,
- child: ElevatedButton(
+ child: TextButton(
onPressed: onPressed,
style: ButtonStyle(
backgroundColor: WidgetStateProperty.all(color),
diff --git a/lib/src/widgets/seed_language_picker.dart b/lib/src/widgets/seed_language_picker.dart
index e2b10aa4c..96c236649 100644
--- a/lib/src/widgets/seed_language_picker.dart
+++ b/lib/src/widgets/seed_language_picker.dart
@@ -15,8 +15,12 @@ class SeedLanguagePickerOption {
}
final List seedLanguages = [
- SeedLanguagePickerOption('English', S.current.seed_language_english,
- Image.asset('assets/images/flags/usa.png'), [MoneroSeedType.legacy, MoneroSeedType.polyseed, MoneroSeedType.bip39]),
+ SeedLanguagePickerOption(
+ 'English',
+ S.current.seed_language_english,
+ Image.asset('assets/images/flags/usa.png'),
+ [MoneroSeedType.legacy, MoneroSeedType.polyseed, MoneroSeedType.bip39],
+ ),
SeedLanguagePickerOption('Chinese (Simplified)', S.current.seed_language_chinese,
Image.asset('assets/images/flags/chn.png'), [MoneroSeedType.legacy, MoneroSeedType.polyseed]),
SeedLanguagePickerOption('Chinese (Traditional)', S.current.seed_language_chinese_traditional,
@@ -48,12 +52,12 @@ const defaultSeedLanguage = 'English';
enum Places { topLeft, topRight, bottomLeft, bottomRight, inside }
class SeedLanguagePicker extends StatefulWidget {
- SeedLanguagePicker(
- {Key? key,
- this.selected = defaultSeedLanguage,
- this.seedType = MoneroSeedType.defaultSeedType,
- required this.onItemSelected})
- : super(key: key);
+ SeedLanguagePicker({
+ Key? key,
+ this.selected = defaultSeedLanguage,
+ this.seedType = MoneroSeedType.defaultSeedType,
+ required this.onItemSelected,
+ }) : super(key: key);
final MoneroSeedType seedType;
final String selected;
diff --git a/lib/src/widgets/service_status_tile.dart b/lib/src/widgets/service_status_tile.dart
index b43740c45..1b7b320a4 100644
--- a/lib/src/widgets/service_status_tile.dart
+++ b/lib/src/widgets/service_status_tile.dart
@@ -1,6 +1,6 @@
import 'package:auto_size_text/auto_size_text.dart';
import 'package:cake_wallet/entities/service_status.dart';
-import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/core/custom_theme_colors.dart';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
@@ -22,11 +22,10 @@ class ServiceStatusTile extends StatelessWidget {
child: AutoSizeText(
"${status.title}${status.status != null ? " - ${status.status}" : ""}",
style: Theme.of(context).textTheme.bodyMedium!.copyWith(
- fontSize: 16,
-
- fontWeight: FontWeight.w800,
- height: 1,
- ),
+ fontSize: 16,
+ fontWeight: FontWeight.w800,
+ height: 1,
+ ),
maxLines: 1,
textAlign: TextAlign.start,
),
diff --git a/lib/src/widgets/services_updates_widget.dart b/lib/src/widgets/services_updates_widget.dart
index eaa50867c..19f167467 100644
--- a/lib/src/widgets/services_updates_widget.dart
+++ b/lib/src/widgets/services_updates_widget.dart
@@ -43,7 +43,7 @@ class _ServicesUpdatesWidgetState extends State {
},
child: CakeImageWidget(
imageUrl: "assets/images/notif.svg",
- color: Theme.of(context).colorScheme.onSurface,
+ color: Theme.of(context).colorScheme.primary,
width: DeviceInfo.instance.isDesktop ? 30 : 20,
),
);
@@ -108,7 +108,7 @@ class _ServicesUpdatesWidgetState extends State {
horizontal: 24,
vertical: 20,
),
- child: PrimaryImageButton(
+ child: PrimaryButton(
onPressed: () {
try {
launchUrl(
@@ -118,10 +118,6 @@ class _ServicesUpdatesWidgetState extends State {
mode: LaunchMode.externalApplication);
} catch (_) {}
},
- image: Image.asset(
- "assets/images/status_website_image.png",
- color: Theme.of(context).colorScheme.onPrimary,
- ),
text: "Status Website",
color: Theme.of(context).colorScheme.primary,
textColor: Theme.of(context).colorScheme.onPrimary,
@@ -139,7 +135,7 @@ class _ServicesUpdatesWidgetState extends State {
children: [
CakeImageWidget(
imageUrl: "assets/images/notif.svg",
- color: Theme.of(context).colorScheme.onSurface,
+ color: Theme.of(context).colorScheme.primary,
width: DeviceInfo.instance.isDesktop ? 30 : 20,
),
if (state.hasData && state.data!.hasUpdates && !wasOpened)
diff --git a/lib/src/widgets/setting_actions.dart b/lib/src/widgets/setting_actions.dart
index ae0552e2e..78f1ee142 100644
--- a/lib/src/widgets/setting_actions.dart
+++ b/lib/src/widgets/setting_actions.dart
@@ -34,7 +34,7 @@ class SettingActions {
static SettingActions silentPaymentsSettingAction = SettingActions._(
key: ValueKey('dashboard_page_menu_widget_silent_payment_settings_button_key'),
name: (context) => S.of(context).silent_payments_settings,
- image: 'assets/images/bitcoin_menu.png',
+ image: 'assets/images/crypto/bitcoin.png',
onTap: (BuildContext context) {
Navigator.of(context).pushNamed(Routes.silentPaymentsSettings);
},
@@ -43,16 +43,17 @@ class SettingActions {
static SettingActions exportOutputsAction = SettingActions._(
key: ValueKey('dashboard_page_menu_widget_export_outputs_settings_button_key'),
name: (context) => S.of(context).export_outputs,
- image: 'assets/images/monero_menu.png',
+ image: 'assets/images/crypto/monero.png',
onTap: (BuildContext context) {
- Navigator.of(context).pushNamed(Routes.urqrAnimatedPage, arguments: {'export-outputs': 'export-outputs'});
+ Navigator.of(context)
+ .pushNamed(Routes.urqrAnimatedPage, arguments: {'export-outputs': 'export-outputs'});
},
);
-
+
static SettingActions litecoinMwebSettingAction = SettingActions._(
key: ValueKey('dashboard_page_menu_widget_litecoin_mweb_settings_button_key'),
name: (context) => S.of(context).litecoin_mweb_settings,
- image: 'assets/images/litecoin_menu.png',
+ image: 'assets/images/crypto/litecoin.png',
onTap: (BuildContext context) {
Navigator.of(context).pushNamed(Routes.mwebSettings);
},
diff --git a/lib/src/widgets/standard_slide_button_widget.dart b/lib/src/widgets/standard_slide_button_widget.dart
index 641e05036..d531cfb6c 100644
--- a/lib/src/widgets/standard_slide_button_widget.dart
+++ b/lib/src/widgets/standard_slide_button_widget.dart
@@ -1,6 +1,5 @@
import 'package:cake_wallet/src/widgets/primary_button.dart';
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
-import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/core/theme_extension.dart';
import 'package:flutter/material.dart';
class StandardSlideButton extends StatefulWidget {
@@ -9,7 +8,6 @@ class StandardSlideButton extends StatefulWidget {
required this.onSlideComplete,
this.buttonText = '',
this.height = 48.0,
- required this.currentTheme,
required this.accessibleNavigationModeButtonText,
this.tileBackgroundColor,
this.knobColor,
@@ -18,11 +16,10 @@ class StandardSlideButton extends StatefulWidget {
final VoidCallback onSlideComplete;
final String buttonText;
final double height;
- final MaterialThemeBase currentTheme;
final String accessibleNavigationModeButtonText;
final Color? tileBackgroundColor;
final Color? knobColor;
-
+
@override
StandardSlideButtonState createState() => StandardSlideButtonState();
}
@@ -39,9 +36,7 @@ class StandardSlideButtonState extends State {
Widget build(BuildContext context) {
final bool accessible = MediaQuery.of(context).accessibleNavigation;
- final tileBackgroundColor = widget.currentTheme.isDark
- ? CustomThemeColors.backgroundGradientColorDark
- : CustomThemeColors.backgroundGradientColorLight;
+ final tileBackgroundColor = context.currentTheme.customColors.backgroundGradientColor;
return accessible
? PrimaryButton(
diff --git a/lib/src/widgets/standard_switch.dart b/lib/src/widgets/standard_switch.dart
index 8100263b7..076292976 100644
--- a/lib/src/widgets/standard_switch.dart
+++ b/lib/src/widgets/standard_switch.dart
@@ -1,12 +1,16 @@
-import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/core/theme_extension.dart';
import 'package:flutter/material.dart';
class StandardSwitch extends StatefulWidget {
- const StandardSwitch({required this.value, required this.onTapped});
+ const StandardSwitch({
+ required this.value,
+ required this.onTapped,
+ this.backgroundColor,
+ });
final bool value;
+ final Color? backgroundColor;
final VoidCallback onTapped;
-
@override
StandardSwitchState createState() => StandardSwitchState();
}
@@ -14,7 +18,6 @@ class StandardSwitch extends StatefulWidget {
class StandardSwitchState extends State {
@override
Widget build(BuildContext context) {
- final isDarkMode = Theme.of(context).brightness == Brightness.dark;
return Semantics(
toggled: widget.value,
child: GestureDetector(
@@ -28,20 +31,16 @@ class StandardSwitchState extends State {
decoration: BoxDecoration(
color: widget.value
? Theme.of(context).colorScheme.primary
- : isDarkMode
- ? CustomThemeColors.toggleColorOffStateDark
- : CustomThemeColors.toggleColorOffStateLight,
- borderRadius: BorderRadius.all(
- Radius.circular(14.0),
- ),
+ : widget.backgroundColor ?? context.currentTheme.customColors.toggleColorOffState,
+ borderRadius: BorderRadius.all(Radius.circular(14.0)),
),
child: Container(
width: 24.0,
height: 24.0,
decoration: BoxDecoration(
- color: isDarkMode
+ color: context.currentTheme.isDark
? Theme.of(context).colorScheme.surface
- : CustomThemeColors.toggleKnobStateColorLight,
+ : context.currentTheme.customColors.toggleKnobStateColor,
shape: BoxShape.circle,
),
),
diff --git a/lib/src/widgets/template_tile.dart b/lib/src/widgets/template_tile.dart
index 879288ce7..3fda11b7c 100644
--- a/lib/src/widgets/template_tile.dart
+++ b/lib/src/widgets/template_tile.dart
@@ -1,4 +1,4 @@
-import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/core/custom_theme_colors.dart';
import 'package:flutter/material.dart';
class TemplateTile extends StatefulWidget {
diff --git a/lib/src/widgets/warning_box_widget.dart b/lib/src/widgets/warning_box_widget.dart
index 1068e5519..184a6c144 100644
--- a/lib/src/widgets/warning_box_widget.dart
+++ b/lib/src/widgets/warning_box_widget.dart
@@ -1,11 +1,9 @@
-import 'package:cake_wallet/themes/core/material_base_theme.dart';
-import 'package:cake_wallet/themes/utils/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/core/theme_extension.dart';
import 'package:flutter/material.dart';
class WarningBox extends StatelessWidget {
const WarningBox({
required this.content,
- required this.currentTheme,
this.showBorder = true,
this.textColor,
this.textAlign,
@@ -18,7 +16,6 @@ class WarningBox extends StatelessWidget {
});
final String content;
- final MaterialThemeBase currentTheme;
final bool showBorder;
final Color? textColor;
final TextAlign? textAlign;
@@ -33,15 +30,11 @@ class WarningBox extends StatelessWidget {
return Container(
padding: padding ?? EdgeInsets.symmetric(horizontal: 12, vertical: 8),
decoration: BoxDecoration(
- color: currentTheme.isDark
- ? CustomThemeColors.warningContainerColorDark
- : CustomThemeColors.warningContainerColorLight,
+ color: context.customColors.warningContainerColor,
borderRadius: BorderRadius.all(Radius.circular(12)),
border: showBorder
? Border.all(
- color: currentTheme.isDark
- ? CustomThemeColors.warningOutlineColorDark
- : CustomThemeColors.warningOutlineColorLight,
+ color: context.customColors.warningOutlineColor,
width: 2.0,
)
: null,
@@ -53,8 +46,8 @@ class WarningBox extends StatelessWidget {
Icons.warning_amber_rounded,
size: iconSize ?? 64,
color: textColor ?? Theme.of(context).colorScheme.onSurface,
- ),
- SizedBox(width:iconSpacing ?? 6),
+ ),
+ SizedBox(width: iconSpacing ?? 6),
Expanded(
child: Text(
content,
diff --git a/lib/themes/core/custom_theme_colors.dart b/lib/themes/core/custom_theme_colors.dart
new file mode 100644
index 000000000..f0b93f036
--- /dev/null
+++ b/lib/themes/core/custom_theme_colors.dart
@@ -0,0 +1,25 @@
+import 'package:flutter/material.dart';
+
+/// Abstract interface for theme-specific custom colors
+/// Each theme implementation should provide its own custom colors
+abstract class CustomThemeColors {
+ // Warning colors
+ Color get warningContainerColor;
+ Color get warningOutlineColor;
+
+ // Background gradient colors
+ Color get backgroundMainColor;
+ Color get backgroundGradientColor;
+
+ // Card gradient colors
+ Color get cardGradientColorPrimary;
+ Color get cardGradientColorSecondary;
+
+ // Toggle colors
+ Color get toggleKnobStateColor;
+ Color get toggleColorOffState;
+
+ // Sync colors (common across themes)
+ static const syncGreen = Color(0xFFFF12A439);
+ static const syncYellow = Color(0xFFFFFB84E);
+}
diff --git a/lib/themes/core/material_base_theme.dart b/lib/themes/core/material_base_theme.dart
index 3b99f464e..41d75c647 100644
--- a/lib/themes/core/material_base_theme.dart
+++ b/lib/themes/core/material_base_theme.dart
@@ -1,7 +1,13 @@
import 'package:flutter/material.dart';
+import 'package:cake_wallet/themes/core/custom_theme_colors.dart';
enum ThemeType { light, dark }
+abstract interface class ThemeAccentColor {
+ Color get color;
+ String get name;
+}
+
/// Abstract base class for theme data in the app.
/// This class defines the contract that all theme implementations must follow.
abstract class MaterialThemeBase {
@@ -32,4 +38,17 @@ abstract class MaterialThemeBase {
ThemeData get themeData;
bool get isDark => brightness == Brightness.dark;
+
+ /// Custom colors provider for theme-specific colors
+ CustomThemeColors get customColors;
+
+ /// Theme family identifier for grouping themes with accent colors
+ String? get themeFamily;
+
+ String? get accentColorId;
+
+ String? get accentColorName;
+
+ /// Whether this theme has accent color variants
+ bool get hasAccentColors => themeFamily != null;
}
diff --git a/lib/themes/core/theme_extension.dart b/lib/themes/core/theme_extension.dart
new file mode 100644
index 000000000..823474a34
--- /dev/null
+++ b/lib/themes/core/theme_extension.dart
@@ -0,0 +1,11 @@
+import 'package:cake_wallet/di.dart';
+import 'package:cake_wallet/themes/core/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/core/material_base_theme.dart';
+import 'package:cake_wallet/themes/core/theme_store.dart';
+import 'package:flutter/material.dart';
+
+/// For access to the current theme that we would have had to do a lot of constructor pass down for.
+extension ThemeX on BuildContext {
+ MaterialThemeBase get currentTheme => getIt().currentTheme;
+ CustomThemeColors get customColors => currentTheme.customColors;
+}
diff --git a/lib/themes/core/theme_store.dart b/lib/themes/core/theme_store.dart
index 687e24e64..0f272f473 100644
--- a/lib/themes/core/theme_store.dart
+++ b/lib/themes/core/theme_store.dart
@@ -7,6 +7,7 @@ import 'package:cake_wallet/themes/utils/theme_list.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'material_base_theme.dart';
+import 'package:cake_wallet/themes/theme_classes/black_theme.dart';
part 'theme_store.g.dart';
@@ -20,6 +21,9 @@ abstract class ThemeStoreBase with Store {
@observable
ThemeMode _themeMode = ThemeMode.system;
+ @observable
+ bool _isOled = false;
+
@computed
MaterialThemeBase get currentTheme => _currentTheme;
@@ -29,6 +33,38 @@ abstract class ThemeStoreBase with Store {
@computed
bool get isDarkMode => _currentTheme.isDark;
+ @computed
+ bool get isOled => _isOled;
+
+ @computed
+ bool get hasCustomTheme => sharedPreferences.getInt(PreferencesKey.currentTheme) != null;
+
+ @computed
+ MaterialThemeBase? get savedCustomTheme {
+ final raw = sharedPreferences.getInt(PreferencesKey.currentTheme);
+ return raw != null ? ThemeList.deserialize(raw: raw) : null;
+ }
+
+ @computed
+ MaterialThemeBase? get savedDarkTheme {
+ try {
+ final raw = sharedPreferences.getInt(PreferencesKey.savedDarkTheme);
+ return raw != null ? ThemeList.deserialize(raw: raw) : null;
+ } catch (e) {
+ return null;
+ }
+ }
+
+ @computed
+ MaterialThemeBase? get savedLightTheme {
+ try {
+ final raw = sharedPreferences.getInt(PreferencesKey.savedLightTheme);
+ return raw != null ? ThemeList.deserialize(raw: raw) : null;
+ } catch (e) {
+ return null;
+ }
+ }
+
late SharedPreferences sharedPreferences;
@action
@@ -37,6 +73,15 @@ abstract class ThemeStoreBase with Store {
_currentTheme = theme;
await sharedPreferences.setInt(PreferencesKey.currentTheme, theme.raw);
+ _isOled = theme is BlackTheme ? theme.isOled : false;
+ await sharedPreferences.setBool(PreferencesKey.blackThemeOled, _isOled);
+
+ // Save preferred themes for system mode
+ if (theme.isDark) {
+ await sharedPreferences.setInt(PreferencesKey.savedDarkTheme, theme.raw);
+ } else {
+ await sharedPreferences.setInt(PreferencesKey.savedLightTheme, theme.raw);
+ }
}
@action
@@ -44,11 +89,33 @@ abstract class ThemeStoreBase with Store {
if (_themeMode == mode) return;
_themeMode = mode;
-
await _saveThemeModeToPrefs(mode);
if (mode == ThemeMode.system) {
- setTheme(getThemeFromSystem());
+ // We'll always use getThemeFromSystem() for system mode to respect saved themes
+ await setTheme(getThemeFromSystem());
+ return;
+ }
+
+ if (!hasCustomTheme) return;
+
+ final savedTheme = savedCustomTheme;
+ if (savedTheme == null) return;
+
+ if (_isThemeCompatibleWithMode(savedTheme, mode)) {
+ await setTheme(savedTheme);
+ }
+ }
+
+ @action
+ Future setOledEnabled(bool value) async {
+ if (_isOled == value) return;
+ _isOled = value;
+ await sharedPreferences.setBool(PreferencesKey.blackThemeOled, value);
+
+ if (_currentTheme is BlackTheme) {
+ final current = _currentTheme as BlackTheme;
+ await setTheme(BlackTheme(current.accentColor, isOled: value));
}
}
@@ -109,13 +176,22 @@ abstract class ThemeStoreBase with Store {
/// Loads the saved theme from SharedPreferences
Future loadSavedTheme({bool isFromBackup = false}) async {
try {
- final savedTheme = sharedPreferences.getInt(PreferencesKey.currentTheme);
- if (savedTheme == null) {
+ _isOled = sharedPreferences.getBool(PreferencesKey.blackThemeOled) ?? false;
+ final theme = savedCustomTheme;
+
+ if (!hasCustomTheme || theme == null) {
await _setSystemTheme();
return;
}
- final theme = ThemeList.deserialize(raw: savedTheme);
+ if (theme is BlackTheme) {
+ final adjusted = BlackTheme(theme.accentColor, isOled: _isOled);
+ if (_currentTheme != adjusted) {
+ await setTheme(adjusted);
+ }
+ } else if (_currentTheme != theme) {
+ await setTheme(theme);
+ }
final newThemeMode = _getThemeModeOnStartUp(theme, isFromBackup);
@@ -127,16 +203,14 @@ abstract class ThemeStoreBase with Store {
if (_themeMode != newThemeMode) {
await setThemeMode(newThemeMode);
}
-
- if (_currentTheme != theme) {
- await setTheme(theme);
- }
} catch (e) {
await _setSystemTheme();
}
}
Future _setSystemTheme({bool isNewInstall = false}) async {
+ if (!isNewInstall && hasCustomTheme) return;
+
final systemTheme = getThemeFromSystem();
if (_currentTheme != systemTheme) {
@@ -145,10 +219,9 @@ abstract class ThemeStoreBase with Store {
if (isNewInstall) {
await _saveThemeModeToPrefs(ThemeMode.system);
- }
-
- if (_themeMode != ThemeMode.system) {
- await setThemeMode(ThemeMode.system);
+ if (_themeMode != ThemeMode.system) {
+ await setThemeMode(ThemeMode.system);
+ }
}
}
@@ -169,6 +242,47 @@ abstract class ThemeStoreBase with Store {
MaterialThemeBase getThemeFromSystem() {
final systemBrightness = WidgetsBinding.instance.platformDispatcher.platformBrightness;
- return systemBrightness == Brightness.dark ? ThemeList.darkTheme : ThemeList.lightTheme;
+
+ if (systemBrightness == Brightness.dark) {
+ // Prefer saved dark theme when available
+ try {
+ final savedDark = savedDarkTheme;
+ if (savedDark != null) {
+ if (savedDark is BlackTheme) {
+ // We'll use the OLED flag from the saved theme itself, not from separate preference
+ return BlackTheme(savedDark.accentColor, isOled: savedDark.isOled);
+ }
+ return savedDark;
+ }
+ } catch (_) {}
+
+ // If no saved dark theme, check if current theme is BlackTheme with accent colors
+ // and preserve it when switching to dark mode
+ if (_currentTheme is BlackTheme) {
+ final currentBlackTheme = _currentTheme as BlackTheme;
+ return BlackTheme(currentBlackTheme.accentColor, isOled: currentBlackTheme.isOled);
+ }
+
+ return ThemeList.darkTheme;
+ }
+
+ // Light system preference: prefer saved light theme when available
+ try {
+ final savedLight = savedLightTheme;
+ if (savedLight != null) return savedLight;
+ } catch (_) {}
+ return ThemeList.lightTheme;
+ }
+
+ /// Checks if a theme is compatible with a theme mode
+ bool _isThemeCompatibleWithMode(MaterialThemeBase theme, ThemeMode mode) {
+ switch (mode) {
+ case ThemeMode.light:
+ return !theme.isDark;
+ case ThemeMode.dark:
+ return theme.isDark;
+ case ThemeMode.system:
+ return true; // All themes are compatible with system mode
+ }
}
}
diff --git a/lib/themes/custom_theme_colors/black_theme_custom_colors.dart b/lib/themes/custom_theme_colors/black_theme_custom_colors.dart
new file mode 100644
index 000000000..df86361a9
--- /dev/null
+++ b/lib/themes/custom_theme_colors/black_theme_custom_colors.dart
@@ -0,0 +1,28 @@
+import 'dart:ui';
+import 'package:cake_wallet/themes/core/custom_theme_colors.dart';
+
+class BlackThemeCustomColors extends CustomThemeColors {
+ @override
+ Color get warningContainerColor => const Color(0xFF8E5800);
+
+ @override
+ Color get warningOutlineColor => const Color(0xFFFFB84E);
+
+ @override
+ Color get backgroundMainColor => const Color(0xFF000000);
+
+ @override
+ Color get backgroundGradientColor => const Color(0xFF000000);
+
+ @override
+ Color get cardGradientColorPrimary => const Color(0xFF202023);
+
+ @override
+ Color get cardGradientColorSecondary => const Color(0xFF181819);
+
+ @override
+ Color get toggleKnobStateColor => const Color(0xFFFFFFFF);
+
+ @override
+ Color get toggleColorOffState => const Color(0xFF2B292B);
+}
diff --git a/lib/themes/custom_theme_colors/dark_theme_custom_colors.dart b/lib/themes/custom_theme_colors/dark_theme_custom_colors.dart
new file mode 100644
index 000000000..d8975bbe8
--- /dev/null
+++ b/lib/themes/custom_theme_colors/dark_theme_custom_colors.dart
@@ -0,0 +1,28 @@
+import 'dart:ui';
+import 'package:cake_wallet/themes/core/custom_theme_colors.dart';
+
+class DarkThemeCustomColors extends CustomThemeColors {
+ @override
+ Color get warningContainerColor => const Color(0xFF8E5800);
+
+ @override
+ Color get warningOutlineColor => const Color(0xFFFFB84E);
+
+ @override
+ Color get backgroundMainColor => const Color(0xFF000000);
+
+ @override
+ Color get backgroundGradientColor => const Color(0xFF0F1A36);
+
+ @override
+ Color get cardGradientColorPrimary => const Color(0xFF2B3A67);
+
+ @override
+ Color get cardGradientColorSecondary => const Color(0xFF1C2A4F);
+
+ @override
+ Color get toggleKnobStateColor => const Color(0xFFFFFFFF);
+
+ @override
+ Color get toggleColorOffState => const Color(0xFF3A4F88);
+}
diff --git a/lib/themes/custom_theme_colors/light_theme_custom_colors.dart b/lib/themes/custom_theme_colors/light_theme_custom_colors.dart
new file mode 100644
index 000000000..98fb1f154
--- /dev/null
+++ b/lib/themes/custom_theme_colors/light_theme_custom_colors.dart
@@ -0,0 +1,28 @@
+import 'dart:ui';
+import 'package:cake_wallet/themes/core/custom_theme_colors.dart';
+
+class LightThemeCustomColors extends CustomThemeColors {
+ @override
+ Color get warningContainerColor => const Color(0xFFFFCC00);
+
+ @override
+ Color get warningOutlineColor => const Color(0xFF312938);
+
+ @override
+ Color get backgroundMainColor => const Color(0xFF000000);
+
+ @override
+ Color get backgroundGradientColor => const Color(0xFFE7E7FD);
+
+ @override
+ Color get cardGradientColorPrimary => const Color(0xFFFFFFFF);
+
+ @override
+ Color get cardGradientColorSecondary => const Color(0xFFF3F3FF);
+
+ @override
+ Color get toggleKnobStateColor => const Color(0xFFFFFFFF);
+
+ @override
+ Color get toggleColorOffState => const Color(0xFFCACAE7);
+}
diff --git a/lib/themes/theme_classes/black_theme.dart b/lib/themes/theme_classes/black_theme.dart
new file mode 100644
index 000000000..336e94240
--- /dev/null
+++ b/lib/themes/theme_classes/black_theme.dart
@@ -0,0 +1,299 @@
+import 'package:flutter/material.dart';
+import 'package:cake_wallet/themes/core/material_base_theme.dart';
+import 'package:cake_wallet/themes/core/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/custom_theme_colors/black_theme_custom_colors.dart';
+
+enum BlackThemeAccentColor implements ThemeAccentColor {
+ cakePrimary(Color(0xFF52B6F0), 'Cake Primary'),
+ bchGreen(Color(0xFF44BA52), 'BCH Green'),
+ bitcoinYellow(Color(0xFFFFC107), 'Bitcoin Yellow'),
+ moneroOrange(Color(0xFFFF6600), 'Monero Orange'),
+ tronRed(Color(0xFFFF4242), 'Tron Red'),
+ frostingPurple(Color(0xFFBABAF3), 'Frosting Purple');
+
+ const BlackThemeAccentColor(this.color, this.name);
+
+ @override
+ final Color color;
+
+ @override
+ final String name;
+}
+
+class BlackTheme extends MaterialThemeBase {
+ BlackTheme(this.accentColor, {this.isOled = false});
+
+ final BlackThemeAccentColor accentColor;
+ final bool isOled;
+
+ @override
+ Brightness get brightness => Brightness.dark;
+
+ @override
+ ThemeMode get themeMode => ThemeMode.dark;
+
+ @override
+ Color get primaryColor => accentColor.color;
+
+ @override
+ Color get secondaryColor => const Color(0xFFCCC4CD);
+
+ @override
+ Color get errorColor => const Color(0xFFFFB4AB);
+
+ @override
+ Color get surfaceColor => isOled ? const Color(0xFF000000) : const Color(0xFF131314);
+
+ @override
+ Color get tertiaryColor => const Color(0xFFDEBFC5);
+
+ @override
+ ColorScheme get colorScheme => ColorScheme.dark(
+ primary: primaryColor,
+ onPrimary: const Color(0xFF352D3C),
+ primaryContainer: const Color(0xFF28212F),
+ onPrimaryContainer: const Color(0xFFB7ABBE),
+ secondary: secondaryColor,
+ onSecondary: const Color(0xFF332F36),
+ secondaryContainer: const Color(0xFF454148),
+ onSecondaryContainer: const Color(0xFFDFD6DF),
+ tertiary: tertiaryColor,
+ onTertiary: const Color(0xFF3F2B30),
+ tertiaryContainer: const Color(0xFF321F24),
+ onTertiaryContainer: const Color(0xFFC6A8AE),
+ error: errorColor,
+ onError: const Color(0xFFB71919),
+ errorContainer: const Color(0xFFC53636),
+ onErrorContainer: const Color(0xFFFFDAD6),
+ surface: surfaceColor,
+ background: surfaceColor,
+ onSurface: const Color(0xFFE6E1E3),
+ onSurfaceVariant: const Color(0xFFB4B4B4),
+ surfaceContainerLowest: isOled ? const Color(0xFF000000) : const Color(0xFF0F0E0F),
+ surfaceContainerLow: Color(0xFF1C1B1C),
+ surfaceContainer: Color(0xFF211F20),
+ surfaceContainerHigh: Color(0xFF2B292B),
+ surfaceContainerHighest: Color(0xFF363435),
+ outline: const Color(0xFF958F95),
+ outlineVariant: const Color(0xFF49454B),
+ );
+
+ static const String fontFamily = 'Lato';
+
+ @override
+ TextTheme get textTheme => TextTheme(
+ displayLarge: TextStyle(
+ fontSize: 57,
+ fontWeight: FontWeight.w400,
+ letterSpacing: -0.25,
+ color: colorScheme.onSurface,
+ ),
+ displayMedium: TextStyle(
+ fontSize: 45,
+ fontWeight: FontWeight.w400,
+ letterSpacing: 0,
+ color: colorScheme.onSurface,
+ ),
+ displaySmall: TextStyle(
+ fontSize: 36,
+ fontWeight: FontWeight.w400,
+ letterSpacing: 0,
+ color: colorScheme.onSurface,
+ ),
+ headlineLarge: TextStyle(
+ fontSize: 32,
+ fontWeight: FontWeight.w400,
+ letterSpacing: 0,
+ color: colorScheme.onSurface,
+ ),
+ headlineMedium: TextStyle(
+ fontSize: 28,
+ fontWeight: FontWeight.w400,
+ letterSpacing: 0,
+ color: colorScheme.onSurface,
+ ),
+ headlineSmall: TextStyle(
+ fontSize: 24,
+ fontWeight: FontWeight.w400,
+ letterSpacing: 0,
+ color: colorScheme.onSurface,
+ ),
+ titleLarge: TextStyle(
+ fontSize: 22,
+ fontWeight: FontWeight.w400,
+ letterSpacing: 0,
+ color: colorScheme.onSurface,
+ ),
+ titleMedium: TextStyle(
+ fontSize: 16,
+ fontWeight: FontWeight.w500,
+ letterSpacing: 0.15,
+ color: colorScheme.onSurface,
+ ),
+ titleSmall: TextStyle(
+ fontSize: 14,
+ fontWeight: FontWeight.w500,
+ letterSpacing: 0.1,
+ color: colorScheme.onSurface,
+ ),
+ bodyLarge: TextStyle(
+ fontSize: 16,
+ fontWeight: FontWeight.w400,
+ letterSpacing: 0.5,
+ color: colorScheme.onSurface,
+ ),
+ bodyMedium: TextStyle(
+ fontSize: 14,
+ fontWeight: FontWeight.w400,
+ letterSpacing: 0.25,
+ color: colorScheme.onSurface,
+ ),
+ bodySmall: TextStyle(
+ fontSize: 12,
+ fontWeight: FontWeight.w400,
+ letterSpacing: 0.4,
+ color: colorScheme.onSurface,
+ ),
+ labelLarge: TextStyle(
+ fontSize: 14,
+ fontWeight: FontWeight.w500,
+ letterSpacing: 0.1,
+ color: colorScheme.onSurface,
+ ),
+ labelMedium: TextStyle(
+ fontSize: 12,
+ fontWeight: FontWeight.w500,
+ letterSpacing: 0.5,
+ color: colorScheme.onSurface,
+ ),
+ labelSmall: TextStyle(
+ fontSize: 10,
+ fontWeight: FontWeight.w500,
+ letterSpacing: 0.5,
+ color: colorScheme.onSurface,
+ ),
+ );
+
+ @override
+ ThemeData get themeData => ThemeData(
+ useMaterial3: true,
+ fontFamily: fontFamily,
+ brightness: brightness,
+ colorScheme: colorScheme,
+ scaffoldBackgroundColor: surfaceColor,
+ canvasColor: surfaceColor,
+ cardColor: colorScheme.surface,
+ textTheme: textTheme,
+ appBarTheme: AppBarTheme(
+ backgroundColor: surfaceColor,
+ foregroundColor: colorScheme.onSurface,
+ elevation: 0,
+ ),
+ cardTheme: CardThemeData(
+ color: colorScheme.surface,
+ elevation: 1,
+ shape: RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(12),
+ ),
+ ),
+ elevatedButtonTheme: ElevatedButtonThemeData(
+ style: ElevatedButton.styleFrom(
+ backgroundColor: colorScheme.primary,
+ foregroundColor: colorScheme.onPrimary,
+ elevation: 0,
+ shape: RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(10),
+ ),
+ ),
+ ),
+ outlinedButtonTheme: OutlinedButtonThemeData(
+ style: OutlinedButton.styleFrom(
+ foregroundColor: colorScheme.primary,
+ side: BorderSide(color: colorScheme.outline),
+ shape: RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(10),
+ ),
+ ),
+ ),
+ textButtonTheme: TextButtonThemeData(
+ style: TextButton.styleFrom(
+ foregroundColor: colorScheme.primary,
+ shape: RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(10),
+ ),
+ ),
+ ),
+ inputDecorationTheme: InputDecorationTheme(
+ filled: true,
+ fillColor: colorScheme.surfaceContainer,
+ border: OutlineInputBorder(
+ borderRadius: BorderRadius.circular(10),
+ borderSide: BorderSide.none,
+ ),
+ enabledBorder: OutlineInputBorder(
+ borderRadius: BorderRadius.circular(10),
+ borderSide: BorderSide.none,
+ ),
+ focusedBorder: OutlineInputBorder(
+ borderRadius: BorderRadius.circular(10),
+ borderSide: BorderSide(color: colorScheme.primary),
+ ),
+ errorBorder: OutlineInputBorder(
+ borderRadius: BorderRadius.circular(10),
+ borderSide: BorderSide(color: colorScheme.error),
+ ),
+ focusedErrorBorder: OutlineInputBorder(
+ borderRadius: BorderRadius.circular(10),
+ borderSide: BorderSide(color: colorScheme.error),
+ ),
+ disabledBorder: OutlineInputBorder(
+ borderRadius: BorderRadius.circular(10),
+ borderSide: BorderSide.none,
+ ),
+ ),
+ );
+
+ @override
+ String get title => 'Black Theme (${accentColor.name})';
+
+ @override
+ ThemeType get type => ThemeType.dark;
+
+ @override
+ int get raw {
+ final baseValue = switch (accentColor) {
+ BlackThemeAccentColor.cakePrimary => 12,
+ BlackThemeAccentColor.bchGreen => 13,
+ BlackThemeAccentColor.bitcoinYellow => 14,
+ BlackThemeAccentColor.moneroOrange => 15,
+ BlackThemeAccentColor.tronRed => 16,
+ BlackThemeAccentColor.frostingPurple => 17,
+ };
+ if (!isOled) return baseValue;
+ // OLED encodes as 100 + base to avoid collisions
+ return 100 + baseValue;
+ }
+
+ @override
+ CustomThemeColors get customColors => BlackThemeCustomColors();
+
+ @override
+ String? get themeFamily => 'BlackTheme';
+
+ @override
+ String? get accentColorId => accentColor.name.toLowerCase();
+
+ @override
+ String? get accentColorName => accentColor.name;
+
+ @override
+ bool operator ==(Object other) =>
+ identical(this, other) ||
+ other is BlackTheme &&
+ runtimeType == other.runtimeType &&
+ accentColor == other.accentColor &&
+ isOled == other.isOled;
+
+ @override
+ int get hashCode => Object.hash(accentColor, isOled);
+}
diff --git a/lib/themes/theme_classes/dark_theme.dart b/lib/themes/theme_classes/dark_theme.dart
index c047a9795..ade19e5e7 100644
--- a/lib/themes/theme_classes/dark_theme.dart
+++ b/lib/themes/theme_classes/dark_theme.dart
@@ -1,5 +1,7 @@
import 'package:flutter/material.dart';
import 'package:cake_wallet/themes/core/material_base_theme.dart';
+import 'package:cake_wallet/themes/core/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/custom_theme_colors/dark_theme_custom_colors.dart';
class DarkTheme extends MaterialThemeBase {
@override
@@ -47,8 +49,8 @@ class DarkTheme extends MaterialThemeBase {
surfaceContainerLowest: Color(0xFF171C30),
surfaceContainerLow: Color(0xFF2D385C),
surfaceContainer: Color(0xFF24335B),
- surfaceContainerHigh: Color(0xFF212C47),
- surfaceContainerHighest: Color(0xFF2A3B67),
+ surfaceContainerHigh: Color(0xFF2A3E73),
+ surfaceContainerHighest: Color(0xFF334C8C),
outline: const Color(0xFF9EACC1),
outlineVariant: const Color(0xFF3E5579),
);
@@ -231,4 +233,16 @@ class DarkTheme extends MaterialThemeBase {
@override
int get raw => 1;
+
+ @override
+ CustomThemeColors get customColors => DarkThemeCustomColors();
+
+ @override
+ String? get themeFamily => null;
+
+ @override
+ String? get accentColorId => null;
+
+ @override
+ String? get accentColorName => null;
}
diff --git a/lib/themes/theme_classes/light_theme.dart b/lib/themes/theme_classes/light_theme.dart
index 5248815fb..e9b28f9e4 100644
--- a/lib/themes/theme_classes/light_theme.dart
+++ b/lib/themes/theme_classes/light_theme.dart
@@ -1,5 +1,7 @@
import 'package:flutter/material.dart';
import 'package:cake_wallet/themes/core/material_base_theme.dart';
+import 'package:cake_wallet/themes/core/custom_theme_colors.dart';
+import 'package:cake_wallet/themes/custom_theme_colors/light_theme_custom_colors.dart';
class LightTheme extends MaterialThemeBase {
@override
@@ -228,4 +230,16 @@ class LightTheme extends MaterialThemeBase {
@override
int get raw => 0;
+
+ @override
+ CustomThemeColors get customColors => LightThemeCustomColors();
+
+ @override
+ String? get themeFamily => null;
+
+ @override
+ String? get accentColorId => null;
+
+ @override
+ String? get accentColorName => null;
}
diff --git a/lib/themes/utils/custom_theme_colors.dart b/lib/themes/utils/custom_theme_colors.dart
deleted file mode 100644
index 54f823fc7..000000000
--- a/lib/themes/utils/custom_theme_colors.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-import 'dart:ui';
-
-class CustomThemeColors {
- static const syncGreen = Color(0xFFFF12A439);
- static const syncYellow = Color(0xFFFFFB84E);
-
- static const warningOutlineColorDark = Color(0xFFFFB84E);
- static const warningContainerColorDark = Color(0xFF8E5800);
- static const warningContainerColorLight = Color(0xFFFFCC00);
- static const warningOutlineColorLight = Color(0xFF312938);
-
- static const backgroundGradientColorDark = Color(0xFF0F1A36);
- static const backgroundGradientColorLight = Color(0xFFE7E7FD);
-
- static const cardGradientColorPrimaryDark = Color(0xFF2B3A67);
- static const cardGradientColorPrimaryLight = Color(0xFFFFFFFF);
- static const cardGradientColorSecondaryDark = Color(0xFF1C2A4F);
- static const cardGradientColorSecondaryLight = Color(0xFFF3F3FF);
-
- static const toggleKnobStateColorLight = Color(0xFFFFFFFF);
- static const toggleColorOffStateLight = Color(0xFFCACAE7);
- static const toggleColorOffStateDark = Color(0xFF3A4F88);
-}
diff --git a/lib/themes/utils/theme_list.dart b/lib/themes/utils/theme_list.dart
index 32c6805a7..4b9f92546 100644
--- a/lib/themes/utils/theme_list.dart
+++ b/lib/themes/utils/theme_list.dart
@@ -1,16 +1,59 @@
import 'package:cake_wallet/themes/core/material_base_theme.dart';
import 'package:cake_wallet/themes/theme_classes/dark_theme.dart';
import 'package:cake_wallet/themes/theme_classes/light_theme.dart';
+import 'package:cake_wallet/themes/theme_classes/black_theme.dart';
class ThemeList {
static final all = [
darkTheme,
lightTheme,
+ blackThemeCakePrimary,
+ blackThemeBCHGreen,
+ blackThemeBitcoinYellow,
+ blackThemeMoneroOrange,
+ blackThemeTronRed,
+ blackThemeFrostingPurple,
];
static final lightTheme = LightTheme();
static final darkTheme = DarkTheme();
+ static final blackThemeCakePrimary = BlackTheme(BlackThemeAccentColor.cakePrimary);
+ static final blackThemeCakePrimaryOled = BlackTheme(
+ BlackThemeAccentColor.cakePrimary,
+ isOled: true,
+ );
+
+ static final blackThemeBitcoinYellow = BlackTheme(BlackThemeAccentColor.bitcoinYellow);
+ static final blackThemeBitcoinYellowOled = BlackTheme(
+ BlackThemeAccentColor.bitcoinYellow,
+ isOled: true,
+ );
+
+ static final blackThemeMoneroOrange = BlackTheme(BlackThemeAccentColor.moneroOrange);
+ static final blackThemeMoneroOrangeOled = BlackTheme(
+ BlackThemeAccentColor.moneroOrange,
+ isOled: true,
+ );
+
+ static final blackThemeBCHGreen = BlackTheme(BlackThemeAccentColor.bchGreen);
+ static final blackThemeBCHGreenOled = BlackTheme(
+ BlackThemeAccentColor.bchGreen,
+ isOled: true,
+ );
+
+ static final blackThemeTronRed = BlackTheme(BlackThemeAccentColor.tronRed);
+ static final blackThemeTronRedOled = BlackTheme(
+ BlackThemeAccentColor.tronRed,
+ isOled: true,
+ );
+
+ static final blackThemeFrostingPurple = BlackTheme(BlackThemeAccentColor.frostingPurple);
+ static final blackThemeFrostingPurpleOled = BlackTheme(
+ BlackThemeAccentColor.frostingPurple,
+ isOled: true,
+ );
+
static MaterialThemeBase deserialize({required int raw}) {
switch (raw) {
case 0:
@@ -26,8 +69,33 @@ class ThemeList {
case 6:
case 8:
case 9:
- default:
return darkTheme;
+ case 12:
+ return blackThemeCakePrimary;
+ case 13:
+ return blackThemeBCHGreen;
+ case 14:
+ return blackThemeBitcoinYellow;
+ case 15:
+ return blackThemeMoneroOrange;
+ case 16:
+ return blackThemeTronRed;
+ case 17:
+ return blackThemeFrostingPurple;
+ case 112:
+ return blackThemeCakePrimaryOled;
+ case 113:
+ return blackThemeBCHGreenOled;
+ case 114:
+ return blackThemeBitcoinYellowOled;
+ case 115:
+ return blackThemeMoneroOrangeOled;
+ case 116:
+ return blackThemeTronRedOled;
+ case 117:
+ return blackThemeFrostingPurpleOled;
+ default:
+ return blackThemeCakePrimary;
}
}
}
diff --git a/lib/themes/utils/theme_provider.dart b/lib/themes/utils/theme_provider.dart
index 89cf05d85..58a66e235 100644
--- a/lib/themes/utils/theme_provider.dart
+++ b/lib/themes/utils/theme_provider.dart
@@ -1,5 +1,6 @@
import 'package:cake_wallet/themes/core/theme_store.dart';
import 'package:cake_wallet/themes/utils/theme_list.dart';
+import 'package:cake_wallet/themes/theme_classes/black_theme.dart';
import 'package:flutter/material.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
@@ -19,10 +20,16 @@ class ThemeProvider extends StatelessWidget {
Widget build(BuildContext context) {
return Observer(
builder: (_) {
- final theme = themeStore.currentTheme.themeData;
- final darkTheme = ThemeList.darkTheme.themeData;
+ final currentTheme = themeStore.currentTheme;
+ final theme = currentTheme.themeData;
final themeMode = themeStore.themeMode;
+ final isCustomTheme = ThemeList.all.contains(currentTheme) || currentTheme is BlackTheme;
+ if (isCustomTheme) {
+ return materialAppBuilder(context, theme, theme, themeMode);
+ }
+
+ final darkTheme = ThemeList.darkTheme.themeData;
return materialAppBuilder(context, theme, darkTheme, themeMode);
},
);
diff --git a/lib/view_model/buy/buy_sell_view_model.dart b/lib/view_model/buy/buy_sell_view_model.dart
index 1874fe39e..601fca524 100644
--- a/lib/view_model/buy/buy_sell_view_model.dart
+++ b/lib/view_model/buy/buy_sell_view_model.dart
@@ -78,8 +78,6 @@ abstract class BuySellViewModelBase extends WalletChangeListenerViewModel with S
cryptoCurrency = wallet.currency;
}
- bool get isDarkTheme => _appStore.themeStore.currentTheme.isDark;
-
double get amount {
final formattedFiatAmount = double.tryParse(fiatAmount) ?? 200.0;
final formattedCryptoAmount =
diff --git a/lib/view_model/exchange/exchange_view_model.dart b/lib/view_model/exchange/exchange_view_model.dart
index aa18d877a..390a0bec4 100644
--- a/lib/view_model/exchange/exchange_view_model.dart
+++ b/lib/view_model/exchange/exchange_view_model.dart
@@ -549,7 +549,7 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
if (result[i] != 0) {
/// add this provider as its valid for this trade
try {
- newSortedProviders[result[i]] = _providers[i];
+ newSortedProviders[result[i]] = _providers[i];
} catch (e) {
// will throw "Concurrent modification during iteration" error if modified at the same
// time [createTrade] is called, as this is not a normal map, but a sorted map
diff --git a/lib/view_model/settings/display_settings_view_model.dart b/lib/view_model/settings/display_settings_view_model.dart
index c3c420902..02500083a 100644
--- a/lib/view_model/settings/display_settings_view_model.dart
+++ b/lib/view_model/settings/display_settings_view_model.dart
@@ -3,6 +3,8 @@ import 'package:cake_wallet/entities/fiat_currency.dart';
import 'package:cake_wallet/entities/sync_status_display_mode.dart';
import 'package:cake_wallet/store/settings_store.dart';
import 'package:cake_wallet/themes/core/material_base_theme.dart';
+import 'package:cake_wallet/themes/theme_classes/black_theme.dart';
+import 'package:cake_wallet/themes/utils/theme_list.dart';
import 'package:mobx/mobx.dart';
import 'package:cake_wallet/entities/fiat_api_mode.dart';
import 'package:cake_wallet/themes/core/theme_store.dart';
@@ -34,11 +36,14 @@ abstract class DisplaySettingsViewModelBase with Store {
bool get shouldShowMarketPlaceInDashboard => _settingsStore.shouldShowMarketPlaceInDashboard;
@computed
- ThemeData get theme => _themeStore.currentTheme.themeData;
+ MaterialThemeBase get currentTheme => _themeStore.currentTheme;
@computed
ThemeMode get themeMode => _themeStore.themeMode;
+ @computed
+ bool get isBlackThemeOledEnabled => _themeStore.currentTheme is BlackTheme && _themeStore.isOled;
+
@computed
bool get disabledFiatApiMode => _settingsStore.fiatApiMode == FiatApiMode.disabled;
@@ -51,6 +56,50 @@ abstract class DisplaySettingsViewModelBase with Store {
@computed
String get backgroundImage => _settingsStore.backgroundImage;
+ @computed
+ List get availableThemes {
+ List themes;
+ switch (themeMode) {
+ case ThemeMode.light:
+ themes = ThemeList.all.where((theme) => theme.brightness == Brightness.light).toList();
+ break;
+ case ThemeMode.dark:
+ themes = ThemeList.all.where((theme) => theme.brightness == Brightness.dark).toList();
+ break;
+ case ThemeMode.system:
+ final systemBrightness = WidgetsBinding.instance.platformDispatcher.platformBrightness;
+ themes = ThemeList.all.where((theme) => theme.brightness == systemBrightness).toList();
+ break;
+ }
+
+ List groupedThemes = [];
+ Set addedThemeFamilies = {};
+
+ for (final theme in themes) {
+ if (theme.hasAccentColors) {
+ final family = theme.themeFamily!;
+ if (!addedThemeFamilies.contains(family)) {
+ groupedThemes.add(theme);
+ addedThemeFamilies.add(family);
+ }
+ } else {
+ groupedThemes.add(theme);
+ }
+ }
+
+ return groupedThemes;
+ }
+
+ @computed
+ List get availableAccentColors {
+ if (!currentTheme.hasAccentColors) return [];
+
+ if (currentTheme.themeFamily == 'BlackTheme') {
+ return BlackThemeAccentColor.values;
+ }
+ return [];
+ }
+
@action
void setBalanceDisplayMode(BalanceDisplayMode value) => _settingsStore.balanceDisplayMode = value;
@@ -70,8 +119,52 @@ abstract class DisplaySettingsViewModelBase with Store {
@action
Future onThemeSelected(MaterialThemeBase newTheme) async {
+ if (newTheme is BlackTheme && _themeStore.isOled) {
+ await setTheme(BlackTheme(newTheme.accentColor, isOled: true));
+ return;
+ }
await setTheme(newTheme);
- await setThemeMode(newTheme.themeMode);
+ }
+
+ @action
+ Future onAccentColorSelected(String accentColorId) async {
+ if (!currentTheme.hasAccentColors) return;
+
+ try {
+ final newTheme = ThemeList.all.firstWhere(
+ (theme) =>
+ theme.hasAccentColors &&
+ theme.themeFamily == currentTheme.themeFamily &&
+ theme.accentColorId == accentColorId,
+ );
+
+ if (newTheme != currentTheme) {
+ if (newTheme is BlackTheme && _themeStore.isOled) {
+ await onThemeSelected(BlackTheme(newTheme.accentColor, isOled: true));
+ } else {
+ await onThemeSelected(newTheme);
+ }
+ }
+ } catch (_) {}
+ }
+
+ @action
+ Future setBlackThemeOled(bool value) async {
+ if (_themeStore.currentTheme is BlackTheme) {
+ await _themeStore.setOledEnabled(value);
+ }
+ }
+
+ bool isThemeSelected(MaterialThemeBase theme) {
+ if (!theme.hasAccentColors) return currentTheme == theme;
+
+ return currentTheme.hasAccentColors && currentTheme.themeFamily == theme.themeFamily;
+ }
+
+ bool isAccentColorSelected(String accentColorId) {
+ if (!currentTheme.hasAccentColors) return false;
+
+ return currentTheme.accentColorId == accentColorId;
}
@action
@@ -79,9 +172,35 @@ abstract class DisplaySettingsViewModelBase with Store {
await _themeStore.setTheme(newTheme);
}
+ MaterialThemeBase? getFirstMatchingTheme(ThemeMode mode) {
+ List themes;
+ switch (mode) {
+ case ThemeMode.light:
+ themes = ThemeList.all.where((theme) => theme.brightness == Brightness.light).toList();
+ break;
+ case ThemeMode.dark:
+ themes = ThemeList.all.where((theme) => theme.brightness == Brightness.dark).toList();
+ break;
+ case ThemeMode.system:
+ final systemBrightness = WidgetsBinding.instance.platformDispatcher.platformBrightness;
+ themes = ThemeList.all.where((theme) => theme.brightness == systemBrightness).toList();
+ break;
+ }
+
+ return themes.isNotEmpty ? themes.first : null;
+ }
+
@action
Future setThemeMode(ThemeMode value) async {
await _themeStore.setThemeMode(value);
+ // We won't override the saved custom theme when switching to system mode.
+ // We'll just let the ThemeStore resolve it based on system brightness and saved theme.
+ if (value != ThemeMode.system) {
+ final matchingTheme = getFirstMatchingTheme(value);
+ if (matchingTheme != null) {
+ await setTheme(matchingTheme);
+ }
+ }
}
@action
@@ -101,4 +220,22 @@ abstract class DisplaySettingsViewModelBase with Store {
@action
void setBackgroundImage(String path) => _settingsStore.backgroundImage = path;
+
+ String getImageForTheme(MaterialThemeBase theme) {
+ switch (theme.title) {
+ case 'Dark Theme':
+ return 'assets/images/dark.svg';
+ case 'Light Theme':
+ return 'assets/images/light.svg';
+ case 'Black Theme (Cake Primary)':
+ case 'Black Theme (BCH Green)':
+ case 'Black Theme (Bitcoin Yellow)':
+ case 'Black Theme (Monero Orange)':
+ case 'Black Theme (Tron Red)':
+ case 'Black Theme (Frosting Purple)':
+ return 'assets/images/black_accent.svg';
+ default:
+ return 'assets/images/dark.svg';
+ }
+ }
}
diff --git a/pubspec_base.yaml b/pubspec_base.yaml
index 5a6072b4a..eef7039e6 100644
--- a/pubspec_base.yaml
+++ b/pubspec_base.yaml
@@ -105,7 +105,7 @@ dependencies:
git:
url: https://github.com/LacticWhale/socks_dart
ref: 27ad7c2efae8d7460325c74b90f660085cbd0685
- flutter_svg: ^2.0.9
+ flutter_svg: ^2.2.0
polyseed: ^0.0.7
nostr_tools:
git:
@@ -215,6 +215,7 @@ flutter:
- assets/images/
- assets/images/flags/
- assets/images/hardware_wallet/
+ - assets/images/crypto/
- assets/node_list.yml
- assets/haven_node_list.yml
- assets/bitcoin_electrum_server_list.yml
diff --git a/res/values/strings_ar.arb b/res/values/strings_ar.arb
index bf05dc594..f4c102c00 100644
--- a/res/values/strings_ar.arb
+++ b/res/values/strings_ar.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "يتيح لك Cake Pay شراء بطاقات هدايا بأصول افتراضية بسهولة ، ويمكن إنفاقها على الفور لدى أكثر من 150,000 تاجر في الولايات المتحدة.",
+ "accent_color": "لون لهجة",
"account": "حساب",
"accounts": "حسابتي",
"accounts_subaddresses": "الحسابات والعناوين الفرعية",
@@ -55,6 +56,7 @@
"and": "و",
"anonpay_description": "توليد ${type}. يمكن للمستلم ${method} بأي عملة مشفرة مدعومة ، وستتلقى أموالاً في هذه",
"apk_update": "تحديث APK",
+ "appearance": "مظهر",
"approve": "ﺪﻤﺘﻌﻳ",
"approve_request": "الموافقة على الطلب",
"approve_tokens": "الموافقة على الرموز",
@@ -568,6 +570,7 @@
"offline": "غير متصل على الانترنت",
"ok": "حسناً",
"old_fee": "الرسوم القديمة",
+ "oled_mode": "وضع OLED",
"onion_link": "رابط البصل",
"online": "متصل",
"onramper_option_description": "شراء بسرعة التشفير مع العديد من طرق الدفع. متوفر في معظم البلدان. ينتشر وتختلف الرسوم.",
@@ -1149,4 +1152,4 @@
"youCanGoBackToYourDapp": "يمكنك العودة إلى DAPP الخاص بك الآن",
"your": "لك",
"yy": "YY"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_bg.arb b/res/values/strings_bg.arb
index b42f18a8f..0fb5c6db6 100644
--- a/res/values/strings_bg.arb
+++ b/res/values/strings_bg.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake Pay Ви позволява лесно да купувате предплатени карти, които веднага могат да се използват с над 150,000 търговци на територията на САЩ.",
+ "accent_color": "Цвят на акцент",
"account": "Профил",
"accounts": "Профили",
"accounts_subaddresses": "Профили и подадреси",
@@ -55,6 +56,7 @@
"and": "и",
"anonpay_description": "Генерирайте ${type}. Получателят може да ${method} с всяка поддържана криптовалута и вие ще получите средства в този портфейл.",
"apk_update": "APK ъпдейт",
+ "appearance": "Външен вид",
"approve": "Одобряване",
"approve_request": "Одобрете искане",
"approve_tokens": "Одобрете жетоните",
@@ -568,6 +570,7 @@
"offline": "Офлайн",
"ok": "Ок",
"old_fee": "Стара такса",
+ "oled_mode": "OLED режим",
"onion_link": "Лукова връзка",
"online": "Онлайн",
"onramper_option_description": "Бързо купувайте криптовалута с много методи за плащане. Предлага се в повечето страни. Разпространенията и таксите варират.",
@@ -1149,4 +1152,4 @@
"youCanGoBackToYourDapp": "Можете да се върнете при вашия Dapp сега",
"your": "Вашия",
"yy": "гг"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_cs.arb b/res/values/strings_cs.arb
index 996d23c87..334c2a85d 100644
--- a/res/values/strings_cs.arb
+++ b/res/values/strings_cs.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake Pay umožňuje jednoduše nakupovat dárkové karty pomocí virtuálních prostředků, které lze okamžitě uplatnit u více než 150 000 obchodníků ve Spojených státech.",
+ "accent_color": "Accent Color",
"account": "Účet",
"accounts": "Účty",
"accounts_subaddresses": "Účty a subadresy",
@@ -55,6 +56,7 @@
"and": "a",
"anonpay_description": "Vygenerujte ${type}. Příjemce může ${method} s jakoukoli podporovanou kryptoměnou a vy obdržíte prostředky v této peněžence.",
"apk_update": "aktualizace APK",
+ "appearance": "Vzhled",
"approve": "Schvalovat",
"approve_request": "Schválit žádost",
"approve_tokens": "Schválit tokeny",
@@ -568,6 +570,7 @@
"offline": "Offline",
"ok": "OK",
"old_fee": "Starý poplatek",
+ "oled_mode": "OLED režim",
"onion_link": "Cibulový odkaz",
"online": "Online",
"onramper_option_description": "Rychle si koupte krypto s mnoha metodami plateb. K dispozici ve většině zemí. Rozpětí a poplatky se liší.",
@@ -1149,4 +1152,4 @@
"youCanGoBackToYourDapp": "Nyní se můžete vrátit do svého dappu",
"your": "Vaše",
"yy": "YY"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb
index f7f3b6368..eb590b216 100644
--- a/res/values/strings_de.arb
+++ b/res/values/strings_de.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Mit Cake Pay können Sie ganz einfach Geschenkkarten mit virtuellen Vermögenswerten kaufen, die Sie sofort bei über 150.000 Händlern in den Vereinigten Staaten ausgeben können.",
+ "accent_color": "Akzentfarbe",
"account": "Konto",
"accounts": "Konten",
"accounts_subaddresses": "Konten und Unteradressen",
@@ -55,6 +56,7 @@
"and": "Und",
"anonpay_description": "Generieren Sie ${type}. Der Empfänger kann ${method} mit jeder unterstützten Kryptowährung verwenden, und Sie erhalten Geld in dieser Wallet.",
"apk_update": "APK-Update",
+ "appearance": "Aussehen",
"approve": "Genehmigen",
"approve_request": "Anfrage genehmigen",
"approve_tokens": "Token genehmigen",
@@ -568,6 +570,7 @@
"offline": "offline",
"ok": "OK",
"old_fee": "Alte Gebühr",
+ "oled_mode": "OLED -Modus",
"onion_link": "Onion-Link",
"online": "online",
"onramper_option_description": "Kaufen Sie schnell Krypto mit vielen Zahlungsmethoden. In den meisten Ländern erhältlich. Spreads und Gebühren variieren.",
@@ -1152,4 +1155,4 @@
"youCanGoBackToYourDapp": "Sie können jetzt zu Ihrem Dapp zurückkehren",
"your": "Dein",
"yy": "YY"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb
index 135214db8..2848ce61e 100644
--- a/res/values/strings_en.arb
+++ b/res/values/strings_en.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake Pay allows you to easily buy gift cards with virtual assets, spendable instantly at over 150,000 merchants in the United States.",
+ "accent_color": "Accent color",
"account": "Account",
"accounts": "Accounts",
"accounts_subaddresses": "Accounts and subaddresses",
@@ -55,6 +56,7 @@
"and": "and",
"anonpay_description": "Generate ${type}. The recipient can ${method} with any supported cryptocurrency, and you will receive funds in this wallet.",
"apk_update": "APK update",
+ "appearance": "Appearance",
"approve": "Approve",
"approve_request": "Approve Request",
"approve_tokens": "Approve tokens",
@@ -568,6 +570,7 @@
"offline": "Offline",
"ok": "OK",
"old_fee": "Old fee",
+ "oled_mode": "OLED mode",
"onion_link": "Onion link",
"online": "Online",
"onramper_option_description": "Quickly buy crypto with many payment methods. Available in most countries. Spreads and fees vary.",
@@ -1150,4 +1153,4 @@
"youCanGoBackToYourDapp": "You can go back to your dApp now",
"your": "Your",
"yy": "YY"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb
index 31cd806b8..834c849f1 100644
--- a/res/values/strings_es.arb
+++ b/res/values/strings_es.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake Pay te permite comprar fácilmente tarjetas de regalo con activos virtuales, gastables instantáneamente en más de 150,000 comerciantes en los Estados Unidos.",
+ "accent_color": "Color acento",
"account": "Cuenta",
"accounts": "Cuentas",
"accounts_subaddresses": "Cuentas y subdirecciones",
@@ -55,6 +56,7 @@
"and": "y",
"anonpay_description": "Genera ${type}. El destinatario puede ${method} con cualquier criptomoneda admitida, y recibirá fondos en esta billetera.",
"apk_update": "Actualización de APK",
+ "appearance": "Apariencia",
"approve": "Aprobar",
"approve_request": "Aprobar la solicitud",
"approve_tokens": "Aprobar tokens",
@@ -568,6 +570,7 @@
"offline": "fuera de línea",
"ok": "OK",
"old_fee": "Tarifa antigua",
+ "oled_mode": "Modo OLED",
"onion_link": "Enlace de cebolla (Tor)",
"online": "En línea",
"onramper_option_description": "Compra rápidamente cripto con muchos métodos de pago. Disponible en la mayoría de los países. Los diferenciales y las tarifas varían.",
@@ -1151,4 +1154,4 @@
"youCanGoBackToYourDapp": "Puedes volver a tu dapp ahora",
"your": "Su",
"yy": "YY"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_fr.arb b/res/values/strings_fr.arb
index 6cdfb8502..c1f54b363 100644
--- a/res/values/strings_fr.arb
+++ b/res/values/strings_fr.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake Pay vous permet d'acheter facilement des cartes-cadeaux avec des actifs virtuels, utilisables instantanément chez plus de 150 000 marchands aux États-Unis.",
+ "accent_color": "Couleur accent",
"account": "Compte",
"accounts": "Comptes",
"accounts_subaddresses": "Comptes et sous-adresses",
@@ -55,6 +56,7 @@
"and": "et",
"anonpay_description": "Générez ${type}. Le destinataire peut ${method} avec n'importe quelle crypto-monnaie prise en charge, et vous recevrez des fonds dans ce portefeuille (wallet).",
"apk_update": "Mise à jour de l'APK",
+ "appearance": "Apparence",
"approve": "Approuver",
"approve_request": "Approuver la demande",
"approve_tokens": "Approuver les jetons",
@@ -568,6 +570,7 @@
"offline": "Hors ligne",
"ok": "OK",
"old_fee": "Anciens",
+ "oled_mode": "Mode OLED",
"onion_link": "Lien .onion",
"online": "En ligne",
"onramper_option_description": "Achetez rapidement des cryptomonnaies avec de nombreuses méthodes de paiement. Disponible dans la plupart des pays. Les spreads et les frais peuvent varier.",
@@ -1149,4 +1152,4 @@
"youCanGoBackToYourDapp": "Vous pouvez retourner à votre Dapp maintenant",
"your": "Ton",
"yy": "AA"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_ha.arb b/res/values/strings_ha.arb
index a492d4923..e9069a429 100644
--- a/res/values/strings_ha.arb
+++ b/res/values/strings_ha.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Biyan Cake yana ba ku damar sauƙin siyan katunan kyauta tare da kadarorin kama-da-wane, wanda za'a iya kashewa nan take a sama da yan kasuwa 150,000 a Amurka.",
+ "accent_color": "Launi mai launi",
"account": "Asusu",
"accounts": "Lissafi",
"accounts_subaddresses": "Accounts da subaddresses",
@@ -55,6 +56,7 @@
"and": "kuma",
"anonpay_description": "Ƙirƙirar ${type}. Maƙiyantun mai nasara zai iya ${method} da duk abubuwan da ke samun lambar waya, kuma zaku samu kuɗin dama a wannan kashi.",
"apk_update": "apk sabunta",
+ "appearance": "Bayyanawa",
"approve": "Amincewa",
"approve_request": "Amince da bukata",
"approve_tokens": "Amince da Alamu",
@@ -568,6 +570,7 @@
"offline": "Offline",
"ok": "OK",
"old_fee": "Tsohon kudin",
+ "oled_mode": "Yanayin Oled",
"onion_link": "Lambar onion",
"online": "Kan layi",
"onramper_option_description": "Da sauri sayi Crypto tare da hanyoyin biyan kuɗi da yawa. Akwai a yawancin ƙasashe. Yaduwa da kudade sun bambanta.",
@@ -1152,4 +1155,4 @@
"youCanGoBackToYourDapp": "Kuna iya komawa zuwa DPP ɗinku yanzu",
"your": "Naku",
"yy": "YY"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb
index 5a94c1fe5..0515899e0 100644
--- a/res/values/strings_hi.arb
+++ b/res/values/strings_hi.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "केक पे आपको वर्चुअल संपत्ति के साथ आसानी से उपहार कार्ड खरीदने की अनुमति देता है, जिसे संयुक्त राज्य में 150,000 से अधिक व्यापारियों पर तुरंत खर्च किया जा सकता है।",
+ "accent_color": "उच्चारण रंग",
"account": "लेखा",
"accounts": "हिसाब किताब",
"accounts_subaddresses": "लेखा और उपदेस",
@@ -55,6 +56,7 @@
"and": "और",
"anonpay_description": "${type} उत्पन्न करें। प्राप्तकर्ता किसी भी समर्थित क्रिप्टोकरेंसी के साथ ${method} कर सकता है, और आपको इस वॉलेट में धन प्राप्त होगा।",
"apk_update": "APK अद्यतन",
+ "appearance": "उपस्थिति",
"approve": "मंज़ूरी देना",
"approve_request": "अनुरोध को स्वीकृत करें",
"approve_tokens": "टोकन को मंजूरी देना",
@@ -568,6 +570,7 @@
"offline": "ऑफ़लाइन",
"ok": "ठीक है",
"old_fee": "पुराना फीस",
+ "oled_mode": "OLED मोड",
"onion_link": "प्याज का लिंक",
"online": "ऑनलाइन",
"onramper_option_description": "जल्दी से कई भुगतान विधियों के साथ क्रिप्टो खरीदें। अधिकांश देशों में उपलब्ध है। फैलता है और फीस अलग -अलग होती है।",
@@ -1151,4 +1154,4 @@
"youCanGoBackToYourDapp": "अब आप अपने DAPP पर वापस जा सकते हैं",
"your": "आपका",
"yy": "वाईवाई"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_hr.arb b/res/values/strings_hr.arb
index d3db2ade7..b65dd079f 100644
--- a/res/values/strings_hr.arb
+++ b/res/values/strings_hr.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake Pay vam omogućuje jednostavnu kupnju darovnih kartica s virtualnim sredstvima, koja se trenutno mogu potrošiti kod više od 150 000 trgovaca u Sjedinjenim Državama.",
+ "accent_color": "Naglašena boja",
"account": "Račun",
"accounts": "Računi",
"accounts_subaddresses": "Računi i podadrese",
@@ -55,6 +56,7 @@
"and": "i",
"anonpay_description": "Generiraj ${type}. Primatelj može ${method} s bilo kojom podržanom kriptovalutom, a vi ćete primiti sredstva u ovaj novčanik.",
"apk_update": "APK ažuriranje",
+ "appearance": "Izgled",
"approve": "Odobriti",
"approve_request": "Odobriti zahtjev",
"approve_tokens": "Odobriti tokene",
@@ -568,6 +570,7 @@
"offline": "izvan mreže",
"ok": "OK",
"old_fee": "Stara naknada",
+ "oled_mode": "OLED način",
"onion_link": "Poveznica luka",
"online": "Na mreži",
"onramper_option_description": "Brzo kupite kriptovalute s mnogim načinima plaćanja. Dostupno u većini zemalja. Širenja i naknade variraju.",
@@ -1149,4 +1152,4 @@
"youCanGoBackToYourDapp": "Sada se možete vratiti na svoj dapp",
"your": "Vaš",
"yy": "GG"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_hy.arb b/res/values/strings_hy.arb
index 577fe0b32..12fec6eca 100644
--- a/res/values/strings_hy.arb
+++ b/res/values/strings_hy.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake Pay-ը Ձեզ թույլ է տալիս հեշտությամբ գնել նվեր քարտեր վիրտուալ ակտիվներով, որոնք անմիջապես ծախսվում են ԱՄՆ-ի 150,000-ից ավելի առևտրականների մոտ:",
+ "accent_color": "Շեշտադրիչ գույն",
"account": "Հաշիվ",
"accounts": "Հաշիվներ",
"accounts_subaddresses": "Հաշիվներ և ենթահասցեներ",
@@ -55,6 +56,7 @@
"and": "և",
"anonpay_description": "${type} ստեղծել: Ստացողը կարող է ${method} ցանկացած աջակցվող կրիպտոարժույթով, և դուք կստանաք միջոցներ այս դրամապանակում։",
"apk_update": "APK թարմացում",
+ "appearance": "Արտաքին տեսք",
"approve": "Հաստատել",
"approve_request": "Հաստատում է հայցը",
"approve_tokens": "Հաստատում է նշանները",
@@ -567,6 +569,7 @@
"offline": "Անցանց",
"ok": "Լավ",
"old_fee": "Հին վճար",
+ "oled_mode": "OLED ռեժիմ",
"onion_link": "Onion հղում",
"online": "Առցանց",
"onramper_option_description": "Արագ գնեք կրիպտոցուլեր շատ վճարման մեթոդներով։ Հասանելի է մեծ մասամբ երկրներում։ Տարածված և վճարները փոփոխվում են",
@@ -1147,4 +1150,4 @@
"youCanGoBackToYourDapp": "Այժմ կարող եք վերադառնալ ձեր DAPP- ին",
"your": "Քո",
"yy": "ՏՏ"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_id.arb b/res/values/strings_id.arb
index 7165a49e4..6cc51528a 100644
--- a/res/values/strings_id.arb
+++ b/res/values/strings_id.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake Pay memungkinkan Anda untuk dengan mudah membeli kartu hadiah dengan aset virtual, yang dapat digunakan segera di lebih dari 150.000 pedagang di Amerika Serikat.",
+ "accent_color": "Warna aksen",
"account": "Akun",
"accounts": "Akun",
"accounts_subaddresses": "Akun dan sub-alamat",
@@ -55,6 +56,7 @@
"and": "dan",
"anonpay_description": "Hasilkan ${type}. Penerima dapat ${method} dengan cryptocurrency apa pun yang didukung, dan Anda akan menerima dana di dompet ini.",
"apk_update": "Pembaruan APK",
+ "appearance": "Penampilan",
"approve": "Menyetujui",
"approve_request": "Menyetujui permintaan",
"approve_tokens": "Menyetujui token",
@@ -568,6 +570,7 @@
"offline": "Offline",
"ok": "OK",
"old_fee": "Biaya lama",
+ "oled_mode": "Mode OLED",
"onion_link": "Tautan bawang",
"online": "Online",
"onramper_option_description": "Beli crypto dengan cepat dengan banyak metode pembayaran. Tersedia di sebagian besar negara. Spread dan biaya bervariasi.",
@@ -1152,4 +1155,4 @@
"youCanGoBackToYourDapp": "Anda dapat kembali ke dapp Anda sekarang",
"your": "Milikmu",
"yy": "YY"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_it.arb b/res/values/strings_it.arb
index 40c88b2cf..9ceff0ccd 100644
--- a/res/values/strings_it.arb
+++ b/res/values/strings_it.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake Pay ti consente di acquistare facilmente buoni regalo con asset virtuali, spendibili istantaneamente presso oltre 150.000 commercianti negli Stati Uniti.",
+ "accent_color": "Colore accento",
"account": "Conto",
"accounts": "Conti",
"accounts_subaddresses": "Accounts e sottoindirizzi",
@@ -55,6 +56,7 @@
"and": "e",
"anonpay_description": "Genera ${type}. Il destinatario può ${method} con qualsiasi criptovaluta supportata, e riceverai fondi in questo portafoglio.",
"apk_update": "Aggiornamento APK",
+ "appearance": "Aspetto",
"approve": "Approvare",
"approve_request": "Approvare la richiesta",
"approve_tokens": "Approvare i token",
@@ -568,6 +570,7 @@
"offline": "Offline",
"ok": "OK",
"old_fee": "Vecchia commissione",
+ "oled_mode": "Modalità OLED",
"onion_link": "Link Onion",
"online": "in linea",
"onramper_option_description": "Acquista rapidamente la criptovaluta con molti metodi di pagamento. Disponibile nella maggior parte dei paesi. Gli spread e le commissioni variano.",
@@ -1152,4 +1155,4 @@
"youCanGoBackToYourDapp": "Puoi tornare al tuo DApp ora",
"your": "Tuo",
"yy": "YY"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb
index 55f4d4dae..7babd77bf 100644
--- a/res/values/strings_ja.arb
+++ b/res/values/strings_ja.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake Payを使用すると、仮想資産を含むギフトカードを簡単に購入でき、米国内の150,000を超える加盟店ですぐに利用できます。",
+ "accent_color": "アクセント色",
"account": "アカウント",
"accounts": "アカウント",
"accounts_subaddresses": "アカウントとサブアドレス",
@@ -55,6 +56,7 @@
"and": "と",
"anonpay_description": "${type} を生成します。受取人はサポートされている任意の暗号通貨で ${method} でき、あなたはこのウォレットで資金を受け取ります。",
"apk_update": "APKアップデート",
+ "appearance": "外観",
"approve": "承認する",
"approve_request": "リクエストを承認します",
"approve_tokens": "トークンを承認します",
@@ -569,6 +571,7 @@
"offline": "オフライン",
"ok": "OK",
"old_fee": "古い料金",
+ "oled_mode": "OLEDモード",
"onion_link": "オニオンリンク",
"online": "オンライン",
"onramper_option_description": "多くの支払い方法で暗号をすばやく購入してください。ほとんどの国で利用可能です。スプレッドと料金は異なります。",
@@ -1150,4 +1153,4 @@
"youCanGoBackToYourDapp": "あなたは今あなたのダップに戻ることができます",
"your": "あなたの",
"yy": "YY"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb
index fbfa21f2e..b7c00cd2c 100644
--- a/res/values/strings_ko.arb
+++ b/res/values/strings_ko.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake Pay를 사용하면 가상 자산으로 기프트 카드를 쉽게 구매하여 미국 내 150,000개 이상의 가맹점에서 즉시 사용할 수 있습니다.",
+ "accent_color": "악센트 색상",
"account": "계정",
"accounts": "계정",
"accounts_subaddresses": "계정 및 하위 주소",
@@ -55,6 +56,7 @@
"and": "및",
"anonpay_description": "${type} 생성. 수신자는 지원되는 모든 암호화폐로 ${method}할 수 있으며, 귀하는 이 지갑으로 자금을 받게 됩니다.",
"apk_update": "APK 업데이트",
+ "appearance": "모습",
"approve": "승인",
"approve_request": "요청 승인",
"approve_tokens": "토큰을 승인합니다",
@@ -568,6 +570,7 @@
"offline": "오프라인",
"ok": "확인",
"old_fee": "이전 수수료",
+ "oled_mode": "OLED 모드",
"onion_link": "Onion 링크",
"online": "온라인",
"onramper_option_description": "다양한 결제 방법으로 빠르게 암호화폐 구매. 대부분의 국가에서 사용 가능. 스프레드 및 수수료는 다양함.",
@@ -1150,4 +1153,4 @@
"youCanGoBackToYourDapp": "이제 dApp으로 돌아갈 수 있습니다",
"your": "당신의",
"yy": "YY"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_my.arb b/res/values/strings_my.arb
index a93c5c5df..4005cc362 100644
--- a/res/values/strings_my.arb
+++ b/res/values/strings_my.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake Pay သည် အမေရိကန်ပြည်ထောင်စုရှိ ကုန်သည် 150,000 ကျော်တွင် လက်ဆောင်ကတ်များကို လက်ဆောင်ကတ်များကို အလွယ်တကူ ဝယ်ယူနိုင်စေပါသည်။",
+ "accent_color": "အသံထွက်အရောင်",
"account": "အကောင့်",
"accounts": "အကောင့်များ",
"accounts_subaddresses": "အကောင့်များနှင့် လိပ်စာများ",
@@ -55,6 +56,7 @@
"and": "နှင့်",
"anonpay_description": "${type} ကို ဖန်တီးပါ။ လက်ခံသူက ${method} ကို ပံ့ပိုးပေးထားသည့် cryptocurrency တစ်ခုခုဖြင့် လုပ်ဆောင်နိုင်ပြီး၊ သင်သည် ဤပိုက်ဆံအိတ်တွင် ရံပုံငွေများ ရရှိမည်ဖြစ်သည်။",
"apk_update": "APK အပ်ဒိတ်",
+ "appearance": "ဖြစ်ပေါ်လာခြင်း",
"approve": "လက်မခံပါ။",
"approve_request": "တောင်းဆိုမှုကိုအတည်ပြု",
"approve_tokens": "တိုကင်အတည်ပြု",
@@ -568,6 +570,7 @@
"offline": "အော့ဖ်လိုင်း",
"ok": "ရလား",
"old_fee": "ကြေးဟောင်း",
+ "oled_mode": "OLED mode ကို",
"onion_link": "ကြက်သွန်လင့်",
"online": "အွန်လိုင်း",
"onramper_option_description": "ငွေပေးချေမှုနည်းလမ်းများစွာဖြင့် Crypto ကိုလျင်မြန်စွာ 0 ယ်ပါ။ နိုင်ငံအများစုတွင်ရရှိနိုင်ပါသည်။ ဖြန့်ဖြူးနှင့်အခကြေးငွေကွဲပြားခြားနားသည်။",
@@ -1149,4 +1152,4 @@
"youCanGoBackToYourDapp": "သငျသညျယခုသင်၏ dapp ကိုပြန်သွားနိုင်ပါတယ်",
"your": "ခင်ဗျားတို့၏",
"yy": "YY"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb
index 1322cbb02..df67a9447 100644
--- a/res/values/strings_nl.arb
+++ b/res/values/strings_nl.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Met Cake Pay kunt u eenvoudig cadeaubonnen kopen met virtuele activa, die direct kunnen worden uitgegeven bij meer dan 150.000 handelaren in de Verenigde Staten.",
+ "accent_color": "Accentkleur",
"account": "Account",
"accounts": "Accounts",
"accounts_subaddresses": "Accounts en subadressen",
@@ -55,6 +56,7 @@
"and": "en",
"anonpay_description": "Genereer ${type}. De ontvanger kan ${method} gebruiken met elke ondersteunde cryptocurrency en u ontvangt geld in deze portemonnee",
"apk_update": "APK-update",
+ "appearance": "Verschijning",
"approve": "Goedkeuren",
"approve_request": "Het verzoek goedkeuren",
"approve_tokens": "Tokens goedkeuren",
@@ -568,6 +570,7 @@
"offline": "Offline",
"ok": "OK",
"old_fee": "Oude vergoeding",
+ "oled_mode": "OLED -modus",
"onion_link": "Ui koppeling",
"online": "online",
"onramper_option_description": "Koop snel crypto met veel betaalmethoden. Beschikbaar in de meeste landen. Spreads en vergoedingen variëren.",
@@ -1150,4 +1153,4 @@
"youCanGoBackToYourDapp": "U kunt nu terug naar uw DApp gaan",
"your": "Jouw",
"yy": "JJ"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb
index ee6583af7..273cf14ac 100644
--- a/res/values/strings_pl.arb
+++ b/res/values/strings_pl.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake Pay umożliwia łatwe kupowanie kart podarunkowych z wirtualnymi saldami, które można natychmiast wydać u ponad 150 000 sprzedawców.",
+ "accent_color": "Kolor akcentu",
"account": "Konto",
"accounts": "Konta",
"accounts_subaddresses": "Konta i podadresy",
@@ -55,6 +56,7 @@
"and": "i",
"anonpay_description": "Wygeneruj ${type}. Odbiorca może ${method} z dowolną obsługiwaną kryptowalutą, a Ty otrzymasz środki w tym portfelu.",
"apk_update": "Aktualizacja APK",
+ "appearance": "Wygląd",
"approve": "Zatwierdzić",
"approve_request": "Zatwierdzić żądanie",
"approve_tokens": "Zatwierdzić tokeny",
@@ -568,6 +570,7 @@
"offline": "Offline",
"ok": "Ok",
"old_fee": "Stara opłata",
+ "oled_mode": "Tryb OLED",
"onion_link": "Link .onion",
"online": "online",
"onramper_option_description": "Szybko kup kryptowaluty z wieloma metodami płatności. Dostępne w większości krajów. Ceny i opłaty różnią się.",
@@ -1149,4 +1152,4 @@
"youCanGoBackToYourDapp": "Możesz teraz wrócić do swojego dapp",
"your": "Twój",
"yy": "RR"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb
index 1ce58e421..10eef448f 100644
--- a/res/values/strings_pt.arb
+++ b/res/values/strings_pt.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "O Cake Pay permite que você compre facilmente cartões-presente com ativos virtuais, que podem ser gastos instantaneamente em mais de 150.000 comerciantes nos Estados Unidos.",
+ "accent_color": "Cor de destaque",
"account": "Conta",
"accounts": "Contas",
"accounts_subaddresses": "Contas e sub-endereços",
@@ -55,6 +56,7 @@
"and": "e",
"anonpay_description": "Gere ${type}. O destinatário pode ${method} com qualquer criptomoeda suportada e você receberá fundos nesta carteira.",
"apk_update": "Atualização de APK",
+ "appearance": "Aparência",
"approve": "Aprovar",
"approve_request": "Aprovar solicitação",
"approve_tokens": "Aprovar tokens",
@@ -569,6 +571,7 @@
"offline": "offline",
"ok": "Ok",
"old_fee": "Taxa antiga",
+ "oled_mode": "Modo OLED",
"onion_link": "ligação de cebola",
"online": "Online",
"onramper_option_description": "Compre rapidamente criptografia com muitos métodos de pagamento. Disponível na maioria dos países. Os spreads e taxas variam.",
@@ -1152,4 +1155,4 @@
"youCanGoBackToYourDapp": "Você pode voltar para o seu dapp agora",
"your": "Seu",
"yy": "aa"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb
index 9ac6d852a..419da09bc 100644
--- a/res/values/strings_ru.arb
+++ b/res/values/strings_ru.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake Pay позволяет вам легко покупать подарочные карты с виртуальными активами, которые можно мгновенно потратить в более чем 150 000 продавцов в Соединенных Штатах.",
+ "accent_color": "Акцентный цвет",
"account": "Аккаунт",
"accounts": "Аккаунты",
"accounts_subaddresses": "Аккаунты и субадреса",
@@ -55,6 +56,7 @@
"and": "и",
"anonpay_description": "Создайте ${type}. Получатель может использовать ${method} с любой поддерживаемой криптовалютой, и вы получите средства на этот кошелек.",
"apk_update": "Обновление APK",
+ "appearance": "Появление",
"approve": "Утвердить",
"approve_request": "Утвердить запрос",
"approve_tokens": "Одобрить токены",
@@ -568,6 +570,7 @@
"offline": "Не в сети",
"ok": "OK",
"old_fee": "Старая плата",
+ "oled_mode": "OLED -режим",
"onion_link": "Луковая ссылка",
"online": "Онлайн",
"onramper_option_description": "Быстро купите крипто со многими способами оплаты. Доступно в большинстве стран. Спреды и сборы различаются.",
@@ -1150,4 +1153,4 @@
"youCanGoBackToYourDapp": "Вы можете вернуться к своему даппу сейчас",
"your": "Твой",
"yy": "ГГ"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_th.arb b/res/values/strings_th.arb
index 4c8a91681..d84e1694e 100644
--- a/res/values/strings_th.arb
+++ b/res/values/strings_th.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake Pay ช่วยให้คุณสามารถซื้อบัตรของขวัญง่ายๆ ด้วยการใช้สินทรัพย์อนุกรม ซื้อใช้ได้ทันทีกับมากกว่า 150,000 ร้านค้าในสหรัฐอเมริกา",
+ "accent_color": "สีเน้น",
"account": "บัญชี",
"accounts": "บัญชี",
"accounts_subaddresses": "บัญชีและที่อยู่ย่อย",
@@ -55,6 +56,7 @@
"and": "และ",
"anonpay_description": "สร้าง ${type} ผู้รับสามารถ ${method} ด้วยสกุลเงินดิจิทัลที่รองรับ และคุณจะได้รับเงินในกระเป๋าสตางค์นี้",
"apk_update": "ปรับปรุง APK",
+ "appearance": "รูปร่าง",
"approve": "อนุมัติ",
"approve_request": "อนุมัติคำขอ",
"approve_tokens": "อนุมัติโทเค็น",
@@ -568,6 +570,7 @@
"offline": "ออฟไลน์",
"ok": "ตกลง",
"old_fee": "ค่าธรรมเนียมเก่า",
+ "oled_mode": "โหมด OLED",
"onion_link": "ลิงค์หัวหอม",
"online": "ออนไลน์",
"onramper_option_description": "ซื้อ crypto อย่างรวดเร็วด้วยวิธีการชำระเงินจำนวนมาก มีให้บริการในประเทศส่วนใหญ่ สเปรดและค่าธรรมเนียมแตกต่างกันไป",
@@ -1149,4 +1152,4 @@
"youCanGoBackToYourDapp": "คุณสามารถกลับไปที่ dapp ของคุณได้ทันที",
"your": "ของคุณ",
"yy": "ปี"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_tl.arb b/res/values/strings_tl.arb
index fc7a1a841..0c597a8d3 100644
--- a/res/values/strings_tl.arb
+++ b/res/values/strings_tl.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Binibigyan-daan ka ng Cake Pay na madaling makabili ng mga gift card na may mga virtual na asset na magagastos kaagad sa mahigit na 150,000 merchant sa United States.",
+ "accent_color": "Kulay ng accent",
"account": "Account",
"accounts": "Mga Account",
"accounts_subaddresses": "Mga account at mga subaddress",
@@ -55,6 +56,7 @@
"and": "at",
"anonpay_description": "Bumuo ng ${type}. Ang tatanggap ay maaaring ${method} na may anumang suportadong cryptocurrency, at makakatanggap ka ng mga pondo sa wallet na ito.",
"apk_update": "APK update",
+ "appearance": "Hitsura",
"approve": "Aprubahan",
"approve_request": "Aprubahan ang kahilingan",
"approve_tokens": "Aprubahan ang mga token",
@@ -568,6 +570,7 @@
"offline": "Offline",
"ok": "OK",
"old_fee": "Dating fee",
+ "oled_mode": "OLED mode",
"onion_link": "Onion link",
"online": "Online",
"onramper_option_description": "Mabilis na bumili ng crypto na may maraming paraan ng pagbabayad. Available sa karamihan ng mga bansa. Iba-iba ang mga spread at fee.",
@@ -1149,4 +1152,4 @@
"youCanGoBackToYourDapp": "Maaari kang bumalik sa iyong dapp ngayon",
"your": "IYONG",
"yy": "YY"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_tr.arb b/res/values/strings_tr.arb
index e18e00379..1ab66df71 100644
--- a/res/values/strings_tr.arb
+++ b/res/values/strings_tr.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake Pay, Amerika Birleşik Devletleri'ndeki 150.000'den fazla işyerinde anında harcanabilen sanal varlıklarla kolayca hediye kartları satın almanızı sağlar.",
+ "accent_color": "Aksan rengi",
"account": "Hesap",
"accounts": "Hesaplar",
"accounts_subaddresses": "Hesaplar ve alt adresler",
@@ -55,6 +56,7 @@
"and": "ve",
"anonpay_description": "${type} oluşturun. Alıcı, desteklenen herhangi bir kripto para birimi ile ${method} yapabilir ve bu cüzdanda para alırsınız.",
"apk_update": "APK güncellemesi",
+ "appearance": "Dış görünüş",
"approve": "Onaylamak",
"approve_request": "Talebi Onaylama",
"approve_tokens": "Jetonları onaylayın",
@@ -568,6 +570,7 @@
"offline": "Çevrimdışı",
"ok": "Tamam",
"old_fee": "Eski ücret",
+ "oled_mode": "OLED modu",
"onion_link": "soğan bağlantısı",
"online": "Çevrimiçi",
"onramper_option_description": "Birçok ödeme yöntemi ile hızlı bir şekilde kripto satın alın. Çoğu ülkede mevcuttur. Forma ve ücretler değişir.",
@@ -1149,4 +1152,4 @@
"youCanGoBackToYourDapp": "Şimdi Dapp'ınıza geri dönebilirsin",
"your": "Senin",
"yy": "YY"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb
index 620a036fc..00477eef1 100644
--- a/res/values/strings_uk.arb
+++ b/res/values/strings_uk.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake Pay дозволяє вам легко купувати подарункові картки з віртуальними активами, які можна миттєво витратити в понад 150 000 продавців у Сполучених Штатах.",
+ "accent_color": "Акцентний колір",
"account": "Акаунт",
"accounts": "Акаунти",
"accounts_subaddresses": "Акаунти та субадреси",
@@ -55,6 +56,7 @@
"and": "і",
"anonpay_description": "Згенерувати ${type}. Одержувач може ${method} будь-якою підтримуваною криптовалютою, і ви отримаєте кошти на цей гаманець.",
"apk_update": "Оновлення APK",
+ "appearance": "Зовнішність",
"approve": "Затвердити",
"approve_request": "Запитайте запит",
"approve_tokens": "Затвердити токени",
@@ -568,6 +570,7 @@
"offline": "Офлайн",
"ok": "OK",
"old_fee": "Стара комісія",
+ "oled_mode": "ОЛЕД -режим",
"onion_link": "Посилання на цибулю",
"online": "Онлайн",
"onramper_option_description": "Швидко купуйте криптовалюту з багатьма методами оплати. Доступний у більшості країн. Поширення та збори різняться.",
@@ -1150,4 +1153,4 @@
"youCanGoBackToYourDapp": "Ви можете повернутися до свого DAPP зараз",
"your": "Ваш",
"yy": "YY"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_ur.arb b/res/values/strings_ur.arb
index f8e1b770a..479fbc574 100644
--- a/res/values/strings_ur.arb
+++ b/res/values/strings_ur.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake پے آپ کو ورچوئل اثاثوں کے ساتھ گفٹ کارڈز آسانی سے خریدنے کی اجازت دیتا ہے، جو ریاستہائے متحدہ میں 150,000 سے زیادہ تاجروں پر فوری طور پر خرچ کیے جا سکتے ہیں۔",
+ "accent_color": "لہجہ رنگ",
"account": "کھاتہ",
"accounts": "اکاؤنٹس",
"accounts_subaddresses": "اکاؤنٹس اور ذیلی پتے",
@@ -55,6 +56,7 @@
"and": "اور",
"anonpay_description": "${type} بنائیں۔ وصول کنندہ کسی بھی تعاون یافتہ کرپٹو کرنسی کے ساتھ ${method} کرسکتا ہے، اور آپ کو اس بٹوے میں فنڈز موصول ہوں گے۔",
"apk_update": "APK اپ ڈیٹ",
+ "appearance": "ظاہری شکل",
"approve": "ﻭﺮﮐ ﺭﻮﻈﻨﻣ",
"approve_request": "درخواست کو منظور کریں",
"approve_tokens": "ٹوکن کو منظور کریں",
@@ -568,6 +570,7 @@
"offline": "آف لائن",
"ok": "ٹھیک ہے",
"old_fee": "پرانی فیس",
+ "oled_mode": "OLED موڈ",
"onion_link": "پیاز کا لنک",
"online": "آن لائن",
"onramper_option_description": "ادائیگی کے بہت سے طریقوں سے جلدی سے کرپٹو خریدیں۔ زیادہ تر ممالک میں دستیاب ہے۔ پھیلاؤ اور فیس مختلف ہوتی ہے۔",
@@ -1151,4 +1154,4 @@
"youCanGoBackToYourDapp": "اب آپ اپنے ڈی اے پی پی پر واپس جاسکتے ہیں",
"your": "آپ کا",
"yy": "YY"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_vi.arb b/res/values/strings_vi.arb
index afd305084..f7435ce9c 100644
--- a/res/values/strings_vi.arb
+++ b/res/values/strings_vi.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake Pay cho phép bạn dễ dàng mua thẻ quà tặng bằng tài sản ảo, có thể sử dụng ngay lập tức tại hơn 150.000 cửa hàng tại Hoa Kỳ.",
+ "accent_color": "Màu nhấn",
"account": "Tài khoản",
"accounts": "Tài khoản",
"accounts_subaddresses": "Tài khoản và địa chỉ phụ",
@@ -55,6 +56,7 @@
"and": "và",
"anonpay_description": "Tạo ${type}. Người nhận có thể ${method} với bất kỳ loại tiền điện tử nào được hỗ trợ, và bạn sẽ nhận được tiền trong ví này.",
"apk_update": "Cập nhật APK",
+ "appearance": "Vẻ bề ngoài",
"approve": "Phê duyệt",
"approve_request": "Phê duyệt yêu cầu",
"approve_tokens": "Phê duyệt mã thông báo",
@@ -566,6 +568,7 @@
"offline": "Ngoại tuyến",
"ok": "OK",
"old_fee": "Phí cũ",
+ "oled_mode": "Chế độ OLED",
"onion_link": "Liên kết Onion",
"online": "Trực tuyến",
"onramper_option_description": "Mua tiền điện tử nhanh chóng với nhiều phương thức thanh toán. Có sẵn ở hầu hết các quốc gia. Chênh lệch và phí thay đổi.",
@@ -1146,4 +1149,4 @@
"youCanGoBackToYourDapp": "Bạn có thể quay lại DAPP của mình ngay bây giờ",
"your": "Của bạn",
"yy": "YY"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_yo.arb b/res/values/strings_yo.arb
index 9c589871e..0e02afcde 100644
--- a/res/values/strings_yo.arb
+++ b/res/values/strings_yo.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake Pay jẹ́ kí ẹ lè fi owó wẹ́ẹ̀bù ra àwọn káàdì ìrajà t'á lò nínú iye ìtajà kan. Ẹ lè san wọn láìpẹ́ nítajà 150,000 nínú Amẹ́ríkà.",
+ "accent_color": "Awọ ara",
"account": "Àkáǹtì",
"accounts": "Àwọn àkáǹtì",
"accounts_subaddresses": "Àwọn àkáǹtì àti àwọn àdírẹ́sì kékeré",
@@ -55,6 +56,7 @@
"and": "àti",
"anonpay_description": "Ṣe akọkọ ${type}. Awọn alabara le ${method} pẹlu eyikeyi iwo ise ati owo yoo wọle si iwe iwe yii.",
"apk_update": "Àtúnse áàpù títun wà",
+ "appearance": "Ifarahan",
"approve": "Fi ọwọ si",
"approve_request": "IKILỌ RẸ",
"approve_tokens": "Ṣe fọwọsi awọn àmi",
@@ -569,6 +571,7 @@
"offline": "kò wà lórí ayélujára",
"ok": "Ó dáa",
"old_fee": "Oya atijọ",
+ "oled_mode": "Ipo OED",
"onion_link": "Kọja ilọ alubosa",
"online": "Lórí ayélujára",
"onramper_option_description": "Ni kiakia Ra Crypto pẹlu ọpọlọpọ awọn ọna isanwo. Wa ni ọpọlọpọ awọn orilẹ-ede. Itankale ati awọn idiyele yatọ.",
@@ -1150,4 +1153,4 @@
"youCanGoBackToYourDapp": "O le pada si tapla rẹ bayi",
"your": "Rẹ",
"yy": "Ọd"
-}
+}
\ No newline at end of file
diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb
index fdfa4d438..ab5121198 100644
--- a/res/values/strings_zh.arb
+++ b/res/values/strings_zh.arb
@@ -1,5 +1,6 @@
{
"about_cake_pay": "Cake Pay 让您可以轻松购买带有虚拟资产的礼品卡,可立即在美国超过 150,000 家商家消费。",
+ "accent_color": "口音颜色",
"account": "帐户",
"accounts": "账户",
"accounts_subaddresses": "账户和子地址",
@@ -55,6 +56,7 @@
"and": "和",
"anonpay_description": "生成 ${type}。收款人可以使用任何受支持的加密货币 ${method},您将在此钱包中收到资金。",
"apk_update": "APK更新",
+ "appearance": "外貌",
"approve": "批准",
"approve_request": "批准请求",
"approve_tokens": "批准令牌",
@@ -568,6 +570,7 @@
"offline": "离线",
"ok": "确认",
"old_fee": "旧费用",
+ "oled_mode": "OLED模式",
"onion_link": "洋葱链接",
"online": "在线",
"onramper_option_description": "快速使用许多付款方式购买加密货币。在大多数国家 /地区可用。利差和费用各不相同。",
@@ -1149,4 +1152,4 @@
"youCanGoBackToYourDapp": "您现在可以回到DAPP",
"your": "你的",
"yy": "YY"
-}
+}
\ No newline at end of file