Cw 396 additional themes (#962)

* fix: SectionStandardList using BuildContext as param

* refactor: deprecated backgroundColor -> colorScheme.background

* refactor: themeBase and current themes

* refactor: accentTextTheme.titleLarge.color -> dialogTheme.backgroundColor

* refactor: gradient background

* refactor: text themes using the same color as primaryColor

* refactor: accentTextTheme.bodySmall.color -> cardColor

* refactor: text themes using same dialogBackgroundColor

* refactor: scrollbarTheme

* refactor: create SyncIndicatorTheme

* refactor: SectionDivider

* refactor: base_page improvements and simplify

* refactor: collapsible_standart_list improvements

* refactor: accentTextTheme.bodyLarge.backgroundColor -> KeyboardTheme.keyboardBarColor

* refactor: create PinCodeTheme for accentTextTheme.bodyMedium

* refactor: create SupportPageTheme for accentTextTheme.displayLarge.backgroundColor and fix cases that use it

* refactor: accentTextTheme.displayLarge.color -> disabledColor

* refactor: create ExchangePageTheme

* refactor: create DashboardPageTheme and use textColor

* refactor: create NewWalletTheme for accentTextTheme.displayMedium

* refactor: create BalancePageTheme for accentTextTheme.displaySmall.backgroundColor

* refactor: create AddressTheme for accentTextTheme.displaySmall.color

* refactor: create IndicatorDotTheme

* refactor: create CakeMenuTheme

* refactor: create FilterTheme

* refactor: create WalletListTheme

* refactor: accentTextTheme.bodySmall.decorationColor -> InfoTheme.textColor

* refactor: accentTextTheme.titleLarge.backgroundColor -> PickerTheme.dividerColor

* refactor: primaryTextTheme.bodyLarge.backgroundColor -> AlertTheme.leftButtonTextColor

* refactor: primaryTextTheme.displayLarge.backgroundColor -> OrderTheme.iconColor

* refactor: create SendPageTheme

* fix: missing migrated styles

* refactor: primaryTextTheme.labelSmall.decorationColor -> PlaceholderTheme.color

* refactor: create TransactionTradeTheme

* refactor: create CakeTextTheme

* refactor: create AccountListTheme

* refactor: create ReceivePageTheme

* refactor: create QRCodeTheme

* refactor: move remaining items to CakeTextTheme and some missing fixes

* feat(display_settings): add new theme selector

* feat: additional themes

* fix: conflict error

* fix(lag): move colorScheme initialization to constructor

* feat: add backdropColor to alert and picker backdrop filters

* fix: merge fixes

* fix: send template page missing new colors

* fix: anonpay pages title and icon colors

* fix: merge fixes

* fix: unspent coins page

* fix: also fix exchange template

* fix: missing checkbox

* fix: fixes for high contrast theme

* Merge branch 'main' into CW-396-additional-themes

* fix: merge fixes

* fix: .gitignore and rm added files

* Fix review comments

---------

Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
This commit is contained in:
Rafael Saes 2023-08-17 12:28:31 -03:00 committed by GitHub
parent 5ec930cbc6
commit 09c942564e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
229 changed files with 4089 additions and 2869 deletions

View file

@ -0,0 +1,14 @@
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/palette.dart';
import 'package:cake_wallet/themes/monero_dark_theme.dart';
import 'package:flutter/material.dart';
class BitcoinDarkTheme extends MoneroDarkTheme {
BitcoinDarkTheme({required int raw}) : super(raw: raw);
@override
String get title => S.current.bitcoin_dark_theme;
@override
Color get primaryColor => Palette.bitcoinOrange;
}

View file

@ -0,0 +1,13 @@
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/palette.dart';
import 'package:cake_wallet/themes/monero_light_theme.dart';
import 'package:flutter/material.dart';
class BitcoinLightTheme extends MoneroLightTheme {
BitcoinLightTheme({required int raw}) : super(raw: raw);
@override
String get title => S.current.bitcoin_light_theme;
@override
Color get primaryColor => Palette.bitcoinOrange;
}

View file

@ -1,275 +1,126 @@
import 'package:cake_wallet/themes/extensions/balance_page_theme.dart';
import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart';
import 'package:cake_wallet/themes/extensions/exchange_page_theme.dart';
import 'package:cake_wallet/themes/extensions/filter_theme.dart';
import 'package:cake_wallet/themes/extensions/indicator_dot_theme.dart';
import 'package:cake_wallet/themes/extensions/menu_theme.dart';
import 'package:cake_wallet/themes/extensions/new_wallet_theme.dart';
import 'package:cake_wallet/themes/extensions/order_theme.dart';
import 'package:cake_wallet/themes/extensions/placeholder_theme.dart';
import 'package:cake_wallet/themes/extensions/qr_code_theme.dart';
import 'package:cake_wallet/themes/extensions/receive_page_theme.dart';
import 'package:cake_wallet/themes/extensions/send_page_theme.dart';
import 'package:cake_wallet/themes/extensions/sync_indicator_theme.dart';
import 'package:cake_wallet/themes/extensions/transaction_trade_theme.dart';
import 'package:cake_wallet/themes/extensions/wallet_list_theme.dart';
import 'package:cake_wallet/themes/light_theme.dart';
import 'package:cake_wallet/themes/theme_base.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/palette.dart';
import 'package:flutter/material.dart';
class BrightTheme extends ThemeBase {
class BrightTheme extends LightTheme {
BrightTheme({required int raw}) : super(raw: raw);
@override
String get title => S.current.bright_theme;
@override
ThemeType get type => ThemeType.bright;
@override
Color get primaryColor => Palette.moderateSlateBlue;
@override
Color get containerColor => Palette.moderateLavender;
ThemeData theme = ThemeData(
fontFamily: 'Lato',
brightness: Brightness.light,
scaffoldBackgroundColor: Palette.pinkFlamingo, // second gradient color
primaryColor: Palette.redHat, // third gradient color
indicatorColor: Colors.white.withOpacity(0.5), // page indicator
hoverColor: Colors.white, // amount hint text (receive page)
dividerColor: Palette.paleBlue,
hintColor: Palette.gray,
textTheme: TextTheme(
// title -> titleLarge
titleLarge: TextStyle(
color: Colors.white, // sync_indicator text
backgroundColor: Colors.white.withOpacity(0.2), // synced sync_indicator
decorationColor: Colors.white.withOpacity(0.15), // not synced sync_indicator
),
bodySmall: TextStyle(
color: Palette.shineOrange, // not synced light
decorationColor: Colors.white, // filter icon
),
labelSmall: TextStyle(
color: Colors.white.withOpacity(0.2), // filter button
backgroundColor:
Colors.white.withOpacity(0.5), // date section row
decorationColor: Colors.white
.withOpacity(0.2) // icons (transaction and trade rows)
),
// subhead -> titleMedium
titleMedium: TextStyle(
color: Colors.white.withOpacity(0.2), // address button border
decorationColor: Colors.white.withOpacity(0.4), // copy button (qr widget)
),
// headline -> headlineSmall
headlineSmall: TextStyle(
color: Colors.white, // qr code
decorationColor: Colors.white.withOpacity(0.5), // bottom border of amount (receive page)
),
// display1 -> headlineMedium
headlineMedium: TextStyle(
color: PaletteDark.lightBlueGrey, // icons color (receive page)
decorationColor: Palette.lavender, // icons background (receive page)
),
// display2 -> displaySmall
displaySmall: TextStyle(
color:
Palette.darkBlueCraiola, // text color of tiles (receive page)
decorationColor:
Colors.white // background of tiles (receive page)
),
// display3 -> displayMedium
displayMedium: TextStyle(
color: Colors.white, // text color of current tile (receive page),
//decorationColor: Palette.blueCraiola // background of current tile (receive page)
decorationColor: Palette
.moderateSlateBlue // background of current tile (receive page)
),
// display4 -> displayLarge
displayLarge: TextStyle(
color: Palette.violetBlue, // text color of tiles (account list)
decorationColor:
Colors.white // background of tiles (account list)
),
// subtitle -> titleSmall
titleSmall: TextStyle(
color: Palette
.moderateSlateBlue, // text color of current tile (account list)
decorationColor:
Colors.white // background of current tile (account list)
),
// body -> bodyMedium
bodyMedium: TextStyle(
color: Palette.moderatePurpleBlue, // scrollbar thumb
decorationColor: Palette.periwinkleCraiola // scrollbar background
),
// body2 -> bodyLarge
bodyLarge: TextStyle(
color: Palette.moderateLavender, // menu header
decorationColor: Colors.white, // menu background
)
),
scrollbarTheme: ScrollbarThemeData(
thumbColor: MaterialStateProperty.all(Palette.moderatePurpleBlue),
trackColor: MaterialStateProperty.all(Palette.periwinkleCraiola),
radius: Radius.circular(3),
thickness: MaterialStateProperty.all(6),
thumbVisibility: MaterialStateProperty.all(true),
crossAxisMargin: 6,
),
primaryTextTheme: TextTheme(
titleLarge: TextStyle(
color: Palette.darkBlueCraiola, // title color
backgroundColor: Palette.wildPeriwinkle // textfield underline
),
bodySmall: TextStyle(
color: PaletteDark.pigeonBlue, // secondary text
decorationColor: Palette.wildLavender // menu divider
),
labelSmall: TextStyle(
color: Palette.darkGray, // transaction/trade details titles
decorationColor: Colors.white.withOpacity(0.5), // placeholder
),
// subhead -> titleMedium
titleMedium: TextStyle(
color: Palette.blueCraiola, // first gradient color (send page)
decorationColor:
Palette.pinkFlamingo // second gradient color (send page)
),
// headline -> headlineSmall
headlineSmall: TextStyle(
color: Colors.white
.withOpacity(0.5), // text field border color (send page)
decorationColor: Colors.white
.withOpacity(0.5), // text field hint color (send page)
),
// display1 -> headlineMedium
headlineMedium: TextStyle(
color: Colors.white
.withOpacity(0.2), // text field button color (send page)
decorationColor:
Colors.white // text field button icon color (send page)
),
// display2 -> displaySmall
displaySmall: TextStyle(
color: Colors.white.withOpacity(0.5), // estimated fee (send page)
backgroundColor: PaletteDark.darkCyanBlue
.withOpacity(0.67), // dot color for indicator on send page
decorationColor:
Palette.shadowWhite // template dotted border (send page)
),
// display3 -> displayMedium
displayMedium: TextStyle(
color: Palette.darkBlueCraiola, // template new text (send page)
backgroundColor: PaletteDark
.darkNightBlue, // active dot color for indicator on send page
decorationColor:
Palette.shadowWhite // template background color (send page)
),
// display4 -> displayLarge
displayLarge: TextStyle(
color: Palette.darkBlueCraiola, // template title (send page)
backgroundColor:
Colors.white, // icon color on order row (moonpay)
decorationColor:
Palette.niagara // receive amount text (exchange page)
),
// subtitle -> titleSmall
titleSmall: TextStyle(
color: Palette
.blueCraiola, // first gradient color top panel (exchange page)
decorationColor: Palette
.pinkFlamingo // second gradient color top panel (exchange page)
),
// body -> bodyMedium
bodyMedium: TextStyle(
color: Palette.blueCraiola.withOpacity(
0.7), // first gradient color bottom panel (exchange page)
decorationColor: Palette.pinkFlamingo.withOpacity(
0.7), // second gradient color bottom panel (exchange page)
backgroundColor:
Palette.moderateSlateBlue // alert right button text
),
// body2 -> bodyLarge
bodyLarge: TextStyle(
color: Colors.white.withOpacity(
0.5), // text field border on top panel (exchange page)
decorationColor: Colors.white.withOpacity(
0.5), // text field border on bottom panel (exchange page)
backgroundColor: Palette.brightOrange // alert left button text
)
),
focusColor: Colors.white.withOpacity(0.2), // text field button (exchange page)
accentTextTheme: TextTheme(
// title -> titleLarge
titleLarge: TextStyle(
color: Colors.white, // picker background
backgroundColor: Palette.periwinkleCraiola, // picker divider
decorationColor: Colors.white // dialog background
),
bodySmall: TextStyle(
color: Palette.moderateLavender, // container (confirm exchange)
backgroundColor: Palette.moderateLavender, // button background (confirm exchange)
decorationColor: Palette.darkBlueCraiola, // text color (information page)
),
// subtitle -> titleSmall
titleSmall: TextStyle(
color: Palette.darkBlueCraiola, // QR code (exchange trade page)
backgroundColor: Palette.wildPeriwinkle, // divider (exchange trade page)
//decorationColor: Palette.blueCraiola // crete new wallet button background (wallet list page)
decorationColor: Palette
.moderateSlateBlue // crete new wallet button background (wallet list page)
),
// headline -> headlineSmall
headlineSmall: TextStyle(
color: Palette
.moderateLavender, // first gradient color of wallet action buttons (wallet list page)
backgroundColor: Palette
.moderateLavender, // second gradient color of wallet action buttons (wallet list page)
decorationColor: Colors
.white // restore wallet button text color (wallet list page)
),
// subhead -> titleMedium
titleMedium: TextStyle(
color: Palette.darkGray, // titles color (filter widget)
backgroundColor: Palette.periwinkle, // divider color (filter widget)
decorationColor: Colors.white // checkbox background (filter widget)
),
labelSmall: TextStyle(
color: Palette.wildPeriwinkle, // checkbox bounds (filter widget)
decorationColor: Colors.white, // menu subname
),
// display1 -> headlineMedium
headlineMedium: TextStyle(
color: Palette.blueCraiola, // first gradient color (menu header)
decorationColor: Palette.pinkFlamingo, // second gradient color(menu header)
backgroundColor: Colors.white // active dot color
),
// display2 -> displaySmall
displaySmall: TextStyle(
color:
Palette.shadowWhite, // action button color (address text field)
decorationColor: Palette.darkGray, // hint text (seed widget)
backgroundColor:
Colors.white.withOpacity(0.5) // text on balance page
),
// display3 -> displayMedium
displayMedium: TextStyle(
color: Palette.darkGray, // hint text (new wallet page)
decorationColor:
Palette.periwinkleCraiola, // underline (new wallet page)
backgroundColor:
Colors.white // menu, icons, balance (dashboard page)
),
// display4 -> displayLarge
displayLarge: TextStyle(
color: Palette.darkGray, // switch background (settings page)
backgroundColor:
Colors.black, // icon color on support page (moonpay, github)
decorationColor:
Colors.white.withOpacity(0.4) // hint text (exchange page)
),
// body -> bodyMedium
bodyMedium: TextStyle(
color: Palette.darkGray, // indicators (PIN code)
decorationColor: Palette.darkGray, // switch (PIN code)
backgroundColor: Colors.white // alert right button
),
// body2 -> bodyLarge
bodyLarge: TextStyle(
color: Palette.moderateSlateBlue, // primary buttons
decorationColor: Colors.white, // alert left button,
backgroundColor: Palette.dullGray // keyboard bar color
),
),
cardColor: Palette.moderateSlateBlue // bottom button (action list)
@override
DashboardPageTheme get dashboardPageTheme =>
super.dashboardPageTheme.copyWith(
firstGradientBackgroundColor: Palette.blueCraiola,
secondGradientBackgroundColor: Palette.pinkFlamingo,
thirdGradientBackgroundColor: Palette.redHat,
pageTitleTextColor: Colors.white,
mainActionsIconColor: Colors.white,
textColor: Colors.white,
cardTextColor: Colors.white,
indicatorDotTheme: IndicatorDotTheme(
indicatorColor: Colors.white.withOpacity(0.5),
activeIndicatorColor: Colors.white));
@override
SyncIndicatorTheme get syncIndicatorStyle =>
super.syncIndicatorStyle.copyWith(
textColor: Colors.white,
syncedBackgroundColor: Colors.white.withOpacity(0.2),
notSyncedBackgroundColor: Colors.white.withOpacity(0.15));
@override
ExchangePageTheme get exchangePageTheme => super.exchangePageTheme.copyWith(
secondGradientBottomPanelColor: Palette.pinkFlamingo.withOpacity(0.7),
firstGradientBottomPanelColor: Palette.blueCraiola.withOpacity(0.7),
secondGradientTopPanelColor: Palette.pinkFlamingo,
firstGradientTopPanelColor: Palette.blueCraiola);
@override
NewWalletTheme get newWalletTheme => super.newWalletTheme.copyWith(
hintTextColor: Palette.darkGray,
underlineColor: Palette.periwinkleCraiola);
@override
BalancePageTheme get balancePageTheme => super
.balancePageTheme
.copyWith(labelTextColor: Colors.white.withOpacity(0.5));
@override
CakeMenuTheme get menuTheme =>
super.menuTheme.copyWith(headerSecondGradientColor: Palette.pinkFlamingo);
@override
FilterTheme get filterTheme => super.filterTheme.copyWith(
checkboxSecondGradientColor: Palette.pinkFlamingo,
checkboxBackgroundColor: Colors.white,
buttonColor: Colors.white.withOpacity(0.2),
iconColor: Colors.white);
@override
WalletListTheme get walletListTheme => super.walletListTheme.copyWith(
createNewWalletButtonBackgroundColor: Palette.moderateSlateBlue);
@override
OrderTheme get orderTheme => OrderTheme(iconColor: Colors.white);
@override
SendPageTheme get sendPageTheme => super.sendPageTheme.copyWith(
templateBackgroundColor: Palette.shadowWhite,
templateDottedBorderColor: Palette.shadowWhite,
secondGradientColor: Palette.pinkFlamingo);
@override
PlaceholderTheme get placeholderTheme =>
PlaceholderTheme(color: Colors.white.withOpacity(0.5));
@override
TransactionTradeTheme get transactionTradeTheme => super
.transactionTradeTheme
.copyWith(rowsColor: Colors.white.withOpacity(0.2));
@override
ReceivePageTheme get receivePageTheme => super.receivePageTheme.copyWith(
currentTileBackgroundColor: Palette.moderateSlateBlue,
tilesBackgroundColor: Colors.white,
iconsBackgroundColor: Palette.lavender,
amountBottomBorderColor: Colors.white.withOpacity(0.5),
amountHintTextColor: Colors.white,
);
@override
ThemeData get themeData => theme.copyWith(
colorScheme: theme.colorScheme
.copyWith(background: Colors.white, secondary: Palette.blueCraiola));
QRCodeTheme get qrCodeTheme => super
.qrCodeTheme
.copyWith(qrWidgetCopyButtonColor: Colors.white.withOpacity(0.4));
@override
CakeTextTheme get cakeTextTheme => super.cakeTextTheme.copyWith(
buttonSecondaryTextColor: super.cakeTextTheme.secondaryTextColor,
buttonTextColor: super.cakeTextTheme.titleColor,
addressButtonBorderColor: Colors.white.withOpacity(0.4),
dateSectionRowColor: Colors.white.withOpacity(0.5));
}

View file

@ -1,3 +1,29 @@
import 'package:cake_wallet/themes/extensions/account_list_theme.dart';
import 'package:cake_wallet/themes/extensions/address_theme.dart';
import 'package:cake_wallet/themes/extensions/alert_theme.dart';
import 'package:cake_wallet/themes/extensions/balance_page_theme.dart';
import 'package:cake_wallet/themes/extensions/cake_scrollbar_theme.dart';
import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart';
import 'package:cake_wallet/themes/extensions/exchange_page_theme.dart';
import 'package:cake_wallet/themes/extensions/filter_theme.dart';
import 'package:cake_wallet/themes/extensions/indicator_dot_theme.dart';
import 'package:cake_wallet/themes/extensions/info_theme.dart';
import 'package:cake_wallet/themes/extensions/keyboard_theme.dart';
import 'package:cake_wallet/themes/extensions/menu_theme.dart';
import 'package:cake_wallet/themes/extensions/new_wallet_theme.dart';
import 'package:cake_wallet/themes/extensions/order_theme.dart';
import 'package:cake_wallet/themes/extensions/picker_theme.dart';
import 'package:cake_wallet/themes/extensions/pin_code_theme.dart';
import 'package:cake_wallet/themes/extensions/placeholder_theme.dart';
import 'package:cake_wallet/themes/extensions/qr_code_theme.dart';
import 'package:cake_wallet/themes/extensions/receive_page_theme.dart';
import 'package:cake_wallet/themes/extensions/seed_widget_theme.dart';
import 'package:cake_wallet/themes/extensions/send_page_theme.dart';
import 'package:cake_wallet/themes/extensions/support_page_theme.dart';
import 'package:cake_wallet/themes/extensions/sync_indicator_theme.dart';
import 'package:cake_wallet/themes/extensions/transaction_trade_theme.dart';
import 'package:cake_wallet/themes/extensions/wallet_list_theme.dart';
import 'package:cake_wallet/themes/theme_base.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/palette.dart';
@ -8,278 +34,194 @@ class DarkTheme extends ThemeBase {
@override
String get title => S.current.dark_theme;
@override
ThemeType get type => ThemeType.dark;
ThemeData theme = ThemeData(
fontFamily: 'Lato',
brightness: Brightness.dark,
scaffoldBackgroundColor:
PaletteDark.backgroundColor, // second gradient color
primaryColor: PaletteDark.backgroundColor, // third gradient color
indicatorColor: PaletteDark.cyanBlue, // page indicator
hoverColor: PaletteDark.cyanBlue, // amount hint text (receive page)
dividerColor: PaletteDark.dividerColor,
hintColor: PaletteDark.pigeonBlue, // menu
textTheme: TextTheme(
// title -> titleLarge
titleLarge: TextStyle(
color: PaletteDark.wildBlue, // sync_indicator text
backgroundColor:
PaletteDark.lightNightBlue, // synced sync_indicator
decorationColor:
PaletteDark.oceanBlue // not synced sync_indicator
),
bodySmall: TextStyle(
color: PaletteDark.orangeYellow, // not synced light
decorationColor: PaletteDark.wildBlue, // filter icon
),
labelSmall: TextStyle(
color: PaletteDark.oceanBlue, // filter button
backgroundColor: PaletteDark.darkCyanBlue, // date section row
decorationColor: PaletteDark
.wildNightBlue // icons (transaction and trade rows)
),
// subhead -> titleMedium
titleMedium: TextStyle(
color: PaletteDark.nightBlue, // address button border
decorationColor: PaletteDark.lightBlueGrey, // copy button (qr widget)
),
// headline -> headlineSmall
headlineSmall: TextStyle(
color: PaletteDark.lightBlueGrey, // qr code
decorationColor: PaletteDark.darkGrey, // bottom border of amount (receive page)
),
// display1 -> headlineMedium
headlineMedium: TextStyle(
color: Colors.white, // icons color (receive page)
decorationColor: PaletteDark.distantNightBlue, // icons background (receive page)
),
// display2 -> displaySmall
displaySmall: TextStyle(
color: Colors.white, // text color of tiles (receive page)
decorationColor:
PaletteDark.nightBlue // background of tiles (receive page)
),
// display3 -> displayMedium
displayMedium: TextStyle(
color: Palette
.blueCraiola, // text color of current tile (receive page)
decorationColor: PaletteDark
.lightOceanBlue // background of current tile (receive page)
),
// display4 -> displayLarge
displayLarge: TextStyle(
color: Colors.white, // text color of tiles (account list)
decorationColor: PaletteDark
.darkOceanBlue // background of tiles (account list)
),
// subtitle -> titleSmall
titleSmall: TextStyle(
color: Palette
.blueCraiola, // text color of current tile (account list)
decorationColor: PaletteDark
.darkNightBlue // background of current tile (account list)
),
// body1 -> bodyMedium
bodyMedium: TextStyle(
color: PaletteDark.wildBlueGrey, // scrollbar thumb
decorationColor: PaletteDark.violetBlue // scrollbar background
),
// body2 -> bodyLarge
bodyLarge: TextStyle(
color: PaletteDark.deepPurpleBlue, // menu header
decorationColor: PaletteDark.deepPurpleBlue, // menu background
)
),
scrollbarTheme: ScrollbarThemeData(
thumbColor: MaterialStateProperty.all(PaletteDark.wildBlueGrey),
trackColor: MaterialStateProperty.all(PaletteDark.violetBlue),
radius: Radius.circular(3),
thickness: MaterialStateProperty.all(6),
thumbVisibility: MaterialStateProperty.all(true),
crossAxisMargin: 6,
),
primaryTextTheme: TextTheme(
// title -> titleLarge
titleLarge: TextStyle(
color: Colors.white, // title color
backgroundColor: PaletteDark.darkOceanBlue // textfield underline
),
bodySmall: TextStyle(
color: PaletteDark.darkCyanBlue, // secondary text
decorationColor: PaletteDark.darkOceanBlue // menu divider
),
labelSmall: TextStyle(
color:
PaletteDark.lightBlueGrey, // transaction/trade details titles
decorationColor: Colors.grey, // placeholder
),
// subhead -> titleMedium
titleMedium: TextStyle(
color:
PaletteDark.darkNightBlue, // first gradient color (send page)
decorationColor:
PaletteDark.darkNightBlue // second gradient color (send page)
),
// headline -> headlineSmall
headlineSmall: TextStyle(
color: PaletteDark
.lightVioletBlue, // text field border color (send page)
decorationColor:
PaletteDark.darkCyanBlue, // text field hint color (send page)
),
// display1 -> headlineMedium
headlineMedium: TextStyle(
color: PaletteDark
.buttonNightBlue, // text field button color (send page)
decorationColor:
PaletteDark.gray // text field button icon color (send page)
),
// display2 -> displaySmall
displaySmall: TextStyle(
color: Colors.white, // estimated fee (send page)
backgroundColor:
PaletteDark.cyanBlue, // dot color for indicator on send page
decorationColor:
PaletteDark.darkCyanBlue // template dotted border (send page)
),
// display3 -> displayMedium
displayMedium: TextStyle(
color: PaletteDark.darkCyanBlue, // template new text (send page)
backgroundColor:
Colors.white, // active dot color for indicator on send page
decorationColor: PaletteDark
.darkVioletBlue // template background color (send page)
),
// display4 -> displayLarge
displayLarge: TextStyle(
color: PaletteDark.cyanBlue, // template title (send page)
backgroundColor:
Colors.white, // icon color on order row (moonpay)
decorationColor: PaletteDark
.darkCyanBlue // receive amount text (exchange page)
),
// subtitle -> titleSmall
titleSmall: TextStyle(
color: PaletteDark
.wildVioletBlue, // first gradient color top panel (exchange page)
decorationColor: PaletteDark
.wildVioletBlue // second gradient color top panel (exchange page)
),
// body1 -> bodyMedium
bodyMedium: TextStyle(
color: PaletteDark
.darkNightBlue, // first gradient color bottom panel (exchange page)
decorationColor: PaletteDark
.darkNightBlue, // second gradient color bottom panel (exchange page)
backgroundColor: Palette.blueCraiola // alert right button text
),
// body2 -> bodyLarge
bodyLarge: TextStyle(
color: PaletteDark
.blueGrey, // text field border on top panel (exchange page)
decorationColor: PaletteDark
.moderateVioletBlue, // text field border on bottom panel (exchange page)
backgroundColor: Palette.alizarinRed // alert left button text
)
),
focusColor: PaletteDark.moderateBlue, // text field button (exchange page)
accentTextTheme: TextTheme(
// title -> titleLarge
titleLarge: TextStyle(
color: PaletteDark.nightBlue, // picker background
backgroundColor: PaletteDark.dividerColor, // picker divider
decorationColor: PaletteDark.darkNightBlue // dialog background
),
bodySmall: TextStyle(
color: PaletteDark.nightBlue, // container (confirm exchange)
backgroundColor: PaletteDark.deepVioletBlue, // button background (confirm exchange)
decorationColor: Palette.darkLavender, // text color (information page)
),
// subtitle -> titleSmall
titleSmall: TextStyle(
//color: PaletteDark.lightBlueGrey, // QR code (exchange trade page)
color: Colors.white, // QR code (exchange trade page)
backgroundColor:
PaletteDark.deepVioletBlue, // divider (exchange trade page)
decorationColor: Colors
.white // crete new wallet button background (wallet list page)
),
// headline -> headlineSmall
headlineSmall: TextStyle(
color: PaletteDark
.distantBlue, // first gradient color of wallet action buttons (wallet list page)
backgroundColor: PaletteDark
.distantNightBlue, // second gradient color of wallet action buttons (wallet list page)
decorationColor: Palette
.darkBlueCraiola // restore wallet button text color (wallet list page)
),
// subhead -> titleMedium
titleMedium: TextStyle(
color: Colors.white, // titles color (filter widget)
backgroundColor:
PaletteDark.darkOceanBlue, // divider color (filter widget)
decorationColor: PaletteDark.wildVioletBlue
.withOpacity(0.3) // checkbox background (filter widget)
),
labelSmall: TextStyle(
color: PaletteDark.wildVioletBlue, // checkbox bounds (filter widget)
decorationColor: PaletteDark.darkCyanBlue, // menu subname
),
// display1 -> headlineMedium
headlineMedium: TextStyle(
color: PaletteDark
.deepPurpleBlue, // first gradient color (menu header)
decorationColor: PaletteDark
.deepPurpleBlue, // second gradient color(menu header)
backgroundColor: Colors.white // active dot color
),
// display2 -> displaySmall
displaySmall: TextStyle(
color: PaletteDark
.nightBlue, // action button color (address text field)
decorationColor:
PaletteDark.darkCyanBlue, // hint text (seed widget)
backgroundColor: PaletteDark.cyanBlue // text on balance page
),
// display3 -> displayMedium
displayMedium: TextStyle(
color: PaletteDark.cyanBlue, // hint text (new wallet page)
decorationColor:
PaletteDark.darkGrey, // underline (new wallet page)
backgroundColor:
Colors.white // menu, icons, balance (dashboard page)
),
// display4 -> displayLarge
displayLarge: TextStyle(
color:
PaletteDark.deepVioletBlue, // switch background (settings page)
backgroundColor:
Colors.white, // icon color on support page (moonpay, github)
decorationColor:
PaletteDark.lightBlueGrey // hint text (exchange page)
),
// body1 -> bodyMedium
bodyMedium: TextStyle(
color: PaletteDark.indicatorVioletBlue, // indicators (PIN code)
decorationColor: PaletteDark.lightPurpleBlue, // switch (PIN code)
backgroundColor: PaletteDark.darkNightBlue // alert right button
),
// body2 -> bodyLarge
bodyLarge: TextStyle(
color: Palette.blueCraiola, // primary buttons
decorationColor: PaletteDark.darkNightBlue, // alert left button
backgroundColor: PaletteDark.granite // keyboard bar color
),
),
cardColor: PaletteDark.darkNightBlue // bottom button (action list)
);
@override
Brightness get brightness => Brightness.dark;
@override
Color get backgroundColor => PaletteDark.backgroundColor;
@override
Color get primaryColor => Palette.blueCraiola;
@override
Color get primaryTextColor => Colors.white;
@override
Color get containerColor => PaletteDark.nightBlue;
@override
Color get dialogBackgroundColor => PaletteDark.darkNightBlue;
@override
ThemeData get themeData => theme.copyWith(
colorScheme: theme.colorScheme.copyWith(
background: PaletteDark.backgroundColor,
secondary: PaletteDark.backgroundColor));
CakeScrollbarTheme get scrollbarTheme => CakeScrollbarTheme(
thumbColor: PaletteDark.wildBlueGrey, trackColor: PaletteDark.violetBlue);
@override
SyncIndicatorTheme get syncIndicatorStyle => SyncIndicatorTheme(
textColor: PaletteDark.wildBlue,
syncedBackgroundColor: PaletteDark.lightNightBlue,
notSyncedIconColor: PaletteDark.orangeYellow,
notSyncedBackgroundColor: PaletteDark.oceanBlue);
@override
KeyboardTheme get keyboardTheme =>
KeyboardTheme(keyboardBarColor: PaletteDark.granite);
@override
PinCodeTheme get pinCodeTheme => PinCodeTheme(
indicatorsColor: PaletteDark.indicatorVioletBlue,
switchColor: PaletteDark.lightPurpleBlue);
@override
SupportPageTheme get supportPageTheme =>
SupportPageTheme(iconColor: Colors.white);
@override
ExchangePageTheme get exchangePageTheme => ExchangePageTheme(
hintTextColor: PaletteDark.lightBlueGrey,
dividerCodeColor: PaletteDark.deepVioletBlue,
qrCodeColor: primaryTextColor,
buttonBackgroundColor: PaletteDark.deepVioletBlue,
textFieldButtonColor: PaletteDark.moderateBlue,
textFieldBorderBottomPanelColor: PaletteDark.moderateVioletBlue,
textFieldBorderTopPanelColor: PaletteDark.blueGrey,
secondGradientBottomPanelColor: PaletteDark.darkNightBlue,
firstGradientBottomPanelColor: PaletteDark.darkNightBlue,
secondGradientTopPanelColor: PaletteDark.wildVioletBlue,
firstGradientTopPanelColor: PaletteDark.wildVioletBlue,
receiveAmountColor: PaletteDark.darkCyanBlue);
@override
NewWalletTheme get newWalletTheme => NewWalletTheme(
hintTextColor: PaletteDark.cyanBlue,
underlineColor: PaletteDark.darkGrey);
@override
AddressTheme get addressTheme =>
AddressTheme(actionButtonColor: PaletteDark.nightBlue);
@override
DashboardPageTheme get dashboardPageTheme =>
super.dashboardPageTheme.copyWith(
cardTextColor: super.dashboardPageTheme.textColor,
indicatorDotTheme: IndicatorDotTheme(
indicatorColor: PaletteDark.cyanBlue,
activeIndicatorColor: Colors.white));
@override
BalancePageTheme get balancePageTheme => BalancePageTheme(
textColor: dashboardPageTheme.textColor,
labelTextColor: PaletteDark.cyanBlue);
@override
CakeMenuTheme get menuTheme => CakeMenuTheme(
headerFirstGradientColor: PaletteDark.deepPurpleBlue,
headerSecondGradientColor: PaletteDark.deepPurpleBlue,
backgroundColor: PaletteDark.deepPurpleBlue,
subnameTextColor: PaletteDark.darkCyanBlue,
dividerColor: PaletteDark.darkOceanBlue,
settingTitleColor: receivePageTheme.tilesTextColor,
settingActionsIconColor: PaletteDark.pigeonBlue,
iconColor: PaletteDark.darkCyanBlue);
@override
FilterTheme get filterTheme => FilterTheme(
checkboxFirstGradientColor: PaletteDark.darkNightBlue,
checkboxSecondGradientColor: PaletteDark.darkNightBlue,
checkboxBoundsColor: PaletteDark.wildVioletBlue,
checkboxBackgroundColor: PaletteDark.wildVioletBlue.withOpacity(0.3),
titlesColor: Colors.white,
buttonColor: PaletteDark.oceanBlue,
iconColor: PaletteDark.wildBlue);
@override
WalletListTheme get walletListTheme => WalletListTheme(
restoreWalletButtonTextColor: Palette.darkBlueCraiola,
createNewWalletButtonBackgroundColor: Colors.white);
@override
InfoTheme get infoTheme => InfoTheme(textColor: Palette.darkLavender);
@override
PickerTheme get pickerTheme => PickerTheme(
dividerColor: PaletteDark.dividerColor,
searchTextColor: cakeTextTheme.textfieldUnderlineColor,
searchBackgroundFillColor: addressTheme.actionButtonColor);
@override
AlertTheme get alertTheme => AlertTheme(
backdropColor: PaletteDark.darkNightBlue.withOpacity(0.75),
leftButtonTextColor: Palette.alizarinRed);
@override
OrderTheme get orderTheme => OrderTheme(iconColor: Colors.white);
@override
SendPageTheme get sendPageTheme => SendPageTheme(
templateTitleColor: PaletteDark.cyanBlue,
templateBackgroundColor: PaletteDark.darkVioletBlue,
templateNewTextColor: PaletteDark.darkCyanBlue,
templateDottedBorderColor: PaletteDark.darkCyanBlue,
templateSelectedCurrencyBackgroundColor: primaryColor,
templateSelectedCurrencyTitleColor: Colors.white,
estimatedFeeColor: Colors.white,
textFieldButtonIconColor: PaletteDark.gray,
textFieldButtonColor: PaletteDark.buttonNightBlue,
textFieldHintColor: PaletteDark.darkCyanBlue,
textFieldBorderColor: PaletteDark.lightVioletBlue,
secondGradientColor: PaletteDark.darkNightBlue,
firstGradientColor: PaletteDark.darkNightBlue,
indicatorDotColor: PaletteDark.cyanBlue);
@override
SeedWidgetTheme get seedWidgetTheme =>
SeedWidgetTheme(hintTextColor: PaletteDark.darkCyanBlue);
@override
PlaceholderTheme get placeholderTheme => PlaceholderTheme(color: Colors.grey);
@override
TransactionTradeTheme get transactionTradeTheme => TransactionTradeTheme(
detailsTitlesColor: PaletteDark.lightBlueGrey,
rowsColor: PaletteDark.wildNightBlue);
@override
CakeTextTheme get cakeTextTheme => CakeTextTheme(
secondaryTextColor: PaletteDark.darkCyanBlue,
textfieldUnderlineColor: PaletteDark.darkOceanBlue,
titleColor: Colors.white,
addressButtonBorderColor: PaletteDark.nightBlue,
dateSectionRowColor: PaletteDark.darkCyanBlue);
@override
AccountListTheme get accountListTheme => AccountListTheme(
currentAccountBackgroundColor: dialogBackgroundColor,
currentAccountTextColor: primaryColor,
currentAccountAmountColor: receivePageTheme.iconsColor,
tilesAmountColor: receivePageTheme.iconsColor,
tilesBackgroundColor: PaletteDark.darkOceanBlue,
tilesTextColor: Colors.white);
@override
ReceivePageTheme get receivePageTheme => ReceivePageTheme(
currentTileBackgroundColor: PaletteDark.lightOceanBlue,
currentTileTextColor: Palette.blueCraiola,
tilesBackgroundColor: PaletteDark.nightBlue,
tilesTextColor: Colors.white,
iconsBackgroundColor: PaletteDark.distantNightBlue,
iconsColor: Colors.white,
amountBottomBorderColor: PaletteDark.darkGrey,
amountHintTextColor: PaletteDark.cyanBlue);
@override
QRCodeTheme get qrCodeTheme => QRCodeTheme(
qrCodeColor: PaletteDark.lightBlueGrey,
qrWidgetCopyButtonColor: PaletteDark.lightBlueGrey);
@override
ThemeData get themeData => super.themeData.copyWith(
dividerColor: PaletteDark.dividerColor,
hintColor: PaletteDark.pigeonBlue,
disabledColor: PaletteDark.deepVioletBlue,
dialogTheme: super
.themeData
.dialogTheme
.copyWith(backgroundColor: PaletteDark.nightBlue));
}

View file

@ -0,0 +1,58 @@
import 'package:flutter/material.dart';
class AccountListTheme extends ThemeExtension<AccountListTheme> {
final Color tilesTextColor;
final Color tilesAmountColor;
final Color tilesBackgroundColor;
final Color currentAccountBackgroundColor;
final Color currentAccountTextColor;
final Color currentAccountAmountColor;
AccountListTheme(
{required this.tilesTextColor,
required this.tilesAmountColor,
required this.tilesBackgroundColor,
required this.currentAccountBackgroundColor,
required this.currentAccountTextColor,
required this.currentAccountAmountColor});
@override
AccountListTheme copyWith(
{Color? tilesTextColor,
Color? tilesAmountColor,
Color? tilesBackgroundColor,
Color? currentAccountBackgroundColor,
Color? currentAccountTextColor,
Color? currentAccountAmountColor}) =>
AccountListTheme(
tilesTextColor: tilesTextColor ?? this.tilesTextColor,
tilesAmountColor: tilesAmountColor ?? this.tilesAmountColor,
tilesBackgroundColor:
tilesBackgroundColor ?? this.tilesBackgroundColor,
currentAccountBackgroundColor: currentAccountBackgroundColor ??
this.currentAccountBackgroundColor,
currentAccountTextColor:
currentAccountTextColor ?? this.currentAccountTextColor,
currentAccountAmountColor:
currentAccountAmountColor ?? this.currentAccountAmountColor);
@override
AccountListTheme lerp(ThemeExtension<AccountListTheme>? other, double t) {
if (other is! AccountListTheme) {
return this;
}
return AccountListTheme(
tilesTextColor: Color.lerp(tilesTextColor, other.tilesTextColor, t)!,
tilesAmountColor:
Color.lerp(tilesAmountColor, other.tilesAmountColor, t)!,
tilesBackgroundColor:
Color.lerp(tilesBackgroundColor, other.tilesBackgroundColor, t)!,
currentAccountBackgroundColor: Color.lerp(currentAccountBackgroundColor,
other.currentAccountBackgroundColor, t)!,
currentAccountTextColor: Color.lerp(
currentAccountTextColor, other.currentAccountTextColor, t)!,
currentAccountAmountColor: Color.lerp(
currentAccountAmountColor, other.currentAccountAmountColor, t)!);
}
}

View file

@ -0,0 +1,24 @@
import 'package:flutter/material.dart';
class AddressTheme extends ThemeExtension<AddressTheme> {
final Color actionButtonColor;
AddressTheme({required this.actionButtonColor});
@override
AddressTheme copyWith({Color? actionButtonColor}) => AddressTheme(
actionButtonColor: actionButtonColor ?? this.actionButtonColor);
@override
AddressTheme lerp(ThemeExtension<AddressTheme>? other, double t) {
if (other is! AddressTheme) {
return this;
}
return AddressTheme(
actionButtonColor:
Color.lerp(actionButtonColor, other.actionButtonColor, t) ??
actionButtonColor,
);
}
}

View file

@ -0,0 +1,28 @@
import 'package:flutter/material.dart';
class AlertTheme extends ThemeExtension<AlertTheme> {
final Color leftButtonTextColor;
final Color backdropColor;
AlertTheme({required this.leftButtonTextColor, required this.backdropColor});
@override
AlertTheme copyWith({Color? leftButtonTextColor, Color? backdropColor}) =>
AlertTheme(
leftButtonTextColor: leftButtonTextColor ?? this.leftButtonTextColor,
backdropColor: backdropColor ?? this.backdropColor);
@override
AlertTheme lerp(ThemeExtension<AlertTheme>? other, double t) {
if (other is! AlertTheme) {
return this;
}
return AlertTheme(
leftButtonTextColor:
Color.lerp(leftButtonTextColor, other.leftButtonTextColor, t) ??
leftButtonTextColor,
backdropColor:
Color.lerp(backdropColor, other.backdropColor, t) ?? backdropColor);
}
}

View file

@ -0,0 +1,53 @@
import 'package:flutter/material.dart';
class BalancePageTheme extends ThemeExtension<BalancePageTheme> {
final Color textColor;
final Color labelTextColor;
final Color balanceAmountColor;
final Color assetTitleColor;
final Color cardBorderColor;
BalancePageTheme(
{required this.labelTextColor,
required this.textColor,
Color? balanceAmountColor,
Color? assetTitleColor,
this.cardBorderColor = Colors.transparent})
: this.balanceAmountColor = balanceAmountColor ?? textColor,
this.assetTitleColor = assetTitleColor ?? textColor;
@override
BalancePageTheme copyWith(
{Color? textColor,
Color? labelTextColor,
Color? balanceAmountColor,
Color? assetTitleColor,
Color? cardBorderColor}) =>
BalancePageTheme(
textColor: textColor ?? this.textColor,
labelTextColor: labelTextColor ?? this.labelTextColor,
balanceAmountColor: balanceAmountColor ?? this.balanceAmountColor,
assetTitleColor: assetTitleColor ?? this.assetTitleColor,
cardBorderColor: cardBorderColor ?? this.cardBorderColor);
@override
BalancePageTheme lerp(ThemeExtension<BalancePageTheme>? other, double t) {
if (other is! BalancePageTheme) {
return this;
}
return BalancePageTheme(
textColor: Color.lerp(textColor, other.textColor, t) ?? textColor,
labelTextColor: Color.lerp(labelTextColor, other.labelTextColor, t) ??
labelTextColor,
balanceAmountColor:
Color.lerp(balanceAmountColor, other.balanceAmountColor, t) ??
balanceAmountColor,
assetTitleColor:
Color.lerp(assetTitleColor, other.assetTitleColor, t) ??
assetTitleColor,
cardBorderColor:
Color.lerp(cardBorderColor, other.cardBorderColor, t) ??
cardBorderColor);
}
}

View file

@ -0,0 +1,28 @@
import 'package:flutter/material.dart';
class CakeScrollbarTheme extends ThemeExtension<CakeScrollbarTheme> {
final Color thumbColor;
final Color trackColor;
CakeScrollbarTheme({required this.thumbColor, required this.trackColor});
@override
Object get type => CakeScrollbarTheme;
@override
CakeScrollbarTheme copyWith({Color? thumbColor, Color? trackColor}) =>
CakeScrollbarTheme(
thumbColor: thumbColor ?? this.thumbColor,
trackColor: trackColor ?? this.trackColor);
@override
CakeScrollbarTheme lerp(ThemeExtension<CakeScrollbarTheme>? other, double t) {
if (other is! CakeScrollbarTheme) {
return this;
}
return CakeScrollbarTheme(
thumbColor: Color.lerp(thumbColor, other.thumbColor, t) ?? thumbColor,
trackColor: Color.lerp(trackColor, other.trackColor, t) ?? trackColor);
}
}

View file

@ -0,0 +1,65 @@
import 'package:flutter/material.dart';
class CakeTextTheme extends ThemeExtension<CakeTextTheme> {
final Color secondaryTextColor;
final Color textfieldUnderlineColor;
final Color titleColor;
final Color addressButtonBorderColor;
final Color dateSectionRowColor;
final Color buttonTextColor;
final Color buttonSecondaryTextColor;
CakeTextTheme(
{required this.secondaryTextColor,
required this.textfieldUnderlineColor,
required this.titleColor,
required this.addressButtonBorderColor,
required this.dateSectionRowColor,
Color? buttonTextColor,
Color? buttonSecondaryTextColor})
: buttonTextColor = buttonTextColor ?? titleColor,
buttonSecondaryTextColor =
buttonSecondaryTextColor ?? secondaryTextColor;
@override
CakeTextTheme copyWith(
{Color? secondaryTextColor,
Color? textfieldUnderlineColor,
Color? titleColor,
Color? addressButtonBorderColor,
Color? dateSectionRowColor,
Color? buttonTextColor,
Color? buttonSecondaryTextColor}) =>
CakeTextTheme(
secondaryTextColor: secondaryTextColor ?? this.secondaryTextColor,
textfieldUnderlineColor:
textfieldUnderlineColor ?? this.textfieldUnderlineColor,
titleColor: titleColor ?? this.titleColor,
addressButtonBorderColor:
addressButtonBorderColor ?? this.addressButtonBorderColor,
dateSectionRowColor: dateSectionRowColor ?? this.dateSectionRowColor,
buttonTextColor: buttonTextColor ?? this.buttonTextColor,
buttonSecondaryTextColor:
buttonSecondaryTextColor ?? this.buttonSecondaryTextColor);
@override
CakeTextTheme lerp(ThemeExtension<CakeTextTheme>? other, double t) {
if (other is! CakeTextTheme) {
return this;
}
return CakeTextTheme(
secondaryTextColor:
Color.lerp(secondaryTextColor, other.secondaryTextColor, t)!,
textfieldUnderlineColor: Color.lerp(
textfieldUnderlineColor, other.textfieldUnderlineColor, t)!,
titleColor: Color.lerp(titleColor, other.titleColor, t)!,
addressButtonBorderColor: Color.lerp(
addressButtonBorderColor, other.addressButtonBorderColor, t)!,
dateSectionRowColor:
Color.lerp(dateSectionRowColor, other.dateSectionRowColor, t)!,
buttonTextColor: Color.lerp(buttonTextColor, other.buttonTextColor, t)!,
buttonSecondaryTextColor: Color.lerp(
buttonSecondaryTextColor, other.buttonSecondaryTextColor, t)!);
}
}

View file

@ -0,0 +1,79 @@
import 'package:cake_wallet/themes/extensions/indicator_dot_theme.dart';
import 'package:flutter/material.dart';
class DashboardPageTheme extends ThemeExtension<DashboardPageTheme> {
final Color firstGradientBackgroundColor;
final Color secondGradientBackgroundColor;
final Color thirdGradientBackgroundColor;
final Color textColor;
final Color cardTextColor;
final Color pageTitleTextColor;
final Color mainActionsIconColor;
final IndicatorDotTheme indicatorDotTheme;
DashboardPageTheme(
{required this.firstGradientBackgroundColor,
required this.secondGradientBackgroundColor,
required this.thirdGradientBackgroundColor,
required this.textColor,
required this.indicatorDotTheme,
Color? mainActionsIconColor,
Color? pageTitleTextColor,
Color? cardTextColor})
: pageTitleTextColor = pageTitleTextColor ?? textColor,
mainActionsIconColor = mainActionsIconColor ?? textColor,
cardTextColor = cardTextColor ?? textColor;
@override
DashboardPageTheme copyWith(
{Color? firstGradientBackgroundColor,
Color? secondGradientBackgroundColor,
Color? thirdGradientBackgroundColor,
Color? textColor,
IndicatorDotTheme? indicatorDotTheme,
Color? pageTitleTextColor,
Color? mainActionsIconColor,
Color? cardTextColor}) =>
DashboardPageTheme(
firstGradientBackgroundColor:
firstGradientBackgroundColor ?? this.firstGradientBackgroundColor,
secondGradientBackgroundColor: secondGradientBackgroundColor ??
this.secondGradientBackgroundColor,
thirdGradientBackgroundColor:
thirdGradientBackgroundColor ?? this.thirdGradientBackgroundColor,
textColor: textColor ?? this.textColor,
indicatorDotTheme: indicatorDotTheme ?? this.indicatorDotTheme,
pageTitleTextColor: pageTitleTextColor ?? this.pageTitleTextColor,
mainActionsIconColor:
mainActionsIconColor ?? this.mainActionsIconColor,
cardTextColor: cardTextColor ?? this.cardTextColor);
@override
DashboardPageTheme lerp(ThemeExtension<DashboardPageTheme>? other, double t) {
if (other is! DashboardPageTheme) {
return this;
}
return DashboardPageTheme(
firstGradientBackgroundColor: Color.lerp(firstGradientBackgroundColor,
other.firstGradientBackgroundColor, t) ??
firstGradientBackgroundColor,
secondGradientBackgroundColor: Color.lerp(secondGradientBackgroundColor,
other.secondGradientBackgroundColor, t) ??
secondGradientBackgroundColor,
thirdGradientBackgroundColor: Color.lerp(thirdGradientBackgroundColor,
other.thirdGradientBackgroundColor, t) ??
thirdGradientBackgroundColor,
textColor: Color.lerp(textColor, other.textColor, t) ?? textColor,
indicatorDotTheme: indicatorDotTheme.lerp(other.indicatorDotTheme, t),
pageTitleTextColor:
Color.lerp(pageTitleTextColor, other.pageTitleTextColor, t) ??
pageTitleTextColor,
mainActionsIconColor:
Color.lerp(mainActionsIconColor, other.mainActionsIconColor, t) ??
mainActionsIconColor,
cardTextColor:
Color.lerp(cardTextColor, other.cardTextColor, t) ?? cardTextColor);
}
}

View file

@ -0,0 +1,88 @@
import 'package:flutter/material.dart';
class ExchangePageTheme extends ThemeExtension<ExchangePageTheme> {
final Color hintTextColor;
final Color receiveAmountColor;
final Color firstGradientTopPanelColor;
final Color secondGradientTopPanelColor;
final Color firstGradientBottomPanelColor;
final Color secondGradientBottomPanelColor;
final Color textFieldBorderTopPanelColor;
final Color textFieldBorderBottomPanelColor;
final Color textFieldButtonColor;
final Color buttonBackgroundColor;
final Color qrCodeColor;
final Color dividerCodeColor;
ExchangePageTheme(
{required this.hintTextColor,
required this.receiveAmountColor,
required this.firstGradientTopPanelColor,
required this.secondGradientTopPanelColor,
required this.firstGradientBottomPanelColor,
required this.secondGradientBottomPanelColor,
required this.textFieldBorderTopPanelColor,
required this.textFieldBorderBottomPanelColor,
required this.textFieldButtonColor,
required this.buttonBackgroundColor,
required this.qrCodeColor,
required this.dividerCodeColor});
@override
ExchangePageTheme copyWith({
Color? hintTextColor,
Color? receiveAmountColor,
Color? firstGradientTopPanelColor,
Color? secondGradientTopPanelColor,
Color? firstGradientBottomPanelColor,
Color? secondGradientBottomPanelColor,
Color? textFieldBorderTopPanelColor,
Color? textFieldBorderBottomPanelColor,
Color? textFieldButtonColor,
Color? buttonBackgroundColor,
Color? qrCodeColor,
Color? dividerCodeColor,
}) =>
ExchangePageTheme(
hintTextColor: hintTextColor ?? this.hintTextColor,
receiveAmountColor: receiveAmountColor ?? this.receiveAmountColor,
firstGradientTopPanelColor:
firstGradientTopPanelColor ?? this.firstGradientTopPanelColor,
secondGradientTopPanelColor:
secondGradientTopPanelColor ?? this.secondGradientTopPanelColor,
firstGradientBottomPanelColor: firstGradientBottomPanelColor ??
this.firstGradientBottomPanelColor,
secondGradientBottomPanelColor: secondGradientBottomPanelColor ??
this.secondGradientBottomPanelColor,
textFieldBorderTopPanelColor:
textFieldBorderTopPanelColor ?? this.textFieldBorderTopPanelColor,
textFieldBorderBottomPanelColor: textFieldBorderBottomPanelColor ??
this.textFieldBorderBottomPanelColor,
textFieldButtonColor:
textFieldButtonColor ?? this.textFieldButtonColor,
buttonBackgroundColor:
buttonBackgroundColor ?? this.buttonBackgroundColor,
qrCodeColor: qrCodeColor ?? this.qrCodeColor,
dividerCodeColor: dividerCodeColor ?? this.dividerCodeColor);
@override
ExchangePageTheme lerp(ThemeExtension<ExchangePageTheme>? other, double t) {
if (other is! ExchangePageTheme) {
return this;
}
return ExchangePageTheme(
hintTextColor: Color.lerp(hintTextColor, other.hintTextColor, t) ?? hintTextColor,
receiveAmountColor: Color.lerp(receiveAmountColor, other.receiveAmountColor, t) ?? receiveAmountColor,
firstGradientTopPanelColor: Color.lerp(firstGradientTopPanelColor, other.firstGradientTopPanelColor, t) ?? firstGradientTopPanelColor,
secondGradientTopPanelColor: Color.lerp(secondGradientTopPanelColor, other.secondGradientTopPanelColor, t) ?? secondGradientTopPanelColor,
firstGradientBottomPanelColor: Color.lerp(firstGradientBottomPanelColor, other.firstGradientBottomPanelColor, t) ?? firstGradientBottomPanelColor,
secondGradientBottomPanelColor: Color.lerp(secondGradientBottomPanelColor, other.secondGradientBottomPanelColor, t) ?? secondGradientBottomPanelColor,
textFieldBorderTopPanelColor: Color.lerp(textFieldBorderTopPanelColor, other.textFieldBorderTopPanelColor, t) ?? textFieldBorderTopPanelColor,
textFieldBorderBottomPanelColor: Color.lerp(textFieldBorderBottomPanelColor, other.textFieldBorderBottomPanelColor, t) ?? textFieldBorderBottomPanelColor,
textFieldButtonColor: Color.lerp(textFieldButtonColor, other.textFieldButtonColor, t) ?? textFieldButtonColor,
buttonBackgroundColor: Color.lerp(buttonBackgroundColor, other.buttonBackgroundColor, t) ?? buttonBackgroundColor,
qrCodeColor: Color.lerp(qrCodeColor, other.qrCodeColor, t) ?? qrCodeColor,
dividerCodeColor: Color.lerp(dividerCodeColor, other.dividerCodeColor, t) ?? dividerCodeColor);
}
}

View file

@ -0,0 +1,68 @@
import 'package:flutter/material.dart';
class FilterTheme extends ThemeExtension<FilterTheme> {
final Color checkboxFirstGradientColor;
final Color checkboxSecondGradientColor;
final Color checkboxBoundsColor;
final Color checkboxBackgroundColor;
final Color titlesColor;
final Color buttonColor;
final Color iconColor;
FilterTheme(
{required this.checkboxFirstGradientColor,
required this.checkboxSecondGradientColor,
required this.checkboxBoundsColor,
required this.checkboxBackgroundColor,
required this.titlesColor,
required this.buttonColor,
required this.iconColor});
@override
FilterTheme copyWith({
Color? checkboxFirstGradientColor,
Color? checkboxSecondGradientColor,
Color? checkboxBoundsColor,
Color? checkboxBackgroundColor,
Color? titlesColor,
Color? buttonColor,
Color? iconColor,
}) =>
FilterTheme(
checkboxFirstGradientColor:
checkboxFirstGradientColor ?? this.checkboxFirstGradientColor,
checkboxSecondGradientColor:
checkboxSecondGradientColor ?? this.checkboxSecondGradientColor,
checkboxBoundsColor: checkboxBoundsColor ?? this.checkboxBoundsColor,
checkboxBackgroundColor:
checkboxBackgroundColor ?? this.checkboxBackgroundColor,
titlesColor: titlesColor ?? this.titlesColor,
buttonColor: buttonColor ?? this.buttonColor,
iconColor: iconColor ?? this.iconColor);
@override
FilterTheme lerp(ThemeExtension<FilterTheme>? other, double t) {
if (other is! FilterTheme) {
return this;
}
return FilterTheme(
checkboxFirstGradientColor: Color.lerp(checkboxFirstGradientColor,
other.checkboxFirstGradientColor, t) ??
this.checkboxFirstGradientColor,
checkboxSecondGradientColor: Color.lerp(checkboxSecondGradientColor,
other.checkboxSecondGradientColor, t) ??
this.checkboxSecondGradientColor,
checkboxBoundsColor:
Color.lerp(checkboxBoundsColor, other.checkboxBoundsColor, t) ??
this.checkboxBoundsColor,
checkboxBackgroundColor: Color.lerp(
checkboxBackgroundColor, other.checkboxBackgroundColor, t) ??
this.checkboxBackgroundColor,
titlesColor:
Color.lerp(titlesColor, other.titlesColor, t) ?? this.titlesColor,
buttonColor:
Color.lerp(buttonColor, other.buttonColor, t) ?? this.buttonColor,
iconColor: Color.lerp(iconColor, other.iconColor, t) ?? this.iconColor);
}
}

View file

@ -0,0 +1,30 @@
import 'package:flutter/material.dart';
class IndicatorDotTheme extends ThemeExtension<IndicatorDotTheme> {
final Color indicatorColor;
final Color activeIndicatorColor;
IndicatorDotTheme(
{required this.indicatorColor, required this.activeIndicatorColor});
@override
IndicatorDotTheme copyWith(
{Color? indicatorColor, Color? actionButtonColor}) =>
IndicatorDotTheme(
indicatorColor: indicatorColor ?? this.indicatorColor,
activeIndicatorColor: actionButtonColor ?? this.activeIndicatorColor);
@override
IndicatorDotTheme lerp(ThemeExtension<IndicatorDotTheme>? other, double t) {
if (other is! IndicatorDotTheme) {
return this;
}
return IndicatorDotTheme(
indicatorColor: Color.lerp(indicatorColor, other.indicatorColor, t) ??
indicatorColor,
activeIndicatorColor:
Color.lerp(activeIndicatorColor, other.activeIndicatorColor, t) ??
activeIndicatorColor);
}
}

View file

@ -0,0 +1,21 @@
import 'package:flutter/material.dart';
class InfoTheme extends ThemeExtension<InfoTheme> {
final Color textColor;
InfoTheme({required this.textColor});
@override
InfoTheme copyWith({Color? textColor}) =>
InfoTheme(textColor: textColor ?? this.textColor);
@override
InfoTheme lerp(ThemeExtension<InfoTheme>? other, double t) {
if (other is! InfoTheme) {
return this;
}
return InfoTheme(
textColor: Color.lerp(textColor, other.textColor, t) ?? textColor);
}
}

View file

@ -0,0 +1,26 @@
import 'package:flutter/material.dart';
class KeyboardTheme extends ThemeExtension<KeyboardTheme> {
final Color keyboardBarColor;
KeyboardTheme({required this.keyboardBarColor});
@override
Object get type => KeyboardTheme;
@override
KeyboardTheme copyWith({Color? keyboardBarColor}) => KeyboardTheme(
keyboardBarColor: keyboardBarColor ?? this.keyboardBarColor);
@override
KeyboardTheme lerp(ThemeExtension<KeyboardTheme>? other, double t) {
if (other is! KeyboardTheme) {
return this;
}
return KeyboardTheme(
keyboardBarColor:
Color.lerp(keyboardBarColor, other.keyboardBarColor, t) ??
keyboardBarColor);
}
}

View file

@ -0,0 +1,75 @@
import 'package:flutter/material.dart';
class CakeMenuTheme extends ThemeExtension<CakeMenuTheme> {
final Color headerFirstGradientColor;
final Color headerSecondGradientColor;
final Color subnameTextColor;
final Color dividerColor;
final Color backgroundColor;
final Color iconColor;
final Color settingActionsIconColor;
final Color settingTitleColor;
CakeMenuTheme(
{required this.headerFirstGradientColor,
required this.headerSecondGradientColor,
required this.backgroundColor,
required this.subnameTextColor,
required this.dividerColor,
required this.iconColor,
required this.settingActionsIconColor,
required this.settingTitleColor});
@override
CakeMenuTheme copyWith(
{Color? headerFirstGradientColor,
Color? headerSecondGradientColor,
Color? backgroundColor,
Color? subnameTextColor,
Color? dividerColor,
Color? iconColor,
Color? settingActionsIconColor,
Color? settingTitleColor}) =>
CakeMenuTheme(
headerFirstGradientColor:
headerFirstGradientColor ?? this.headerFirstGradientColor,
headerSecondGradientColor:
headerSecondGradientColor ?? this.headerSecondGradientColor,
backgroundColor: backgroundColor ?? this.backgroundColor,
subnameTextColor: subnameTextColor ?? this.subnameTextColor,
dividerColor: dividerColor ?? this.dividerColor,
iconColor: iconColor ?? this.iconColor,
settingActionsIconColor:
settingActionsIconColor ?? this.settingActionsIconColor,
settingTitleColor: settingTitleColor ?? this.settingTitleColor);
@override
CakeMenuTheme lerp(ThemeExtension<CakeMenuTheme>? other, double t) {
if (other is! CakeMenuTheme) {
return this;
}
return CakeMenuTheme(
headerFirstGradientColor: Color.lerp(
headerFirstGradientColor, other.headerFirstGradientColor, t) ??
headerFirstGradientColor,
headerSecondGradientColor: Color.lerp(headerSecondGradientColor,
other.headerSecondGradientColor, t) ??
headerSecondGradientColor,
backgroundColor:
Color.lerp(backgroundColor, other.backgroundColor, t) ??
backgroundColor,
subnameTextColor:
Color.lerp(subnameTextColor, other.subnameTextColor, t) ??
subnameTextColor,
dividerColor:
Color.lerp(dividerColor, other.dividerColor, t) ?? dividerColor,
iconColor: Color.lerp(iconColor, other.iconColor, t) ?? iconColor,
settingActionsIconColor: Color.lerp(
settingActionsIconColor, other.settingActionsIconColor, t) ??
settingActionsIconColor,
settingTitleColor: Color.lerp(
settingTitleColor, other.settingTitleColor, t) ??
settingTitleColor);
}
}

View file

@ -0,0 +1,30 @@
import 'package:flutter/material.dart';
class NewWalletTheme extends ThemeExtension<NewWalletTheme> {
final Color hintTextColor;
final Color underlineColor;
NewWalletTheme({required this.hintTextColor, required this.underlineColor});
@override
Object get type => NewWalletTheme;
@override
NewWalletTheme copyWith({Color? hintTextColor, Color? underlineColor}) =>
NewWalletTheme(
hintTextColor: hintTextColor ?? this.hintTextColor,
underlineColor: underlineColor ?? this.underlineColor);
@override
NewWalletTheme lerp(ThemeExtension<NewWalletTheme>? other, double t) {
if (other is! NewWalletTheme) {
return this;
}
return NewWalletTheme(
hintTextColor:
Color.lerp(hintTextColor, other.hintTextColor, t) ?? hintTextColor,
underlineColor: Color.lerp(underlineColor, other.underlineColor, t) ??
underlineColor);
}
}

View file

@ -0,0 +1,21 @@
import 'package:flutter/material.dart';
class OrderTheme extends ThemeExtension<OrderTheme> {
final Color iconColor;
OrderTheme({required this.iconColor});
@override
OrderTheme copyWith({Color? iconColor}) =>
OrderTheme(iconColor: iconColor ?? this.iconColor);
@override
OrderTheme lerp(ThemeExtension<OrderTheme>? other, double t) {
if (other is! OrderTheme) {
return this;
}
return OrderTheme(
iconColor: Color.lerp(iconColor, other.iconColor, t) ?? iconColor);
}
}

View file

@ -0,0 +1,54 @@
import 'package:flutter/material.dart';
class PickerTheme extends ThemeExtension<PickerTheme> {
final Color dividerColor;
final Color? searchIconColor;
final Color searchBackgroundFillColor;
final Color searchTextColor;
final Color? searchHintColor;
PickerTheme(
{required this.dividerColor,
this.searchIconColor,
required this.searchBackgroundFillColor,
required this.searchTextColor,
this.searchHintColor});
@override
PickerTheme copyWith(
{Color? dividerColor,
Color? searchIconColor,
Color? searchBackgroundFillColor,
Color? searchTextColor,
Color? searchHintColor}) =>
PickerTheme(
dividerColor: dividerColor ?? this.dividerColor,
searchIconColor: searchIconColor ?? this.searchIconColor,
searchBackgroundFillColor:
searchBackgroundFillColor ?? this.searchBackgroundFillColor,
searchTextColor: searchTextColor ?? this.searchTextColor,
searchHintColor: searchHintColor ?? this.searchHintColor);
@override
PickerTheme lerp(ThemeExtension<PickerTheme>? other, double t) {
if (other is! PickerTheme) {
return this;
}
return PickerTheme(
dividerColor:
Color.lerp(dividerColor, other.dividerColor, t) ?? dividerColor,
searchIconColor:
Color.lerp(searchIconColor, other.searchIconColor, t) ??
searchIconColor,
searchBackgroundFillColor: Color.lerp(searchBackgroundFillColor,
other.searchBackgroundFillColor, t) ??
searchBackgroundFillColor,
searchTextColor:
Color.lerp(searchTextColor, other.searchTextColor, t) ??
searchTextColor,
searchHintColor:
Color.lerp(searchHintColor, other.searchHintColor, t) ??
searchHintColor);
}
}

View file

@ -0,0 +1,28 @@
import 'package:flutter/material.dart';
class PinCodeTheme extends ThemeExtension<PinCodeTheme> {
final Color indicatorsColor;
final Color switchColor;
PinCodeTheme({required this.indicatorsColor, required this.switchColor});
@override
PinCodeTheme copyWith({Color? indicatorsColor, Color? switchColor}) =>
PinCodeTheme(
indicatorsColor: indicatorsColor ?? this.indicatorsColor,
switchColor: switchColor ?? this.switchColor);
@override
PinCodeTheme lerp(ThemeExtension<PinCodeTheme>? other, double t) {
if (other is! PinCodeTheme) {
return this;
}
return PinCodeTheme(
indicatorsColor:
Color.lerp(indicatorsColor, other.indicatorsColor, t) ??
indicatorsColor,
switchColor:
Color.lerp(switchColor, other.switchColor, t) ?? switchColor);
}
}

View file

@ -0,0 +1,20 @@
import 'package:flutter/material.dart';
class PlaceholderTheme extends ThemeExtension<PlaceholderTheme> {
final Color color;
PlaceholderTheme({required this.color});
@override
PlaceholderTheme copyWith({Color? color}) =>
PlaceholderTheme(color: color ?? this.color);
@override
PlaceholderTheme lerp(ThemeExtension<PlaceholderTheme>? other, double t) {
if (other is! PlaceholderTheme) {
return this;
}
return PlaceholderTheme(color: Color.lerp(color, other.color, t) ?? color);
}
}

View file

@ -0,0 +1,28 @@
import 'package:flutter/material.dart';
class QRCodeTheme extends ThemeExtension<QRCodeTheme> {
final Color qrCodeColor;
final Color qrWidgetCopyButtonColor;
QRCodeTheme(
{required this.qrCodeColor, required this.qrWidgetCopyButtonColor});
@override
QRCodeTheme copyWith({Color? qrCodeColor, Color? qrWidgetCopyButtonColor}) =>
QRCodeTheme(
qrCodeColor: qrCodeColor ?? this.qrCodeColor,
qrWidgetCopyButtonColor:
qrWidgetCopyButtonColor ?? this.qrWidgetCopyButtonColor);
@override
QRCodeTheme lerp(ThemeExtension<QRCodeTheme>? other, double t) {
if (other is! QRCodeTheme) {
return this;
}
return QRCodeTheme(
qrCodeColor: Color.lerp(qrCodeColor, other.qrCodeColor, t)!,
qrWidgetCopyButtonColor: Color.lerp(
qrWidgetCopyButtonColor, other.qrWidgetCopyButtonColor, t)!);
}
}

View file

@ -0,0 +1,70 @@
import 'package:flutter/material.dart';
class ReceivePageTheme extends ThemeExtension<ReceivePageTheme> {
final Color currentTileBackgroundColor;
final Color currentTileTextColor;
final Color tilesBackgroundColor;
final Color tilesTextColor;
final Color iconsBackgroundColor;
final Color iconsColor;
final Color amountBottomBorderColor;
final Color amountHintTextColor;
ReceivePageTheme(
{required this.currentTileBackgroundColor,
required this.currentTileTextColor,
required this.tilesBackgroundColor,
required this.tilesTextColor,
required this.iconsBackgroundColor,
required this.iconsColor,
required this.amountBottomBorderColor,
required this.amountHintTextColor});
@override
ReceivePageTheme copyWith(
{Color? currentTileBackgroundColor,
Color? currentTileTextColor,
Color? tilesBackgroundColor,
Color? tilesTextColor,
Color? iconsBackgroundColor,
Color? iconsColor,
Color? amountBottomBorderColor,
Color? amountHintTextColor}) =>
ReceivePageTheme(
currentTileBackgroundColor:
currentTileBackgroundColor ?? this.currentTileBackgroundColor,
currentTileTextColor:
currentTileTextColor ?? this.currentTileTextColor,
tilesBackgroundColor:
tilesBackgroundColor ?? this.tilesBackgroundColor,
tilesTextColor: tilesTextColor ?? this.tilesTextColor,
iconsBackgroundColor:
iconsBackgroundColor ?? this.iconsBackgroundColor,
iconsColor: iconsColor ?? this.iconsColor,
amountBottomBorderColor:
amountBottomBorderColor ?? this.amountBottomBorderColor,
amountHintTextColor: amountHintTextColor ?? this.amountHintTextColor);
@override
ReceivePageTheme lerp(ThemeExtension<ReceivePageTheme>? other, double t) {
if (other is! ReceivePageTheme) {
return this;
}
return ReceivePageTheme(
currentTileBackgroundColor: Color.lerp(
currentTileBackgroundColor, other.currentTileBackgroundColor, t)!,
currentTileTextColor:
Color.lerp(currentTileTextColor, other.currentTileTextColor, t)!,
tilesBackgroundColor:
Color.lerp(tilesBackgroundColor, other.tilesBackgroundColor, t)!,
tilesTextColor: Color.lerp(tilesTextColor, other.tilesTextColor, t)!,
iconsBackgroundColor:
Color.lerp(iconsBackgroundColor, other.iconsBackgroundColor, t)!,
iconsColor: Color.lerp(iconsColor, other.iconsColor, t)!,
amountBottomBorderColor: Color.lerp(
amountBottomBorderColor, other.amountBottomBorderColor, t)!,
amountHintTextColor:
Color.lerp(amountHintTextColor, other.amountHintTextColor, t)!);
}
}

View file

@ -0,0 +1,22 @@
import 'package:flutter/material.dart';
class SeedWidgetTheme extends ThemeExtension<SeedWidgetTheme> {
final Color hintTextColor;
SeedWidgetTheme({required this.hintTextColor});
@override
SeedWidgetTheme copyWith({Color? hintTextColor}) =>
SeedWidgetTheme(hintTextColor: hintTextColor ?? this.hintTextColor);
@override
SeedWidgetTheme lerp(ThemeExtension<SeedWidgetTheme>? other, double t) {
if (other is! SeedWidgetTheme) {
return this;
}
return SeedWidgetTheme(
hintTextColor:
Color.lerp(hintTextColor, other.hintTextColor, t) ?? hintTextColor);
}
}

View file

@ -0,0 +1,117 @@
import 'package:flutter/material.dart';
class SendPageTheme extends ThemeExtension<SendPageTheme> {
final Color templateTitleColor;
final Color templateBackgroundColor;
final Color templateNewTextColor;
final Color templateSelectedCurrencyBackgroundColor;
final Color templateSelectedCurrencyTitleColor;
final Color templateDottedBorderColor;
final Color estimatedFeeColor;
final Color textFieldButtonIconColor;
final Color textFieldButtonColor;
final Color textFieldHintColor;
final Color textFieldBorderColor;
final Color firstGradientColor;
final Color secondGradientColor;
final Color indicatorDotColor;
SendPageTheme(
{required this.templateTitleColor,
required this.templateBackgroundColor,
required this.templateNewTextColor,
required this.templateSelectedCurrencyBackgroundColor,
required this.templateSelectedCurrencyTitleColor,
required this.templateDottedBorderColor,
required this.estimatedFeeColor,
required this.textFieldButtonIconColor,
required this.textFieldButtonColor,
required this.textFieldHintColor,
required this.textFieldBorderColor,
required this.firstGradientColor,
required this.secondGradientColor,
required this.indicatorDotColor});
@override
SendPageTheme copyWith(
{Color? templateTitleColor,
Color? templateBackgroundColor,
Color? templateNewTextColor,
Color? templateSelectedCurrencyBackgroundColor,
Color? templateSelectedCurrencyTitleColor,
Color? templateDottedBorderColor,
Color? estimatedFeeColor,
Color? textFieldButtonIconColor,
Color? textFieldButtonColor,
Color? textFieldHintColor,
Color? textFieldBorderColor,
Color? firstGradientColor,
Color? secondGradientColor,
Color? indicatorDotColor}) =>
SendPageTheme(
templateTitleColor: templateTitleColor ?? this.templateTitleColor,
templateBackgroundColor:
templateBackgroundColor ?? this.templateBackgroundColor,
templateNewTextColor:
templateNewTextColor ?? this.templateNewTextColor,
templateSelectedCurrencyBackgroundColor:
templateSelectedCurrencyBackgroundColor ??
this.templateSelectedCurrencyBackgroundColor,
templateSelectedCurrencyTitleColor:
templateSelectedCurrencyTitleColor ??
this.templateSelectedCurrencyTitleColor,
templateDottedBorderColor:
templateDottedBorderColor ?? this.templateDottedBorderColor,
estimatedFeeColor: estimatedFeeColor ?? this.estimatedFeeColor,
textFieldButtonIconColor:
textFieldButtonIconColor ?? this.textFieldButtonIconColor,
textFieldButtonColor:
textFieldButtonColor ?? this.textFieldButtonColor,
textFieldHintColor: textFieldHintColor ?? this.textFieldHintColor,
textFieldBorderColor:
textFieldBorderColor ?? this.textFieldBorderColor,
firstGradientColor: firstGradientColor ?? this.firstGradientColor,
secondGradientColor: secondGradientColor ?? this.secondGradientColor,
indicatorDotColor: indicatorDotColor ?? this.indicatorDotColor);
@override
SendPageTheme lerp(ThemeExtension<SendPageTheme>? other, double t) {
if (other is! SendPageTheme) {
return this;
}
return SendPageTheme(
templateTitleColor:
Color.lerp(templateTitleColor, other.templateTitleColor, t)!,
templateBackgroundColor: Color.lerp(
templateBackgroundColor, other.templateBackgroundColor, t)!,
templateNewTextColor:
Color.lerp(templateNewTextColor, other.templateNewTextColor, t)!,
templateSelectedCurrencyBackgroundColor: Color.lerp(
templateSelectedCurrencyBackgroundColor,
other.templateSelectedCurrencyBackgroundColor,
t)!,
templateSelectedCurrencyTitleColor: Color.lerp(
templateSelectedCurrencyTitleColor,
other.templateSelectedCurrencyTitleColor,
t)!,
templateDottedBorderColor: Color.lerp(
templateDottedBorderColor, other.templateDottedBorderColor, t)!,
estimatedFeeColor:
Color.lerp(estimatedFeeColor, other.estimatedFeeColor, t)!,
textFieldButtonIconColor: Color.lerp(
textFieldButtonIconColor, other.textFieldButtonIconColor, t)!,
textFieldButtonColor:
Color.lerp(textFieldButtonColor, other.textFieldButtonColor, t)!,
textFieldHintColor:
Color.lerp(textFieldHintColor, other.textFieldHintColor, t)!,
textFieldBorderColor:
Color.lerp(textFieldBorderColor, other.textFieldBorderColor, t)!,
firstGradientColor:
Color.lerp(firstGradientColor, other.firstGradientColor, t)!,
secondGradientColor:
Color.lerp(secondGradientColor, other.secondGradientColor, t)!,
indicatorDotColor:
Color.lerp(indicatorDotColor, other.indicatorDotColor, t)!);
}
}

View file

@ -0,0 +1,21 @@
import 'package:flutter/material.dart';
class SupportPageTheme extends ThemeExtension<SupportPageTheme> {
final Color iconColor;
SupportPageTheme({required this.iconColor});
@override
SupportPageTheme copyWith({Color? iconColor}) =>
SupportPageTheme(iconColor: iconColor ?? this.iconColor);
@override
SupportPageTheme lerp(ThemeExtension<SupportPageTheme>? other, double t) {
if (other is! SupportPageTheme) {
return this;
}
return SupportPageTheme(
iconColor: Color.lerp(iconColor, other.iconColor, t) ?? iconColor);
}
}

View file

@ -0,0 +1,48 @@
import 'package:flutter/material.dart';
class SyncIndicatorTheme extends ThemeExtension<SyncIndicatorTheme> {
final Color textColor;
final Color syncedBackgroundColor;
final Color notSyncedIconColor;
final Color notSyncedBackgroundColor;
SyncIndicatorTheme(
{required this.textColor,
required this.syncedBackgroundColor,
required this.notSyncedIconColor,
required this.notSyncedBackgroundColor});
@override
SyncIndicatorTheme copyWith({
Color? textColor,
Color? syncedBackgroundColor,
Color? notSyncedIconColor,
Color? notSyncedBackgroundColor,
}) =>
SyncIndicatorTheme(
textColor: textColor ?? this.textColor,
syncedBackgroundColor:
syncedBackgroundColor ?? this.syncedBackgroundColor,
notSyncedIconColor: notSyncedIconColor ?? this.notSyncedIconColor,
notSyncedBackgroundColor:
notSyncedBackgroundColor ?? this.notSyncedBackgroundColor);
@override
SyncIndicatorTheme lerp(ThemeExtension<SyncIndicatorTheme>? other, double t) {
if (other is! SyncIndicatorTheme) {
return this;
}
return SyncIndicatorTheme(
textColor: Color.lerp(textColor, other.textColor, t) ?? textColor,
syncedBackgroundColor:
Color.lerp(syncedBackgroundColor, other.syncedBackgroundColor, t) ??
syncedBackgroundColor,
notSyncedIconColor:
Color.lerp(notSyncedIconColor, other.notSyncedIconColor, t) ??
notSyncedIconColor,
notSyncedBackgroundColor: Color.lerp(
notSyncedBackgroundColor, other.notSyncedBackgroundColor, t) ??
notSyncedBackgroundColor);
}
}

View file

@ -0,0 +1,29 @@
import 'package:flutter/material.dart';
class TransactionTradeTheme extends ThemeExtension<TransactionTradeTheme> {
final Color detailsTitlesColor;
final Color rowsColor;
TransactionTradeTheme(
{required this.detailsTitlesColor, required this.rowsColor});
@override
TransactionTradeTheme copyWith(
{Color? detailsTitlesColor, Color? rowsColor}) =>
TransactionTradeTheme(
detailsTitlesColor: detailsTitlesColor ?? this.detailsTitlesColor,
rowsColor: rowsColor ?? this.rowsColor);
@override
TransactionTradeTheme lerp(
ThemeExtension<TransactionTradeTheme>? other, double t) {
if (other is! TransactionTradeTheme) {
return this;
}
return TransactionTradeTheme(
detailsTitlesColor:
Color.lerp(detailsTitlesColor, other.detailsTitlesColor, t)!,
rowsColor: Color.lerp(rowsColor, other.rowsColor, t)!);
}
}

View file

@ -0,0 +1,38 @@
import 'package:flutter/material.dart';
class WalletListTheme extends ThemeExtension<WalletListTheme> {
final Color restoreWalletButtonTextColor;
final Color createNewWalletButtonBackgroundColor;
WalletListTheme(
{required this.restoreWalletButtonTextColor,
required this.createNewWalletButtonBackgroundColor});
@override
WalletListTheme copyWith(
{Color? restoreWalletButtonTextColor,
Color? createNewWalletButtonBackgroundColor}) =>
WalletListTheme(
restoreWalletButtonTextColor:
restoreWalletButtonTextColor ?? this.restoreWalletButtonTextColor,
createNewWalletButtonBackgroundColor:
createNewWalletButtonBackgroundColor ??
this.createNewWalletButtonBackgroundColor);
@override
WalletListTheme lerp(ThemeExtension<WalletListTheme>? other, double t) {
if (other is! WalletListTheme) {
return this;
}
return WalletListTheme(
restoreWalletButtonTextColor: Color.lerp(restoreWalletButtonTextColor,
other.restoreWalletButtonTextColor, t) ??
restoreWalletButtonTextColor,
createNewWalletButtonBackgroundColor: Color.lerp(
createNewWalletButtonBackgroundColor,
other.createNewWalletButtonBackgroundColor,
t) ??
createNewWalletButtonBackgroundColor);
}
}

View file

@ -0,0 +1,118 @@
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/palette.dart';
import 'package:cake_wallet/themes/extensions/account_list_theme.dart';
import 'package:cake_wallet/themes/extensions/address_theme.dart';
import 'package:cake_wallet/themes/extensions/balance_page_theme.dart';
import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart';
import 'package:cake_wallet/themes/extensions/exchange_page_theme.dart';
import 'package:cake_wallet/themes/extensions/filter_theme.dart';
import 'package:cake_wallet/themes/extensions/indicator_dot_theme.dart';
import 'package:cake_wallet/themes/extensions/menu_theme.dart';
import 'package:cake_wallet/themes/extensions/picker_theme.dart';
import 'package:cake_wallet/themes/extensions/receive_page_theme.dart';
import 'package:cake_wallet/themes/extensions/send_page_theme.dart';
import 'package:cake_wallet/themes/extensions/sync_indicator_theme.dart';
import 'package:cake_wallet/themes/monero_light_theme.dart';
import 'package:flutter/material.dart';
class HighContrastTheme extends MoneroLightTheme {
HighContrastTheme({required int raw}) : super(raw: raw) {
colorScheme = ColorScheme.fromSwatch(
primarySwatch: Colors.grey,
accentColor: primaryColor,
backgroundColor: Colors.white,
cardColor: containerColor,
brightness: Brightness.light);
}
@override
String get title => S.current.high_contrast_theme;
@override
Color get primaryColor => Colors.black;
@override
Color get containerColor => Palette.highContrastGray;
@override
Color get primaryTextColor => colorScheme.onBackground;
@override
Color get dialogBackgroundColor => Colors.white;
@override
CakeTextTheme get cakeTextTheme => super.cakeTextTheme.copyWith(
buttonTextColor: Colors.white,
buttonSecondaryTextColor: Colors.white.withOpacity(0.5));
@override
SyncIndicatorTheme get syncIndicatorStyle =>
super.syncIndicatorStyle.copyWith(
textColor: colorScheme.background,
syncedBackgroundColor: containerColor);
@override
BalancePageTheme get balancePageTheme => super.balancePageTheme.copyWith(
textColor: Colors.white,
labelTextColor: Colors.grey,
assetTitleColor: Colors.white,
balanceAmountColor: Colors.white);
@override
DashboardPageTheme get dashboardPageTheme =>
super.dashboardPageTheme.copyWith(
textColor: Colors.black,
cardTextColor: Colors.white,
mainActionsIconColor: Colors.white,
indicatorDotTheme: IndicatorDotTheme(
indicatorColor: Colors.grey, activeIndicatorColor: Colors.black));
@override
ExchangePageTheme get exchangePageTheme => super
.exchangePageTheme
.copyWith(firstGradientTopPanelColor: containerColor);
@override
SendPageTheme get sendPageTheme => super.sendPageTheme.copyWith(
templateTitleColor: Colors.white,
templateBackgroundColor: Colors.black,
firstGradientColor: containerColor);
@override
AddressTheme get addressTheme =>
super.addressTheme.copyWith(actionButtonColor: Colors.grey);
@override
FilterTheme get filterTheme =>
super.filterTheme.copyWith(iconColor: Colors.white);
@override
CakeMenuTheme get menuTheme => super.menuTheme.copyWith(
settingTitleColor: Colors.black,
headerFirstGradientColor: containerColor,
iconColor: Colors.white);
@override
PickerTheme get pickerTheme => super.pickerTheme.copyWith(
searchIconColor: Colors.white,
searchHintColor: Colors.white,
searchTextColor: Colors.white,
searchBackgroundFillColor: Colors.grey);
@override
AccountListTheme get accountListTheme => super.accountListTheme.copyWith(
tilesTextColor: Colors.black,
tilesBackgroundColor: Colors.white,
currentAccountBackgroundColor: containerColor,
currentAccountTextColor: Colors.white,
currentAccountAmountColor: Colors.white);
@override
ReceivePageTheme get receivePageTheme => super.receivePageTheme.copyWith(
tilesTextColor: Colors.white,
iconsBackgroundColor: Colors.grey,
iconsColor: Colors.black);
@override
ThemeData get themeData => super.themeData.copyWith(
disabledColor: Colors.grey,
dialogTheme:
super.themeData.dialogTheme.copyWith(backgroundColor: Colors.white));
}

View file

@ -1,3 +1,29 @@
import 'package:cake_wallet/themes/extensions/account_list_theme.dart';
import 'package:cake_wallet/themes/extensions/address_theme.dart';
import 'package:cake_wallet/themes/extensions/alert_theme.dart';
import 'package:cake_wallet/themes/extensions/balance_page_theme.dart';
import 'package:cake_wallet/themes/extensions/cake_scrollbar_theme.dart';
import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart';
import 'package:cake_wallet/themes/extensions/exchange_page_theme.dart';
import 'package:cake_wallet/themes/extensions/filter_theme.dart';
import 'package:cake_wallet/themes/extensions/indicator_dot_theme.dart';
import 'package:cake_wallet/themes/extensions/info_theme.dart';
import 'package:cake_wallet/themes/extensions/keyboard_theme.dart';
import 'package:cake_wallet/themes/extensions/menu_theme.dart';
import 'package:cake_wallet/themes/extensions/new_wallet_theme.dart';
import 'package:cake_wallet/themes/extensions/order_theme.dart';
import 'package:cake_wallet/themes/extensions/picker_theme.dart';
import 'package:cake_wallet/themes/extensions/pin_code_theme.dart';
import 'package:cake_wallet/themes/extensions/placeholder_theme.dart';
import 'package:cake_wallet/themes/extensions/qr_code_theme.dart';
import 'package:cake_wallet/themes/extensions/receive_page_theme.dart';
import 'package:cake_wallet/themes/extensions/seed_widget_theme.dart';
import 'package:cake_wallet/themes/extensions/send_page_theme.dart';
import 'package:cake_wallet/themes/extensions/support_page_theme.dart';
import 'package:cake_wallet/themes/extensions/sync_indicator_theme.dart';
import 'package:cake_wallet/themes/extensions/transaction_trade_theme.dart';
import 'package:cake_wallet/themes/extensions/wallet_list_theme.dart';
import 'package:cake_wallet/themes/theme_base.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/palette.dart';
@ -8,268 +34,192 @@ class LightTheme extends ThemeBase {
@override
String get title => S.current.light_theme;
@override
ThemeType get type => ThemeType.light;
ThemeData theme = ThemeData(
fontFamily: 'Lato',
brightness: Brightness.light,
scaffoldBackgroundColor: Colors.white, // second gradient color
primaryColor: Colors.white, // third gradient color
indicatorColor:
PaletteDark.darkCyanBlue.withOpacity(0.67), // page indicator
hoverColor: Palette.darkBlueCraiola, // amount hint text (receive page)
dividerColor: Palette.paleBlue,
hintColor: Palette.gray,
textTheme: TextTheme(
// title -> titleLarge
titleLarge: TextStyle(
color: Palette.darkBlueCraiola, // sync_indicator text
backgroundColor: Palette.blueAlice, // synced sync_indicator
decorationColor: Palette.blueAlice.withOpacity(0.75), // not synced sync_indicator
),
bodySmall: TextStyle(
color: Palette.shineOrange, // not synced light
decorationColor: PaletteDark.wildBlue, // filter icon
),
labelSmall: TextStyle(
color: Palette.blueAlice, // filter button
backgroundColor: PaletteDark.darkCyanBlue, // date section row
decorationColor:
Palette.blueAlice // icons (transaction and trade rows)
),
// subhead -> titleMedium
titleMedium: TextStyle(
color: Palette.blueAlice, // address button border
decorationColor: PaletteDark.lightBlueGrey, // copy button (qr widget)
),
// headline -> headlineSmall
headlineSmall: TextStyle(
color: Colors.white, // qr code
decorationColor: Palette.darkBlueCraiola, // bottom border of amount (receive page)
),
// display1 -> headlineMedium
headlineMedium: TextStyle(
color: PaletteDark.lightBlueGrey, // icons color (receive page)
decorationColor: Palette.moderateLavender, // icons background (receive page)
),
// display2 -> headldisplaySmalline3
displaySmall: TextStyle(
color:
Palette.darkBlueCraiola, // text color of tiles (receive page)
decorationColor:
Palette.blueAlice // background of tiles (receive page)
),
// display3 -> displayMedium
displayMedium: TextStyle(
color: Colors.white, // text color of current tile (receive page),
//decorationColor: Palette.blueCraiola // background of current tile (receive page)
decorationColor: Palette
.blueCraiola // background of current tile (receive page)
),
// display4 -> displayLarge
displayLarge: TextStyle(
color: Palette.violetBlue, // text color of tiles (account list)
decorationColor:
Colors.white // background of tiles (account list)
),
// subtitle -> titleSmall
titleSmall: TextStyle(
color: Palette
.protectiveBlue, // text color of current tile (account list)
decorationColor:
Colors.white // background of current tile (account list)
),
// body -> bodyMedium
bodyMedium: TextStyle(
color: Palette.moderatePurpleBlue, // scrollbar thumb
decorationColor: Palette.periwinkleCraiola // scrollbar background
),
// body2 -> bodyLarge
bodyLarge: TextStyle(
color: Palette.moderateLavender, // menu header
decorationColor: Colors.white, // menu background
)
),
scrollbarTheme: ScrollbarThemeData(
thumbColor: MaterialStateProperty.all(Palette.moderatePurpleBlue),
trackColor: MaterialStateProperty.all(Palette.periwinkleCraiola),
radius: Radius.circular(3),
thickness: MaterialStateProperty.all(6),
thumbVisibility: MaterialStateProperty.all(true),
crossAxisMargin: 6,
),
primaryTextTheme: TextTheme(
// title -> titleLarge
titleLarge: TextStyle(
color: Palette.darkBlueCraiola, // title color
backgroundColor: Palette.wildPeriwinkle // textfield underline
),
bodySmall: TextStyle(
color: PaletteDark.pigeonBlue, // secondary text
decorationColor: Palette.wildLavender // menu divider
),
labelSmall: TextStyle(
color: Palette.darkGray, // transaction/trade details titles
decorationColor: PaletteDark.darkCyanBlue, // placeholder
),
// subhead -> titleMedium
titleMedium: TextStyle(
color: Palette.blueCraiola, // first gradient color (send page)
decorationColor:
Palette.blueGreyCraiola // second gradient color (send page)
),
// headline -> headlineSmall
headlineSmall: TextStyle(
color: Colors.white
.withOpacity(0.5), // text field border color (send page)
decorationColor: Colors.white
.withOpacity(0.5), // text field hint color (send page)
),
// display1 -> headlineMedium
headlineMedium: TextStyle(
color: Colors.white
.withOpacity(0.2), // text field button color (send page)
decorationColor:
Colors.white // text field button icon color (send page)
),
// display2 -> displaySmall
displaySmall: TextStyle(
color: Colors.white.withOpacity(0.5), // estimated fee (send page)
backgroundColor: PaletteDark.darkCyanBlue
.withOpacity(0.67), // dot color for indicator on send page
decorationColor:
Palette.moderateLavender // template dotted border (send page)
),
// display3 -> displayMedium
displayMedium: TextStyle(
color: Palette.darkBlueCraiola, // template new text (send page)
backgroundColor: PaletteDark
.darkNightBlue, // active dot color for indicator on send page
decorationColor:
Palette.blueAlice // template background color (send page)
),
// display4 -> displayLarge
displayLarge: TextStyle(
color: Palette.darkBlueCraiola, // template title (send page)
backgroundColor:
Colors.black, // icon color on order row (moonpay)
decorationColor:
Palette.niagara // receive amount text (exchange page)
),
// subtitle -> titleSmall
titleSmall: TextStyle(
color: Palette
.blueCraiola, // first gradient color top panel (exchange page)
decorationColor: Palette
.blueGreyCraiola // second gradient color top panel (exchange page)
),
// body -> bodyMedium
bodyMedium: TextStyle(
color: Palette.blueCraiola.withOpacity(
0.7), // first gradient color bottom panel (exchange page)
decorationColor: Palette.blueGreyCraiola.withOpacity(
0.7), // second gradient color bottom panel (exchange page)
backgroundColor: Palette.protectiveBlue // alert right button text
),
// body2 -> bodyLarge
bodyLarge: TextStyle(
color: Colors.white.withOpacity(
0.5), // text field border on top panel (exchange page)
decorationColor: Colors.white.withOpacity(
0.5), // text field border on bottom panel (exchange page)
backgroundColor: Palette.brightOrange // alert left button text
)
),
focusColor: Colors.white.withOpacity(0.2), // text field button (exchange page)
accentTextTheme: TextTheme(
// title -> headlititleLargene6
titleLarge: TextStyle(
color: Colors.white, // picker background
backgroundColor: Palette.periwinkleCraiola, // picker divider
decorationColor: Colors.white // dialog background
),
bodySmall: TextStyle(
color: Palette.blueAlice, // container (confirm exchange)
backgroundColor: Palette.blueAlice, // button background (confirm exchange)
decorationColor: Palette.darkBlueCraiola, // text color (information page)
),
// subtitle -> titleSmall
titleSmall: TextStyle(
color: Palette.darkBlueCraiola, // QR code (exchange trade page)
backgroundColor:
Palette.wildPeriwinkle, // divider (exchange trade page)
decorationColor: Palette
.protectiveBlue // crete new wallet button background (wallet list page)
),
// headline -> headlineSmall
headlineSmall: TextStyle(
color: Palette
.moderateLavender, // first gradient color of wallet action buttons (wallet list page)
backgroundColor: Palette
.moderateLavender, // second gradient color of wallet action buttons (wallet list page)
decorationColor: Colors
.white // restore wallet button text color (wallet list page)
),
// subhead -> titleMedium
titleMedium: TextStyle(
color: Palette.darkGray, // titles color (filter widget)
backgroundColor: Palette.periwinkle, // divider color (filter widget)
decorationColor: Colors.white // checkbox background (filter widget)
),
labelSmall: TextStyle(
color: Palette.wildPeriwinkle, // checkbox bounds (filter widget)
decorationColor: Colors.white, // menu subname
),
// display1 -> headlineMedium
headlineMedium: TextStyle(
color: Palette.blueCraiola, // first gradient color (menu header)
decorationColor: Palette.blueGreyCraiola, // second gradient color(menu header)
backgroundColor: PaletteDark.darkNightBlue // active dot color
),
// display2 -> displaySmall
displaySmall: TextStyle(
color:
Palette.shadowWhite, // action button color (address text field)
decorationColor: Palette.darkGray, // hint text (seed widget)
backgroundColor: Palette.darkBlueCraiola
.withOpacity(0.67) // text on balance page
),
// display3 -> displayMedium
displayMedium: TextStyle(
color: Palette.darkGray, // hint text (new wallet page)
decorationColor:
Palette.periwinkleCraiola, // underline (new wallet page)
backgroundColor:
Palette.darkBlueCraiola // menu, icons, balance (dashboard page)
),
// display4 -> displayLarge
displayLarge: TextStyle(
color: Palette.darkGray, // switch background (settings page)
backgroundColor:
Colors.black, // icon color on support page (moonpay, github)
decorationColor:
Colors.white.withOpacity(0.4) // hint text (exchange page)
),
// body -> bodyMedium
bodyMedium: TextStyle(
color: Palette.darkGray, // indicators (PIN code)
decorationColor: Palette.darkGray, // switch (PIN code)
backgroundColor: Colors.white // alert right button
),
// body2 -> bodyLarge
bodyLarge: TextStyle(
color: Palette.protectiveBlue, // primary buttons
decorationColor: Colors.white, // alert left button,
backgroundColor: Palette.dullGray // keyboard bar color
),
),
cardColor: Palette.protectiveBlue // bottom button (action list)
);
@override
Brightness get brightness => Brightness.light;
@override
Color get backgroundColor => Colors.white;
@override
Color get primaryColor => Palette.protectiveBlue;
@override
Color get primaryTextColor => Palette.darkBlueCraiola;
@override
Color get containerColor => Palette.blueAlice;
@override
Color get dialogBackgroundColor => Colors.white;
@override
ThemeData get themeData => theme.copyWith(
colorScheme: theme.colorScheme
.copyWith(background: Colors.white, secondary: Colors.white));
CakeScrollbarTheme get scrollbarTheme => CakeScrollbarTheme(
thumbColor: Palette.moderatePurpleBlue,
trackColor: Palette.periwinkleCraiola);
@override
SyncIndicatorTheme get syncIndicatorStyle => SyncIndicatorTheme(
textColor: Palette.darkBlueCraiola,
syncedBackgroundColor: Palette.blueAlice,
notSyncedIconColor: Palette.shineOrange,
notSyncedBackgroundColor: Palette.blueAlice.withOpacity(0.75));
@override
KeyboardTheme get keyboardTheme =>
KeyboardTheme(keyboardBarColor: Palette.dullGray);
@override
PinCodeTheme get pinCodeTheme => PinCodeTheme(
indicatorsColor: Palette.darkGray, switchColor: Palette.darkGray);
@override
SupportPageTheme get supportPageTheme =>
SupportPageTheme(iconColor: Colors.black);
@override
ExchangePageTheme get exchangePageTheme => ExchangePageTheme(
hintTextColor: Colors.white.withOpacity(0.4),
dividerCodeColor: Palette.wildPeriwinkle,
qrCodeColor: primaryTextColor,
buttonBackgroundColor: containerColor,
textFieldButtonColor: Colors.white.withOpacity(0.2),
textFieldBorderBottomPanelColor: Colors.white.withOpacity(0.5),
textFieldBorderTopPanelColor: Colors.white.withOpacity(0.5),
secondGradientBottomPanelColor: Palette.blueGreyCraiola.withOpacity(0.7),
firstGradientBottomPanelColor: Palette.blueCraiola.withOpacity(0.7),
secondGradientTopPanelColor: Palette.blueGreyCraiola,
firstGradientTopPanelColor: Palette.blueCraiola,
receiveAmountColor: Palette.niagara);
@override
NewWalletTheme get newWalletTheme => NewWalletTheme(
hintTextColor: Palette.darkGray,
underlineColor: Palette.periwinkleCraiola);
@override
AddressTheme get addressTheme =>
AddressTheme(actionButtonColor: Palette.shadowWhite);
@override
DashboardPageTheme get dashboardPageTheme =>
super.dashboardPageTheme.copyWith(
cardTextColor: super.dashboardPageTheme.textColor,
indicatorDotTheme: IndicatorDotTheme(
indicatorColor: PaletteDark.darkCyanBlue.withOpacity(0.67),
activeIndicatorColor: PaletteDark.darkNightBlue));
@override
BalancePageTheme get balancePageTheme => BalancePageTheme(
textColor: dashboardPageTheme.textColor,
labelTextColor: Palette.darkBlueCraiola.withOpacity(0.67));
@override
CakeMenuTheme get menuTheme => CakeMenuTheme(
headerFirstGradientColor: Palette.blueCraiola,
headerSecondGradientColor: Palette.blueGreyCraiola,
backgroundColor: Colors.white,
subnameTextColor: Colors.white,
dividerColor: Palette.wildLavender,
iconColor: Colors.white,
settingTitleColor: receivePageTheme.tilesTextColor,
settingActionsIconColor: Palette.gray);
@override
FilterTheme get filterTheme => FilterTheme(
checkboxFirstGradientColor: Palette.blueCraiola,
checkboxSecondGradientColor: Palette.blueGreyCraiola,
checkboxBoundsColor: Palette.wildPeriwinkle,
checkboxBackgroundColor: Colors.white,
titlesColor: Palette.darkGray,
buttonColor: Palette.blueAlice,
iconColor: PaletteDark.wildBlue);
@override
WalletListTheme get walletListTheme => WalletListTheme(
restoreWalletButtonTextColor: Colors.white,
createNewWalletButtonBackgroundColor: Palette.protectiveBlue);
@override
InfoTheme get infoTheme => InfoTheme(textColor: Palette.darkBlueCraiola);
@override
PickerTheme get pickerTheme => PickerTheme(
dividerColor: Palette.periwinkleCraiola,
searchTextColor: cakeTextTheme.textfieldUnderlineColor,
searchBackgroundFillColor: addressTheme.actionButtonColor);
@override
AlertTheme get alertTheme => AlertTheme(
backdropColor: PaletteDark.darkNightBlue.withOpacity(0.75),
leftButtonTextColor: Palette.brightOrange);
@override
OrderTheme get orderTheme => OrderTheme(iconColor: Colors.black);
@override
SendPageTheme get sendPageTheme => SendPageTheme(
templateTitleColor: Palette.darkBlueCraiola,
templateBackgroundColor: Palette.blueAlice,
templateNewTextColor: Palette.darkBlueCraiola,
templateDottedBorderColor: Palette.moderateLavender,
templateSelectedCurrencyBackgroundColor: Colors.white,
templateSelectedCurrencyTitleColor: primaryColor,
estimatedFeeColor: Colors.white.withOpacity(0.5),
textFieldButtonIconColor: Colors.white,
textFieldButtonColor: Colors.white.withOpacity(0.2),
textFieldHintColor: Colors.white.withOpacity(0.5),
textFieldBorderColor: Colors.white.withOpacity(0.5),
secondGradientColor: Palette.blueGreyCraiola,
firstGradientColor: Palette.blueCraiola,
indicatorDotColor: PaletteDark.darkCyanBlue.withOpacity(0.67));
@override
SeedWidgetTheme get seedWidgetTheme =>
SeedWidgetTheme(hintTextColor: Palette.darkGray);
@override
PlaceholderTheme get placeholderTheme =>
PlaceholderTheme(color: PaletteDark.darkCyanBlue);
@override
TransactionTradeTheme get transactionTradeTheme => TransactionTradeTheme(
detailsTitlesColor: Palette.darkGray, rowsColor: Palette.blueAlice);
@override
CakeTextTheme get cakeTextTheme => CakeTextTheme(
secondaryTextColor: PaletteDark.pigeonBlue,
textfieldUnderlineColor: Palette.wildPeriwinkle,
titleColor: Palette.violetBlue,
addressButtonBorderColor: Palette.blueAlice,
dateSectionRowColor: PaletteDark.darkCyanBlue);
@override
AccountListTheme get accountListTheme => AccountListTheme(
currentAccountBackgroundColor: dialogBackgroundColor,
currentAccountTextColor: primaryColor,
currentAccountAmountColor: receivePageTheme.iconsColor,
tilesBackgroundColor: Colors.white,
tilesAmountColor: receivePageTheme.iconsColor,
tilesTextColor: Palette.violetBlue);
@override
ReceivePageTheme get receivePageTheme => ReceivePageTheme(
currentTileBackgroundColor: Palette.blueCraiola,
currentTileTextColor: Colors.white,
tilesBackgroundColor: Palette.blueAlice,
tilesTextColor: Palette.darkBlueCraiola,
iconsBackgroundColor: Palette.moderateLavender,
iconsColor: PaletteDark.lightBlueGrey,
amountBottomBorderColor: Palette.darkBlueCraiola,
amountHintTextColor: Palette.darkBlueCraiola);
@override
QRCodeTheme get qrCodeTheme => QRCodeTheme(
qrCodeColor: Colors.white,
qrWidgetCopyButtonColor: PaletteDark.lightBlueGrey);
@override
ThemeData get themeData => super.themeData.copyWith(
dividerColor: Palette.paleBlue,
hintColor: Palette.gray,
disabledColor: Palette.darkGray,
dialogTheme:
super.themeData.dialogTheme.copyWith(backgroundColor: Colors.white));
}

View file

@ -0,0 +1,14 @@
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/palette.dart';
import 'package:cake_wallet/themes/monero_dark_theme.dart';
import 'package:flutter/material.dart';
class MatrixGreenTheme extends MoneroDarkTheme {
MatrixGreenTheme({required int raw}) : super(raw: raw);
@override
String get title => S.current.matrix_green_dark_theme;
@override
Color get primaryColor => PaletteDark.matrixGreen;
}

View file

@ -0,0 +1,194 @@
import 'package:cake_wallet/themes/dark_theme.dart';
import 'package:cake_wallet/themes/extensions/account_list_theme.dart';
import 'package:cake_wallet/themes/extensions/address_theme.dart';
import 'package:cake_wallet/themes/extensions/alert_theme.dart';
import 'package:cake_wallet/themes/extensions/balance_page_theme.dart';
import 'package:cake_wallet/themes/extensions/cake_scrollbar_theme.dart';
import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart';
import 'package:cake_wallet/themes/extensions/exchange_page_theme.dart';
import 'package:cake_wallet/themes/extensions/filter_theme.dart';
import 'package:cake_wallet/themes/extensions/indicator_dot_theme.dart';
import 'package:cake_wallet/themes/extensions/info_theme.dart';
import 'package:cake_wallet/themes/extensions/menu_theme.dart';
import 'package:cake_wallet/themes/extensions/new_wallet_theme.dart';
import 'package:cake_wallet/themes/extensions/picker_theme.dart';
import 'package:cake_wallet/themes/extensions/pin_code_theme.dart';
import 'package:cake_wallet/themes/extensions/qr_code_theme.dart';
import 'package:cake_wallet/themes/extensions/receive_page_theme.dart';
import 'package:cake_wallet/themes/extensions/seed_widget_theme.dart';
import 'package:cake_wallet/themes/extensions/send_page_theme.dart';
import 'package:cake_wallet/themes/extensions/sync_indicator_theme.dart';
import 'package:cake_wallet/themes/extensions/transaction_trade_theme.dart';
import 'package:cake_wallet/themes/extensions/wallet_list_theme.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/palette.dart';
import 'package:flutter/material.dart';
class MoneroDarkTheme extends DarkTheme {
MoneroDarkTheme({required int raw}) : super(raw: raw);
@override
String get title => S.current.monero_dark_theme;
@override
Color get backgroundColor => Colors.black;
@override
Color get primaryColor => PaletteDark.moneroOrange;
@override
Color get containerColor => PaletteDark.moneroCard;
@override
Color get dialogBackgroundColor => containerColor;
@override
CakeScrollbarTheme get scrollbarTheme =>
super.scrollbarTheme.copyWith(thumbColor: Colors.grey);
@override
SyncIndicatorTheme get syncIndicatorStyle =>
super.syncIndicatorStyle.copyWith(
textColor: Colors.white,
notSyncedBackgroundColor: Colors.grey.withOpacity(0.2),
syncedBackgroundColor: containerColor);
@override
PinCodeTheme get pinCodeTheme => super
.pinCodeTheme
.copyWith(indicatorsColor: primaryColor, switchColor: Colors.grey);
@override
ExchangePageTheme get exchangePageTheme => super.exchangePageTheme.copyWith(
hintTextColor: Colors.grey,
qrCodeColor: primaryTextColor,
buttonBackgroundColor: colorScheme.surfaceVariant,
textFieldButtonColor: colorScheme.onInverseSurface,
textFieldBorderBottomPanelColor: colorScheme.surfaceVariant,
textFieldBorderTopPanelColor: colorScheme.surfaceVariant,
secondGradientBottomPanelColor: containerColor,
firstGradientBottomPanelColor: containerColor,
secondGradientTopPanelColor: colorScheme.surface,
firstGradientTopPanelColor: colorScheme.surface,
receiveAmountColor: colorScheme.surfaceVariant);
@override
NewWalletTheme get newWalletTheme => super
.newWalletTheme
.copyWith(hintTextColor: Colors.grey, underlineColor: Colors.grey);
@override
AddressTheme get addressTheme =>
super.addressTheme.copyWith(actionButtonColor: containerColor);
@override
DashboardPageTheme get dashboardPageTheme =>
super.dashboardPageTheme.copyWith(
pageTitleTextColor: primaryColor,
mainActionsIconColor: primaryColor,
indicatorDotTheme: IndicatorDotTheme(
indicatorColor: colorScheme.secondaryContainer,
activeIndicatorColor: colorScheme.inversePrimary));
@override
BalancePageTheme get balancePageTheme => super.balancePageTheme.copyWith(
cardBorderColor: primaryColor.withOpacity(0.2),
labelTextColor: Colors.grey,
balanceAmountColor: primaryColor,
assetTitleColor: primaryColor);
@override
CakeMenuTheme get menuTheme => super.menuTheme.copyWith(
headerFirstGradientColor: containerColor,
headerSecondGradientColor: containerColor,
backgroundColor: containerColor,
subnameTextColor: Colors.grey,
dividerColor: colorScheme.secondaryContainer,
iconColor: colorScheme.secondaryContainer,
settingActionsIconColor: colorScheme.secondaryContainer);
@override
FilterTheme get filterTheme => super.filterTheme.copyWith(
checkboxFirstGradientColor: colorScheme.secondaryContainer,
checkboxSecondGradientColor: colorScheme.inversePrimary,
checkboxBoundsColor: PaletteDark.wildVioletBlue,
checkboxBackgroundColor: PaletteDark.wildVioletBlue.withOpacity(0.3),
buttonColor: containerColor,
iconColor: Colors.grey);
@override
WalletListTheme get walletListTheme => super.walletListTheme.copyWith(
restoreWalletButtonTextColor: Colors.white,
createNewWalletButtonBackgroundColor: primaryColor);
@override
InfoTheme get infoTheme => super.infoTheme.copyWith(textColor: Colors.grey);
@override
PickerTheme get pickerTheme =>
super.pickerTheme.copyWith(dividerColor: Colors.grey.withOpacity(0.5));
@override
SendPageTheme get sendPageTheme => super.sendPageTheme.copyWith(
templateNewTextColor:
dashboardPageTheme.indicatorDotTheme.activeIndicatorColor,
templateTitleColor: primaryTextColor,
templateBackgroundColor: containerColor,
templateDottedBorderColor: colorScheme.primaryContainer,
templateSelectedCurrencyTitleColor: Colors.black,
textFieldButtonIconColor: colorScheme.inverseSurface,
textFieldButtonColor: colorScheme.onInverseSurface,
textFieldHintColor: Colors.grey.withOpacity(0.5),
textFieldBorderColor: Colors.grey.withOpacity(0.5),
secondGradientColor: containerColor,
firstGradientColor: containerColor,
indicatorDotColor: dashboardPageTheme.indicatorDotTheme.indicatorColor);
@override
SeedWidgetTheme get seedWidgetTheme =>
super.seedWidgetTheme.copyWith(hintTextColor: Colors.grey);
@override
TransactionTradeTheme get transactionTradeTheme => super
.transactionTradeTheme
.copyWith(detailsTitlesColor: Colors.grey, rowsColor: containerColor);
@override
CakeTextTheme get cakeTextTheme => super.cakeTextTheme.copyWith(
secondaryTextColor: Colors.grey,
addressButtonBorderColor: primaryColor.withOpacity(0.2),
dateSectionRowColor: Colors.grey,
textfieldUnderlineColor: Colors.grey.withOpacity(0.5));
@override
AccountListTheme get accountListTheme =>
super.accountListTheme.copyWith(tilesBackgroundColor: containerColor);
@override
ReceivePageTheme get receivePageTheme => super.receivePageTheme.copyWith(
currentTileBackgroundColor: primaryColor,
currentTileTextColor: Colors.white,
tilesBackgroundColor: containerColor,
iconsBackgroundColor: colorScheme.onInverseSurface,
iconsColor: colorScheme.inverseSurface,
amountBottomBorderColor: Colors.grey,
amountHintTextColor: Colors.grey);
@override
QRCodeTheme get qrCodeTheme => QRCodeTheme(
qrCodeColor: Colors.grey, qrWidgetCopyButtonColor: Colors.grey);
@override
AlertTheme get alertTheme => super
.alertTheme
.copyWith(backdropColor: colorScheme.surface.withOpacity(0.75));
@override
ThemeData get themeData => super.themeData.copyWith(
dividerColor: pickerTheme.dividerColor,
hintColor: Colors.grey,
dialogTheme:
super.themeData.dialogTheme.copyWith(backgroundColor: containerColor),
appBarTheme: super.themeData.appBarTheme.copyWith(
titleTextStyle: super
.themeData
.appBarTheme
.titleTextStyle!
.copyWith(color: primaryColor)));
}

View file

@ -0,0 +1,159 @@
import 'package:cake_wallet/themes/extensions/account_list_theme.dart';
import 'package:cake_wallet/themes/extensions/address_theme.dart';
import 'package:cake_wallet/themes/extensions/alert_theme.dart';
import 'package:cake_wallet/themes/extensions/balance_page_theme.dart';
import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart';
import 'package:cake_wallet/themes/extensions/exchange_page_theme.dart';
import 'package:cake_wallet/themes/extensions/filter_theme.dart';
import 'package:cake_wallet/themes/extensions/indicator_dot_theme.dart';
import 'package:cake_wallet/themes/extensions/menu_theme.dart';
import 'package:cake_wallet/themes/extensions/new_wallet_theme.dart';
import 'package:cake_wallet/themes/extensions/qr_code_theme.dart';
import 'package:cake_wallet/themes/extensions/receive_page_theme.dart';
import 'package:cake_wallet/themes/extensions/seed_widget_theme.dart';
import 'package:cake_wallet/themes/extensions/send_page_theme.dart';
import 'package:cake_wallet/themes/extensions/sync_indicator_theme.dart';
import 'package:cake_wallet/themes/extensions/transaction_trade_theme.dart';
import 'package:cake_wallet/themes/extensions/wallet_list_theme.dart';
import 'package:cake_wallet/themes/light_theme.dart';
import 'package:cake_wallet/palette.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:flutter/material.dart';
class MoneroLightTheme extends LightTheme {
MoneroLightTheme({required int raw}) : super(raw: raw);
@override
String get title => S.current.monero_light_theme;
@override
Color get primaryColor => Palette.moneroOrange;
@override
Color get containerColor => Palette.moneroLightOrange;
@override
Color get primaryTextColor => colorScheme.onPrimaryContainer;
@override
Color get dialogBackgroundColor => containerColor;
@override
SyncIndicatorTheme get syncIndicatorStyle =>
super.syncIndicatorStyle.copyWith(
textColor: primaryTextColor,
syncedBackgroundColor: colorScheme.primaryContainer,
notSyncedBackgroundColor: containerColor.withOpacity(0.75));
@override
ExchangePageTheme get exchangePageTheme => super.exchangePageTheme.copyWith(
qrCodeColor: primaryTextColor,
buttonBackgroundColor: containerColor,
secondGradientBottomPanelColor: primaryColor.withOpacity(0.7),
firstGradientBottomPanelColor: colorScheme.primary.withOpacity(0.7),
secondGradientTopPanelColor: primaryColor,
firstGradientTopPanelColor: colorScheme.primary,
textFieldBorderBottomPanelColor: colorScheme.surfaceVariant,
textFieldBorderTopPanelColor: colorScheme.surfaceVariant,
receiveAmountColor: colorScheme.surfaceVariant);
@override
NewWalletTheme get newWalletTheme => super.newWalletTheme.copyWith(
hintTextColor: colorScheme.secondary,
underlineColor: colorScheme.secondary);
@override
AddressTheme get addressTheme =>
super.addressTheme.copyWith(actionButtonColor: containerColor);
@override
DashboardPageTheme get dashboardPageTheme =>
super.dashboardPageTheme.copyWith(
indicatorDotTheme: IndicatorDotTheme(
indicatorColor: colorScheme.secondaryContainer,
activeIndicatorColor: colorScheme.inversePrimary));
@override
BalancePageTheme get balancePageTheme => super.balancePageTheme.copyWith(
textColor: primaryTextColor.withOpacity(0.67),
labelTextColor: colorScheme.secondary);
@override
CakeMenuTheme get menuTheme => super.menuTheme.copyWith(
headerFirstGradientColor: colorScheme.primary,
headerSecondGradientColor: primaryColor,
dividerColor: colorScheme.secondaryContainer,
iconColor: colorScheme.secondaryContainer,
settingActionsIconColor: colorScheme.secondary);
@override
FilterTheme get filterTheme => super.filterTheme.copyWith(
checkboxFirstGradientColor: colorScheme.secondaryContainer,
checkboxSecondGradientColor: colorScheme.inversePrimary,
checkboxBoundsColor: PaletteDark.wildVioletBlue,
checkboxBackgroundColor: PaletteDark.wildVioletBlue.withOpacity(0.3),
buttonColor: containerColor,
iconColor: colorScheme.secondary);
@override
WalletListTheme get walletListTheme => super.walletListTheme.copyWith(
restoreWalletButtonTextColor: Colors.white,
createNewWalletButtonBackgroundColor: primaryColor);
@override
SendPageTheme get sendPageTheme => super.sendPageTheme.copyWith(
templateTitleColor: primaryTextColor,
templateBackgroundColor: containerColor,
templateNewTextColor: primaryTextColor,
templateDottedBorderColor: colorScheme.primaryContainer,
secondGradientColor: primaryColor,
firstGradientColor: colorScheme.primary,
indicatorDotColor: dashboardPageTheme.indicatorDotTheme.indicatorColor);
@override
SeedWidgetTheme get seedWidgetTheme =>
super.seedWidgetTheme.copyWith(hintTextColor: colorScheme.secondary);
@override
TransactionTradeTheme get transactionTradeTheme =>
super.transactionTradeTheme.copyWith(
detailsTitlesColor: colorScheme.secondary, rowsColor: containerColor);
@override
CakeTextTheme get cakeTextTheme => super.cakeTextTheme.copyWith(
titleColor: primaryTextColor,
secondaryTextColor: colorScheme.secondary,
addressButtonBorderColor: primaryColor.withOpacity(0.2),
dateSectionRowColor: colorScheme.secondary,
textfieldUnderlineColor: colorScheme.secondary.withOpacity(0.5));
@override
AccountListTheme get accountListTheme =>
super.accountListTheme.copyWith(tilesBackgroundColor: containerColor);
@override
ReceivePageTheme get receivePageTheme => super.receivePageTheme.copyWith(
currentTileBackgroundColor: primaryColor,
tilesBackgroundColor: containerColor,
tilesTextColor: primaryTextColor,
iconsBackgroundColor: colorScheme.surfaceVariant,
iconsColor: colorScheme.onSurfaceVariant,
amountBottomBorderColor: primaryTextColor,
amountHintTextColor: primaryTextColor,
currentTileTextColor: Colors.white);
@override
QRCodeTheme get qrCodeTheme => super
.qrCodeTheme
.copyWith(qrWidgetCopyButtonColor: colorScheme.secondary);
@override
AlertTheme get alertTheme => super
.alertTheme
.copyWith(backdropColor: colorScheme.inverseSurface.withOpacity(0.75));
@override
ThemeData get themeData => super.themeData.copyWith(
dividerColor: pickerTheme.dividerColor,
hintColor: colorScheme.secondary,
dialogTheme: super
.themeData
.dialogTheme
.copyWith(backgroundColor: containerColor));
}

View file

@ -1,17 +1,157 @@
import 'package:cake_wallet/themes/extensions/account_list_theme.dart';
import 'package:cake_wallet/themes/extensions/address_theme.dart';
import 'package:cake_wallet/themes/extensions/alert_theme.dart';
import 'package:cake_wallet/themes/extensions/balance_page_theme.dart';
import 'package:cake_wallet/themes/extensions/cake_scrollbar_theme.dart';
import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart';
import 'package:cake_wallet/themes/extensions/exchange_page_theme.dart';
import 'package:cake_wallet/themes/extensions/filter_theme.dart';
import 'package:cake_wallet/themes/extensions/indicator_dot_theme.dart';
import 'package:cake_wallet/themes/extensions/info_theme.dart';
import 'package:cake_wallet/themes/extensions/keyboard_theme.dart';
import 'package:cake_wallet/themes/extensions/menu_theme.dart';
import 'package:cake_wallet/themes/extensions/new_wallet_theme.dart';
import 'package:cake_wallet/themes/extensions/order_theme.dart';
import 'package:cake_wallet/themes/extensions/picker_theme.dart';
import 'package:cake_wallet/themes/extensions/pin_code_theme.dart';
import 'package:cake_wallet/themes/extensions/placeholder_theme.dart';
import 'package:cake_wallet/themes/extensions/qr_code_theme.dart';
import 'package:cake_wallet/themes/extensions/receive_page_theme.dart';
import 'package:cake_wallet/themes/extensions/seed_widget_theme.dart';
import 'package:cake_wallet/themes/extensions/send_page_theme.dart';
import 'package:cake_wallet/themes/extensions/support_page_theme.dart';
import 'package:cake_wallet/themes/extensions/sync_indicator_theme.dart';
import 'package:cake_wallet/themes/extensions/transaction_trade_theme.dart';
import 'package:cake_wallet/themes/extensions/wallet_list_theme.dart';
import 'package:flutter/material.dart';
enum ThemeType {light, bright, dark}
enum ThemeType { bright, light, dark }
abstract class ThemeBase {
ThemeBase({required this.raw});
ThemeBase({required this.raw}) {
colorScheme = ColorScheme.fromSeed(
brightness: brightness,
seedColor: primaryColor,
background: backgroundColor);
}
final int raw;
String get title;
ThemeData get themeData;
ThemeType get type;
@override
String toString() {
return title;
}
}
Brightness get brightness;
Color get backgroundColor;
Color get primaryColor;
Color get primaryTextColor;
Color get containerColor;
Color get dialogBackgroundColor;
ColorScheme colorScheme = ColorScheme.light();
ThemeData get generatedThemeData => ThemeData.from(
colorScheme: colorScheme,
textTheme: TextTheme().apply(fontFamily: 'Lato'));
DashboardPageTheme get dashboardPageTheme => DashboardPageTheme(
firstGradientBackgroundColor: backgroundColor,
secondGradientBackgroundColor: backgroundColor,
thirdGradientBackgroundColor: backgroundColor,
textColor: primaryTextColor,
indicatorDotTheme: IndicatorDotTheme(
indicatorColor: primaryColor, activeIndicatorColor: backgroundColor));
CakeScrollbarTheme get scrollbarTheme;
SyncIndicatorTheme get syncIndicatorStyle;
KeyboardTheme get keyboardTheme;
PinCodeTheme get pinCodeTheme;
SupportPageTheme get supportPageTheme;
ExchangePageTheme get exchangePageTheme;
NewWalletTheme get newWalletTheme;
BalancePageTheme get balancePageTheme;
AddressTheme get addressTheme;
CakeMenuTheme get menuTheme;
FilterTheme get filterTheme;
WalletListTheme get walletListTheme;
InfoTheme get infoTheme;
PickerTheme get pickerTheme;
AlertTheme get alertTheme;
OrderTheme get orderTheme;
SendPageTheme get sendPageTheme;
SeedWidgetTheme get seedWidgetTheme;
PlaceholderTheme get placeholderTheme;
TransactionTradeTheme get transactionTradeTheme;
CakeTextTheme get cakeTextTheme;
AccountListTheme get accountListTheme;
ReceivePageTheme get receivePageTheme;
QRCodeTheme get qrCodeTheme;
ThemeData get themeData => generatedThemeData.copyWith(
primaryColor: primaryColor,
cardColor: containerColor,
dialogBackgroundColor: dialogBackgroundColor,
extensions: [
dashboardPageTheme,
scrollbarTheme,
syncIndicatorStyle,
keyboardTheme,
pinCodeTheme,
supportPageTheme,
exchangePageTheme,
newWalletTheme,
balancePageTheme,
addressTheme,
menuTheme,
filterTheme,
walletListTheme,
infoTheme,
pickerTheme,
alertTheme,
orderTheme,
sendPageTheme,
seedWidgetTheme,
placeholderTheme,
transactionTradeTheme,
cakeTextTheme,
accountListTheme,
receivePageTheme,
qrCodeTheme,
],
scrollbarTheme: generatedThemeData.scrollbarTheme.copyWith(
thumbColor: MaterialStateProperty.all(scrollbarTheme.thumbColor),
trackColor: MaterialStateProperty.all(scrollbarTheme.trackColor),
radius: Radius.circular(3),
thickness: MaterialStateProperty.all(6),
thumbVisibility: MaterialStateProperty.all(true),
crossAxisMargin: 6),
appBarTheme: generatedThemeData.appBarTheme.copyWith(
titleTextStyle: TextStyle(color: cakeTextTheme.titleColor)));
}

View file

@ -1,14 +1,36 @@
import 'package:cake_wallet/themes/bright_theme.dart';
import 'package:cake_wallet/themes/dark_theme.dart';
import 'package:cake_wallet/themes/light_theme.dart';
import 'package:cake_wallet/themes/monero_light_theme.dart';
import 'package:cake_wallet/themes/monero_dark_theme.dart';
import 'package:cake_wallet/themes/matrix_green_theme.dart';
import 'package:cake_wallet/themes/bitcoin_dark_theme.dart';
import 'package:cake_wallet/themes/bitcoin_light_theme.dart';
import 'package:cake_wallet/themes/high_contrast_theme.dart';
import 'package:cake_wallet/themes/theme_base.dart';
class ThemeList {
static final all = [brightTheme, lightTheme, darkTheme];
static final all = [
brightTheme,
lightTheme,
darkTheme,
moneroDarkTheme,
moneroLightTheme,
matrixGreenTheme,
bitcoinDarkTheme,
bitcoinLightTheme,
highContrastTheme
];
static final lightTheme = LightTheme(raw: 0);
static final brightTheme = BrightTheme(raw: 1);
static final darkTheme = DarkTheme(raw: 2);
static final moneroDarkTheme = MoneroDarkTheme(raw: 3);
static final moneroLightTheme = MoneroLightTheme(raw: 4);
static final matrixGreenTheme = MatrixGreenTheme(raw: 5);
static final bitcoinDarkTheme = BitcoinDarkTheme(raw: 6);
static final bitcoinLightTheme = BitcoinLightTheme(raw: 7);
static final highContrastTheme = HighContrastTheme(raw: 8);
static ThemeBase deserialize({required int raw}) {
switch (raw) {
@ -18,8 +40,21 @@ class ThemeList {
return brightTheme;
case 2:
return darkTheme;
case 3:
return moneroDarkTheme;
case 4:
return moneroLightTheme;
case 5:
return matrixGreenTheme;
case 6:
return bitcoinDarkTheme;
case 7:
return bitcoinLightTheme;
case 8:
return highContrastTheme;
default:
throw Exception('Unexpected token raw: $raw for deserialization of ThemeBase');
throw Exception(
'Unexpected token raw: $raw for deserialization of ThemeBase');
}
}
}