The open source repository for Cake Wallet, a noncustodial multi-currency wallet, and Monero.com, a noncustodial Monero-only wallet. Need help? Check out https://docs.cakewallet.com https://cakewallet.com
Find a file
tuxsudo df88914628
New themes (#2239)
* Add theme base v2

* Initial new theme base files

* Typos

* Fixes

* Update theme files

* feat: Migrate to Material 3 Theming

Foundation, Theme Data Refactor, and First Extension Cleanup Batch.

This commit completes the first major phase of migrating to Material 3 theming by setting up the foundations for material 3 integration and begins the initial migration, removing custom theme extensions, updating theme data, and refactoring all relevant widget and page theming to use Material 3’s built-in color and typography tokens.

These changes:
- Lays the groundwork for Material 3 theming by restructuring the app’s theme configuration to use Material 3’s ColorScheme and TextTheme as the primary sources of color and typography throughout the app.
- Refactors the core theme config files by removing legacy custom color roles ensuring all color definitions now map directly to Material 3’s role.
- Begins the first batch migration of custom theme extensions (InfoTheme, PlaceholderTheme, KeyboardTheme, PinCodeTheme) and updates all affected widgets and pages to use Material 3 color and typography tokens instead of the custom properties.
- Cleans up the codebase by deleting the files of the initial set of migrated extensions and eliminating all related imports and usages.

* feat: Migrate to Material 3 Theming.

This change:
- Updates the themes README.md file to reflect the current structure and give more information based on the first major phase that was completed.

* feat: Migrate to Material 3 Theming

Deleting previous theme extensions

* feat: Migrate to Material 3 Theming

Another batch of migrations from existing extensions

* feat: Migration to Material 3 Theming

Third Migration batch for theme extensions

* fwat: Migration to Material 3 Theming

Final Migration batch for previous theme extensions

* Update onboarding hero

* Update button radius

* Add surfaceContainer to light theme

* feat(themes): Migrate to Material 3 Theming

This change:
- Adds new set of hero images
- Modifies the core structure for the themes
- Add missing color tokens to the theme classes
- Adds a CustomThemeColor class for custom color tokens
- Modifies the themelist to have a fall back for previous theme implementation
- Adds localization for some texts
- Modifies the flow for loading the theme on app start
- Add a WidgetsBindingObserver that listens for changes in the device theme and updates the app theme when there is a change
- Registers the themeStore as a Singleton for codebase wide use

* feat(themes): Migrate to Material 3 theming

This change:
- Migrates UI flows across the app to the new themes
- Confirms styling and typography of components across the app uses the new themes
- Remove instances of Palette use
- Switch TextStyles across the app to use theme text styles

* feat(themes): Migrate to Material 3 Theming.

This change:
- Adjusts bottomsheets styling and removes duplicate close button
- Removes more themedata extensions from the previous implementation

* - Remove outlines from cards and dock
- Update menu colors
- Update padding/divider size for cards

* - Update PIN screen
- Fix navigation dock shadow
- Update wallet screen colors

* Update border radius --skip-ci

* feat(themes): Migrate to Material 3 Theming.

This change:
- Adds gradient backgrounds to the dashbaord and balance cards.
- Migrates the input fields across the app to BaseTextFormFields.
- Removes dependence of input fields on individual styling, focusing instead on using theme defined InputDecoration styling with adjustments on individual components where needed.
- Applies new theme styling to BaseTextFormField, AddressTextField and CurrencyAmountTextField.

* - Switch some hero images to PNG
- Fix nagivation_dock shadow
- Minor fixes

* feat: Add fallback to previous underline styling in central widgets

This change:
- Adds a fallback to CurrencyAmountTextField, AddressTextField, and BaseTextFormField, allowing them use the previous theme styling.
- Adds localization for new texts

* feat(themes): Update warning box colors for dark and light themes

* feat(themes): Relaod themes when user restores from backup, ensuring the user previous theme preference is used.

* feat(themes): Handle themes logic during restore from backup

This change:
- Refactors theme loading logic to handle backup restore edgecase
- Refreshes the theme based on the user saved preference during restore from backup flow

* Fix card gradients and spacing

* Fix even more radiuses
Test new icons for navigation_dock.dart

* Update onboarding flow backgrounds
Fix swap icon clipping
Fix some text colors
Add more hero images

* Fix incorrect color for light theme

* Fix more hero images and cleanup

* Update text field icons
Fix info box CTA colors
Fix sync indicator colors

* Update toggle colors
Update dark theme colors (minor)
Update crypto_balance_widget.dart icon

* Update page transitions in router.dart
Fix some colors

* feat(themes): Display label by default for filled textfields

* feat(themes): Refactor theme handling across various components

This change:
- Fixes issue with themeMode resetting to system mode when app is restarted causing a UI glitch
- Updates theme checks from `currentTheme.type == ThemeType.dark` to `currentTheme.isDark` for consistency
- Adjusts UI components to use the theme directly from the themeStore

* feat(themes): Add animating tagline to the create pin welcome screen

* Revert text fields label temporarily, fix a couple colors, and cleanup some images

---------

Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
Co-authored-by: Blazebrain <davidadegoke16@gmail.com>
2025-05-25 23:11:45 +03:00
.github Cw 1038 filter transaction popup not scrollable (#2207) 2025-04-18 14:53:22 +02:00
android v4.28.0 Release Candidate (#2260) 2025-05-16 13:51:36 +03:00
assets New themes (#2239) 2025-05-25 23:11:45 +03:00
cw_bitcoin FIX (#2283) 2025-05-25 22:28:08 +03:00
cw_bitcoin_cash FIX (#2283) 2025-05-25 22:28:08 +03:00
cw_core FIX (#2283) 2025-05-25 22:28:08 +03:00
cw_decred FIX (#2283) 2025-05-25 22:28:08 +03:00
cw_ethereum feat: Migrate to EtherScan v2 API for supported EVM chains (#2264) 2025-05-23 00:32:18 +03:00
cw_evm feat: Load default ERC20 Tokens for existing ETH and Polygon Wallets (#2274) 2025-05-15 22:57:02 +03:00
cw_monero FIX (#2283) 2025-05-25 22:28:08 +03:00
cw_mweb CW-875 BackupServiceV3 (#2064) 2025-03-22 03:16:54 +02:00
cw_nano FIX (#2283) 2025-05-25 22:28:08 +03:00
cw_polygon feat: Migrate to EtherScan v2 API for supported EVM chains (#2264) 2025-05-23 00:32:18 +03:00
cw_shared_external CW-1000 Background sync improvements (#2142) 2025-04-24 19:06:43 +02:00
cw_solana FIX (#2283) 2025-05-25 22:28:08 +03:00
cw_tron FIX (#2283) 2025-05-25 22:28:08 +03:00
cw_wownero FIX (#2283) 2025-05-25 22:28:08 +03:00
cw_zano FIX (#2283) 2025-05-25 22:28:08 +03:00
docs CW-1020 arm64 linux support (#2110) 2025-03-31 07:19:01 +02:00
integration_test New themes (#2239) 2025-05-25 23:11:45 +03:00
ios v4.28.0 Release Candidate (#2260) 2025-05-16 13:51:36 +03:00
lib New themes (#2239) 2025-05-25 23:11:45 +03:00
linux CW-1020 arm64 linux support (#2110) 2025-03-31 07:19:01 +02:00
macos Gracefully handle toast messages error on desktop platforms 2025-04-28 15:12:42 +03:00
res/values New themes (#2239) 2025-05-25 23:11:45 +03:00
scripts Update button text 2025-05-17 03:30:49 +03:00
test Fixes 2020-09-28 18:47:43 +03:00
test_driver CW-727/728-Automated-Integrated-Tests (#1514) 2024-09-22 05:46:51 +03:00
tool FIX (#2283) 2025-05-25 22:28:08 +03:00
windows remove autogenerated files and add them to gitignore (#2108) 2025-03-26 15:08:57 +02:00
.dockerignore Improve build docs and optimize Dockerfile for Android and Linux builds (#2016) 2025-03-09 23:10:12 +02:00
.gitignore Remove old cake wallet logo (#2161) 2025-04-07 18:14:35 +02:00
.gitmodules TMP 4 2020-06-20 10:10:00 +03:00
.metadata CW-676 Add Linux scripts to build monero_c for linux platform (#1527) 2024-08-13 01:18:14 +03:00
analysis_options.yaml Zano with passphrase (#1971) 2025-01-24 20:33:24 +02:00
cakewallet.bat Wownero (#1485) 2024-07-04 22:43:17 +03:00
com.cakewallet.CakeWallet.yml revert flatpack path [skip ci] 2025-04-04 01:59:55 +02:00
configure_cake_wallet.sh CW-798 Fix macos 15 issues (#1775) 2024-11-25 16:08:30 +02:00
Dockerfile CW-1020 arm64 linux support (#2110) 2025-03-31 07:19:01 +02:00
env.json Wownero (#1485) 2024-07-04 22:43:17 +03:00
integration_test_runner.sh CW-827 CI/CD update (#1948) 2025-01-15 13:09:59 +02:00
LICENSE.md Update LICENSE.md (#1984) 2025-01-28 14:57:53 +02:00
model_generator.sh Remove haven (#2085) 2025-03-21 04:52:05 +02:00
PRIVACY.md Docs spelling issues (#1789) 2024-11-04 04:51:19 +02:00
pubspec_base.yaml FIX (#2283) 2025-05-25 22:28:08 +03:00
pubspec_description.yaml CW-798 Fix macos 15 issues (#1775) 2024-11-25 16:08:30 +02:00
README.md add/remove coins from readme & matic -> pol on add wallet page (#2165) 2025-04-07 19:08:07 +02:00
run-android.sh Zano with passphrase (#1971) 2025-01-24 20:33:24 +02:00

logo

devices

Cake Wallet

Cake Wallet is an open-source, non-custodial, and private multi-currency crypto wallet for Android, iOS, macOS, and Linux.

Cake Wallet includes support for several cryptocurrencies, including:

  • Monero (XMR)
  • Bitcoin (BTC)
  • Ethereum (ETH)
  • Litecoin (LTC)
  • Bitcoin Cash (BCH)
  • Polygon (POL)
  • Solana (SOL)
  • Tron (TRX)
  • Nano (XNO)
  • Zano (ZANO)
  • Decred (DCR)
  • Wownero (WOW)

Features

App-Wide Features

  • Completely noncustodial. Your keys, your coins.
  • Built-in exchange for dozens of pairs
  • Easily pay cryptocurrency invoices with fixed rate exchanges
  • Buy cryptocurrency (BTC/LTC/XMR/ETH) with credit/debit/bank
  • Sell cryptocurrency by bank transfer
  • Scan QR codes for easy cryptocurrency transfers
  • Create several wallets
  • Select your own custom nodes/servers
  • Address book
  • Backup to an external location or iCloud
  • Send to OpenAlias, Unstoppable Domains, Yats, and FIO Crypto Handles
  • Set desired network fee level
  • Store local transaction notes
  • Extremely simple user experience
  • Convenient exchange and sending templates for recurring payments
  • Create donation links and invoices in the receive screen
  • Robust privacy settings (eg: Tor-only connections)
  • Robust security settings (eg: Cake 2FA)

Monero Specific Features

  • The Monero view key is retained on the device for maximum privacy
  • Full support for Monero subaddresses and accounts
  • Specify restore height for faster syncing
  • Specify multiple recipients for batch sending
  • Optionally set Monero nodes as trusted for faster syncing
  • Specify a proxy for Monero nodes, compatible with Tor and i2p

Bitcoin Specific Features

  • Bitcoin coin control (specify specific outputs to spend)
  • Automatically generate new addresses
  • Specify multiple recipients for batch sending

Ethereum Specific Features

  • Store ETH and all ERc-20 tokens
  • Add custom tokens by contract address
  • Enable or disable Etherscan for transaction history

Litecoin Specific Features

  • Litecoin coin control (specify specific outputs to spend)
  • Automatically generate new addresses
  • Specify multiple recipients for batch sending

Monero.com by Cake Wallet for Android and iOS

Open Source Monero-Only Wallet

Exchanging to/from other assets is also supported.

APK Verification

APK releases on GitHub, Accrescent, and F-Droid use the same key. They can easily be verified using apksigner or AppVerifier.

See below for Cake Wallet's SHA-256 signing certificate hash:

com.cakewallet.cake_wallet
C5:40:53:AB:0F:10:D9:54:17:62:A3:DA:76:65:AE:3D:BA:5E:7C:74:3A:B4:F1:08:A5:34:9D:62:AC:10:6E:F5

Support

We have 24/7 free support. Please contact support@cakewallet.com

We have excellent user guides, which are also open-source and open for contributions: https://guides.cakewallet.com

Build Instructions

More instructions to follow

For instructions on how to build for Android: please view file howto-build-android.md

Contributing

Improving translations

Edit the applicable strings_XX.arb file in res/values/ and open a pull request with the changes.

Current list of language files:

  • English
  • Spanish
  • French
  • German
  • Italian
  • Portuguese
  • Dutch
  • Polish
  • Croatian
  • Russian
  • Ukrainian
  • Hindi
  • Japanese
  • Chinese
  • Korean
  • Thai
  • Arabic
  • Turkish
  • Burmese
  • Urdu
  • Bulgarian
  • Czech
  • Indonesian
  • Hausa
  • Yoruba

Add a new language

  1. Create a new strings_XX.arb file in res/values/, replacing XX with the language's ISO 639-1 code.

  2. Edit the strings in this file, replacing XXX below with the translation for each string.

"welcome": "Welcome to", -> "welcome": "XXX",

  1. For strings where there is a variable, denoted by a $ symbol and braces, such as ${status}, the string in braces should not be translated. For example, when editing line 106:

"time" : "${minutes}m ${seconds}s"

The only parts to be translated, if needed, are the values m and s after the variables.

  1. Add the language to lib/entities/language_service.dart under both supportedLocales and localeCountryCode. Use the name of the language in the local language and in English in parentheses after for supportedLocales. Use the ISO 3166-1 alpha-3 code for localeCountryCode. You must choose one country, so choose the country with the most native speakers of this language or is otherwise best associated with this language.

  2. Add a relevant flag to assets/images/flags/XXXX.png, replacing XXXX with the 3 letters localeCountryCode. The image must be 42x26 pixels with 3 pixels of transparent margin on all 4 sides. You can resize the flag with paint.net to 36x20 pixels, expand the canvas to 42x26 pixels with the flag anchored in the middle, and then manually delete the 3 pixels on each side to make it transparent. Or you can use another program like Photoshop.

  3. Add the new language code to tool/utils/translation/translation_constants.dart

Add a new fiat currency

  1. Check with Cake Wallet support to see if the desired new fiat currency is available through our fiat API. Not all fiat currencies are.

  2. If the currency is associated strongly with a specific issuing country, map the ISO 4217 currency code with the applicable ISO 3166-1 alpha-3 code in lib/entities/fiat_currency.dart. If the currency is used in a whole region or organization, then map with a reasonable interpretation of this (eg: eur countryCode for EUR symbol).

  3. Add the raw mapping underneath in lib/entities/fiat_currency.dart following the same format as the others.

  4. Add a flag of the issuing country or organization to assets/images/flags/XXXX.png, replacing XXXX with the ISO 3166-1 alpha-3 code used above (eg: usa.png, eur.png). Do not add this if the flag with the same name already exists. The image must be 42x26 pixels with a 3 pixels of transparent margin on all 4 sides.


Copyright (C) 2018-2023 Cake Labs LLC