CAKE-182 | changed colors on dashboard page for light theme; changed action buttons icons on dashboard page; changed buttons colors on alerts for light theme; deleted item_from_theme.dart; added getters (isLightTheme, isBrightTheme, isDarkTheme) to Themes class; applied getters to the app

wownero
OleksandrSobol 4 years ago
parent 941e7c4dd8
commit 85497a1218

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 408 B

After

Width:  |  Height:  |  Size: 629 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 341 B

After

Width:  |  Height:  |  Size: 440 B

@ -1,17 +0,0 @@
import 'package:cake_wallet/themes.dart';
import 'package:flutter/material.dart';
dynamic itemFromTheme({
@required Themes currentTheme,
@required Map<Themes, dynamic> items}) {
switch (currentTheme) {
case Themes.light:
return items[Themes.light];
case Themes.bright:
return items[Themes.bright];
case Themes.dark:
return items[Themes.dark];
default:
return items[Themes.light];
}
}

@ -1,5 +1,3 @@
import 'package:cake_wallet/entities/item_from_theme.dart';
import 'package:cake_wallet/themes.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:hive/hive.dart';
@ -125,31 +123,25 @@ class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
final settingsStore = getIt.get<AppStore>().settingsStore;
final currentTheme = settingsStore.currentTheme ?? Themes.light;
final Map<Themes, Brightness> items = {
Themes.light: Brightness.dark,
Themes.bright: Brightness.dark,
Themes.dark: Brightness.light
};
final statusBarColor = Colors.transparent;
final statusBarBrightness =
itemFromTheme(currentTheme: currentTheme, items: items) as Brightness
?? Brightness.dark;
final statusBarIconBrightness =
itemFromTheme(currentTheme: currentTheme, items: items) as Brightness
?? Brightness.dark;
final authenticationStore = getIt.get<AuthenticationStore>();
final initialRoute = authenticationStore.state == AuthenticationState.denied
? Routes.disclaimer
: Routes.login;
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
statusBarColor: statusBarColor,
statusBarBrightness: statusBarBrightness,
statusBarIconBrightness: statusBarIconBrightness));
return Observer(builder: (BuildContext context) {
final currentTheme = settingsStore.currentTheme;
final statusBarBrightness = currentTheme.isDarkTheme
? Brightness.dark
: Brightness.light;
final statusBarIconBrightness = currentTheme.isDarkTheme
? Brightness.light
: Brightness.dark;
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
statusBarColor: statusBarColor,
statusBarBrightness: statusBarBrightness,
statusBarIconBrightness: statusBarIconBrightness));
return Root(
authenticationStore: authenticationStore,
navigatorKey: navigatorKey,

@ -1,4 +1,3 @@
import 'package:cake_wallet/entities/item_from_theme.dart';
import 'package:cake_wallet/themes.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
@ -14,17 +13,11 @@ abstract class BasePage extends StatelessWidget {
: _scaffoldKey = GlobalKey<ScaffoldState>();
final GlobalKey<ScaffoldState> _scaffoldKey;
static final Image closeButtonImage =
final Image closeButtonImage =
Image.asset('assets/images/close_button.png');
static final Image closeButtonImageDarkTheme =
final Image closeButtonImageDarkTheme =
Image.asset('assets/images/close_button_dark_theme.png');
final Map<Themes, Image> buttonItems = {
Themes.light: closeButtonImage,
Themes.bright: closeButtonImage,
Themes.dark: closeButtonImageDarkTheme
};
String get title => null;
bool get isModalBackButton => false;
@ -60,8 +53,7 @@ abstract class BasePage extends StatelessWidget {
color: titleColor ?? Theme.of(context).primaryTextTheme.title.color,
size: 16,);
final _closeButton =
itemFromTheme(currentTheme: currentTheme, items: buttonItems) as Image
?? closeButtonImage;
currentTheme.isDarkTheme ? closeButtonImageDarkTheme : closeButtonImage;
return SizedBox(
height: 37,
@ -97,7 +89,8 @@ abstract class BasePage extends StatelessWidget {
Widget floatingActionButton(BuildContext context) => null;
ObstructingPreferredSizeWidget appBar(BuildContext context) {
final appBarColor = _setBackgroundColor();
final appBarColor =
currentTheme.isDarkTheme ? backgroundDarkColor : backgroundLightColor;
switch (appBarStyle) {
case AppBarStyle.regular:
@ -139,7 +132,8 @@ abstract class BasePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final _backgroundColor = _setBackgroundColor();
final _backgroundColor =
currentTheme.isDarkTheme ? backgroundDarkColor : backgroundLightColor;
final root = Scaffold(
key: _scaffoldKey,
@ -153,17 +147,4 @@ abstract class BasePage extends StatelessWidget {
return rootWrapper?.call(context, root) ?? root;
}
Color _setBackgroundColor() {
switch (currentTheme) {
case Themes.light:
return backgroundLightColor;
case Themes.bright:
return backgroundLightColor;
case Themes.dark:
return backgroundDarkColor;
default:
return backgroundLightColor;
}
}
}

@ -14,30 +14,22 @@ import 'package:cake_wallet/src/screens/seed_language/widgets/seed_language_pick
import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
import 'package:cake_wallet/core/execution_state.dart';
import 'package:cake_wallet/view_model/wallet_new_vm.dart';
import 'package:cake_wallet/themes.dart';
import 'package:cake_wallet/entities/item_from_theme.dart';
class NewWalletPage extends BasePage {
NewWalletPage(this._walletNewVM);
final WalletNewVM _walletNewVM;
static final walletNameImage = Image.asset('assets/images/wallet_name.png');
static final walletNameLightImage =
final walletNameImage = Image.asset('assets/images/wallet_name.png');
final walletNameLightImage =
Image.asset('assets/images/wallet_name_light.png');
final Map<Themes, Image> items = {
Themes.light: walletNameLightImage,
Themes.bright: walletNameLightImage,
Themes.dark: walletNameImage
};
@override
String get title => S.current.new_wallet;
@override
Widget body(BuildContext context) => WalletNameForm(_walletNewVM,
itemFromTheme(currentTheme: currentTheme, items: items) as Image
?? walletNameLightImage);
currentTheme.isDarkTheme ? walletNameImage : walletNameLightImage);
}
class WalletNameForm extends StatefulWidget {

@ -1,4 +1,3 @@
import 'package:cake_wallet/entities/item_from_theme.dart';
import 'package:cake_wallet/entities/wallet_type.dart';
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
@ -7,7 +6,6 @@ import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/src/widgets/primary_button.dart';
import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart';
import 'package:cake_wallet/src/screens/new_wallet/widgets/select_button.dart';
import 'package:cake_wallet/themes.dart';
class NewWalletTypePage extends BasePage {
NewWalletTypePage({this.onTypeSelected, this.isNewWallet = true});
@ -15,14 +13,9 @@ class NewWalletTypePage extends BasePage {
final void Function(BuildContext, WalletType) onTypeSelected;
final bool isNewWallet;
static final walletTypeImage = Image.asset('assets/images/wallet_type.png');
static final walletTypeLightImage =
final walletTypeImage = Image.asset('assets/images/wallet_type.png');
final walletTypeLightImage =
Image.asset('assets/images/wallet_type_light.png');
final Map<Themes, Image> items = {
Themes.light: walletTypeLightImage,
Themes.bright: walletTypeLightImage,
Themes.dark: walletTypeImage
};
@override
String get title => isNewWallet
@ -33,9 +26,8 @@ class NewWalletTypePage extends BasePage {
Widget body(BuildContext context) =>
WalletTypeForm(
onTypeSelected: onTypeSelected,
walletImage:
itemFromTheme(currentTheme: currentTheme, items: items) as Image
?? walletTypeLightImage);
walletImage: currentTheme.isDarkTheme
? walletTypeImage : walletTypeLightImage);
}
class WalletTypeForm extends StatefulWidget {

@ -1,21 +1,13 @@
import 'package:cake_wallet/entities/item_from_theme.dart';
import 'package:cake_wallet/routes.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/widgets/primary_button.dart';
import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/themes.dart';
class PreSeedPage extends BasePage {
static final imageLight = Image.asset('assets/images/pre_seed_light.png');
static final imageDark = Image.asset('assets/images/pre_seed_dark.png');
final Map<Themes, Image> items = {
Themes.light: imageLight,
Themes.bright: imageLight,
Themes.dark: imageDark
};
final imageLight = Image.asset('assets/images/pre_seed_light.png');
final imageDark = Image.asset('assets/images/pre_seed_dark.png');
@override
Widget leading(BuildContext context) => null;
@ -25,9 +17,7 @@ class PreSeedPage extends BasePage {
@override
Widget body(BuildContext context) {
final image =
itemFromTheme(currentTheme: currentTheme, items: items) as Image
?? imageLight;
final image = currentTheme.isDarkTheme ? imageDark : imageLight;
return WillPopScope(
onWillPop: () async => false,

@ -1,4 +1,3 @@
import 'package:cake_wallet/entities/item_from_theme.dart';
import 'package:cake_wallet/palette.dart';
import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
import 'package:cake_wallet/utils/show_bar.dart';
@ -12,18 +11,12 @@ import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/widgets/primary_button.dart';
import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/view_model/wallet_seed_view_model.dart';
import 'package:cake_wallet/themes.dart';
class WalletSeedPage extends BasePage {
WalletSeedPage(this.walletSeedViewModel, {@required this.isNewWalletCreated});
static final imageLight = Image.asset('assets/images/crypto_lock_light.png');
static final imageDark = Image.asset('assets/images/crypto_lock.png');
final Map<Themes, Image> items = {
Themes.light: imageLight,
Themes.bright: imageLight,
Themes.dark: imageDark
};
final imageLight = Image.asset('assets/images/crypto_lock_light.png');
final imageDark = Image.asset('assets/images/crypto_lock.png');
@override
String get title => S.current.seed_title;
@ -88,9 +81,7 @@ class WalletSeedPage extends BasePage {
@override
Widget body(BuildContext context) {
final image =
itemFromTheme(currentTheme: currentTheme, items: items) as Image
?? imageLight;
final image = currentTheme.isDarkTheme ? imageDark : imageLight;
return WillPopScope(onWillPop: () async => false, child: Container(
padding: EdgeInsets.all(24),

@ -1,4 +1,3 @@
import 'package:cake_wallet/entities/item_from_theme.dart';
import 'package:cake_wallet/src/widgets/seed_language_selector.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:flutter/material.dart';
@ -8,21 +7,15 @@ import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/src/widgets/primary_button.dart';
import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart';
import 'package:cake_wallet/src/screens/seed_language/widgets/seed_language_picker.dart';
import 'package:cake_wallet/themes.dart';
class SeedLanguage extends BasePage {
SeedLanguage({this.onConfirm});
final Function(BuildContext, String) onConfirm;
static final walletNameImage = Image.asset('assets/images/wallet_name.png');
static final walletNameLightImage =
final walletNameImage = Image.asset('assets/images/wallet_name.png');
final walletNameLightImage =
Image.asset('assets/images/wallet_name_light.png');
final Map<Themes, Image> items = {
Themes.light: walletNameLightImage,
Themes.bright: walletNameLightImage,
Themes.dark: walletNameImage
};
@override
String get title => S.current.wallet_list_restore_wallet;
@ -32,8 +25,7 @@ class SeedLanguage extends BasePage {
SeedLanguageForm(
onConfirm: onConfirm,
walletImage:
itemFromTheme(currentTheme: currentTheme, items: items) as Image
?? walletNameLightImage);
currentTheme.isDarkTheme ? walletNameImage : walletNameLightImage);
}
class SeedLanguageForm extends StatefulWidget {

@ -1,4 +1,3 @@
import 'package:cake_wallet/entities/item_from_theme.dart';
import 'package:flutter/material.dart';
import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/src/widgets/primary_button.dart';
@ -8,14 +7,8 @@ import 'package:cake_wallet/themes.dart';
class WelcomePage extends BasePage {
static const aspectRatioImage = 1.25;
static final welcomeImageLight = Image.asset('assets/images/welcome_light.png');
static final welcomeImageDark = Image.asset('assets/images/welcome.png');
final Map<Themes, Image> items = {
Themes.light: welcomeImageLight,
Themes.bright: welcomeImageLight,
Themes.dark: welcomeImageDark
};
final welcomeImageLight = Image.asset('assets/images/welcome_light.png');
final welcomeImageDark = Image.asset('assets/images/welcome.png');
@override
Widget build(BuildContext context) {
@ -30,8 +23,7 @@ class WelcomePage extends BasePage {
@override
Widget body(BuildContext context) {
final welcomeImage =
itemFromTheme(currentTheme: currentTheme, items: items) as Image
?? welcomeImageLight;
currentTheme.isDarkTheme ? welcomeImageDark : welcomeImageLight;
final newWalletImage = Image.asset('assets/images/new_wallet.png',
height: 12,

@ -31,7 +31,7 @@ class AlertWithOneAction extends BaseAlertDialog {
width: 300,
height: 52,
padding: EdgeInsets.only(left: 12, right: 12),
color: Theme.of(context).accentTextTheme.body2.color,
color: Theme.of(context).accentTextTheme.body1.backgroundColor,
child: ButtonTheme(
minWidth: double.infinity,
child: FlatButton(
@ -44,7 +44,8 @@ class AlertWithOneAction extends BaseAlertDialog {
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.w600,
color: Colors.white,
color: Theme.of(context).primaryTextTheme.body1
.backgroundColor,
decoration: TextDecoration.none,
),
)),

@ -1,4 +1,7 @@
import 'dart:ui';
import 'package:cake_wallet/di.dart';
import 'package:cake_wallet/store/settings_store.dart';
import 'package:cake_wallet/themes.dart';
import 'package:flutter/material.dart';
import 'package:cake_wallet/palette.dart';
@ -10,6 +13,7 @@ class BaseAlertDialog extends StatelessWidget {
VoidCallback get actionLeft => () {};
VoidCallback get actionRight => () {};
bool get barrierDismissible => true;
Themes get currentTheme => getIt.get<SettingsStore>().currentTheme;
Widget title(BuildContext context) {
return Text(
@ -61,18 +65,26 @@ class BaseAlertDialog extends StatelessWidget {
fontSize: 15,
fontFamily: 'Lato',
fontWeight: FontWeight.w600,
color: Colors.white,
color: Theme.of(context).primaryTextTheme.body2
.backgroundColor,
decoration: TextDecoration.none,
),
)),
),
)
),
currentTheme.isLightTheme
? Container(
width: 1,
height: 52,
color: Colors.grey[300],
)
: Offstage(),
Flexible(
child: Container(
height: 52,
padding: EdgeInsets.only(left: 6, right: 6),
color: Theme.of(context).accentTextTheme.body2.color,
color: Theme.of(context).accentTextTheme.body1.backgroundColor,
child: ButtonTheme(
minWidth: double.infinity,
child: FlatButton(
@ -86,7 +98,8 @@ class BaseAlertDialog extends StatelessWidget {
fontSize: 15,
fontFamily: 'Lato',
fontWeight: FontWeight.w600,
color: Colors.white,
color: Theme.of(context).primaryTextTheme.body1
.backgroundColor,
decoration: TextDecoration.none,
),
)),
@ -133,6 +146,12 @@ class BaseAlertDialog extends StatelessWidget {
],
),
),
currentTheme.isLightTheme
? Container(
height: 1,
color: Colors.grey[300],
)
: Offstage(),
actionButtons(context)
],
),

@ -43,6 +43,10 @@ class Themes extends EnumerableItem<int> with Serializable<int> {
}
}
bool get isLightTheme => this == Themes.light;
bool get isBrightTheme => this == Themes.bright;
bool get isDarkTheme => this == Themes.dark;
@override
String toString() {
switch (this) {
@ -65,7 +69,7 @@ class Themes extends EnumerableItem<int> with Serializable<int> {
scaffoldBackgroundColor: Colors.white, // second gradient color
primaryColor: Colors.white, // third gradient color
buttonColor: Palette.blueAlice, // action buttons on dashboard page
indicatorColor: PaletteDark.darkCyanBlue, // page indicator
indicatorColor: PaletteDark.darkCyanBlue.withOpacity(0.67), // page indicator
hoverColor: Palette.darkBlueCraiola, // amount hint text (receive page)
dividerColor: Palette.paleBlue,
hintColor: Palette.gray,
@ -165,11 +169,13 @@ class Themes extends EnumerableItem<int> with Serializable<int> {
),
body1: 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)
decorationColor: Palette.blueGreyCraiola.withOpacity(0.7), // second gradient color bottom panel (exchange page)
backgroundColor: Palette.protectiveBlue // alert right button text
),
body2: 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)
@ -211,7 +217,7 @@ class Themes extends EnumerableItem<int> with Serializable<int> {
display2: TextStyle(
color: Palette.shadowWhite, // action button color (address text field)
decorationColor: Palette.darkGray, // hint text (seed widget)
backgroundColor: Palette.darkBlueCraiola // text on balance page
backgroundColor: Palette.darkBlueCraiola.withOpacity(0.67) // text on balance page
),
display3: TextStyle(
color: Palette.darkGray, // hint text (new wallet page)
@ -224,11 +230,12 @@ class Themes extends EnumerableItem<int> with Serializable<int> {
),
body1: TextStyle(
color: Palette.darkGray, // indicators (PIN code)
decorationColor: Palette.darkGray // switch (PIN code)
decorationColor: Palette.darkGray, // switch (PIN code)
backgroundColor: Colors.white // alert right button
),
body2: TextStyle(
color: Palette.protectiveBlue, // primary buttons, alert right buttons
decorationColor: Palette.brightOrange, // alert left button,
color: Palette.protectiveBlue, // primary buttons
decorationColor: Colors.white, // alert left button,
backgroundColor: Palette.dullGray // keyboard bar color
),
),
@ -343,11 +350,13 @@ class Themes extends EnumerableItem<int> with Serializable<int> {
),
body1: 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)
decorationColor: Palette.pinkFlamingo.withOpacity(0.7), // second gradient color bottom panel (exchange page)
backgroundColor: Colors.white // alert right button text
),
body2: 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: Colors.white // alert left button text
)
),
focusColor: Colors.white.withOpacity(0.2), // text field button (exchange page)
@ -403,10 +412,11 @@ class Themes extends EnumerableItem<int> with Serializable<int> {
),
body1: TextStyle(
color: Palette.darkGray, // indicators (PIN code)
decorationColor: Palette.darkGray // switch (PIN code)
decorationColor: Palette.darkGray, // switch (PIN code)
backgroundColor: Palette.moderateSlateBlue // alert right button
),
body2: TextStyle(
color: Palette.moderateSlateBlue, // primary buttons, alert right buttons
color: Palette.moderateSlateBlue, // primary buttons
decorationColor: Palette.brightOrange, // alert left button,
backgroundColor: Palette.dullGray // keyboard bar color
),
@ -521,11 +531,13 @@ class Themes extends EnumerableItem<int> with Serializable<int> {
),
body1: TextStyle(
color: PaletteDark.darkNightBlue, // first gradient color bottom panel (exchange page)
decorationColor: PaletteDark.darkNightBlue // second gradient color bottom panel (exchange page)
decorationColor: PaletteDark.darkNightBlue, // second gradient color bottom panel (exchange page)
backgroundColor: Colors.white // alert right button text
),
body2: TextStyle(
color: PaletteDark.blueGrey, // text field border on top panel (exchange page)
decorationColor: PaletteDark.moderateVioletBlue, // text field border on bottom panel (exchange page)
backgroundColor: Colors.white // alert left button text
)
),
focusColor: PaletteDark.moderateBlue, // text field button (exchange page)
@ -581,10 +593,11 @@ class Themes extends EnumerableItem<int> with Serializable<int> {
),
body1: TextStyle(
color: PaletteDark.indicatorVioletBlue, // indicators (PIN code)
decorationColor: PaletteDark.lightPurpleBlue // switch (PIN code)
decorationColor: PaletteDark.lightPurpleBlue, // switch (PIN code)
backgroundColor: Palette.blueCraiola // alert right button
),
body2: TextStyle(
color: Palette.blueCraiola, // primary buttons, alert right buttons
color: Palette.blueCraiola, // primary buttons
decorationColor: Palette.alizarinRed, // alert left button
backgroundColor: PaletteDark.granite // keyboard bar color
),

Loading…
Cancel
Save