mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-18 05:51:34 +02:00
CWA-217 | applied light mode to the application; deleted copy button, enter_pin_code.dart, present picker and standard close button; applied new design to rescan page
This commit is contained in:
@@ -35,7 +35,7 @@ class AccountListPageForm extends State<AccountListPage> {
|
||||
child: BackdropFilter(
|
||||
filter: ImageFilter.blur(sigmaX: 3.0, sigmaY: 3.0),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(color: PaletteDark.historyPanel.withOpacity(0.75)),
|
||||
decoration: BoxDecoration(color: PaletteDark.darkNightBlue.withOpacity(0.75)),
|
||||
child: Center(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
@@ -61,7 +61,7 @@ class AccountListPageForm extends State<AccountListPage> {
|
||||
borderRadius: BorderRadius.all(Radius.circular(14)),
|
||||
child: Container(
|
||||
height: 296,
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
@@ -71,7 +71,7 @@ class AccountListPageForm extends State<AccountListPage> {
|
||||
|
||||
return ListView.separated(
|
||||
separatorBuilder: (context, index) => Divider(
|
||||
color: PaletteDark.mainBackgroundColor,
|
||||
color: Theme.of(context).dividerColor,
|
||||
height: 1,
|
||||
),
|
||||
itemCount: accounts == null ? 0 : accounts.length,
|
||||
@@ -117,7 +117,7 @@ class AccountListPageForm extends State<AccountListPage> {
|
||||
children: <Widget>[
|
||||
Icon(
|
||||
Icons.add,
|
||||
color: PaletteDark.historyPanel,
|
||||
color: PaletteDark.darkNightBlue,
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(left: 5),
|
||||
@@ -126,7 +126,7 @@ class AccountListPageForm extends State<AccountListPage> {
|
||||
style: TextStyle(
|
||||
fontSize: 15,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: PaletteDark.historyPanel,
|
||||
color: PaletteDark.darkNightBlue,
|
||||
decoration: TextDecoration.none,
|
||||
),
|
||||
),
|
||||
|
||||
@@ -18,9 +18,6 @@ class AccountPage extends BasePage {
|
||||
@override
|
||||
String get title => S.current.account;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) => AccountForm(account);
|
||||
}
|
||||
@@ -65,7 +62,7 @@ class AccountFormState extends State<AccountForm> {
|
||||
return Form(
|
||||
key: _formKey,
|
||||
child: Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
padding: EdgeInsets.all(24.0),
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
|
||||
class AccountTile extends StatelessWidget {
|
||||
AccountTile({
|
||||
@@ -14,8 +13,8 @@ class AccountTile extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final color = isCurrent ? PaletteDark.menuHeader : Colors.transparent;
|
||||
final textColor = isCurrent ? Colors.blue : Colors.white;
|
||||
final color = isCurrent ? Theme.of(context).accentTextTheme.subtitle.decorationColor : Colors.transparent;
|
||||
final textColor = isCurrent ? Colors.blue : Theme.of(context).primaryTextTheme.title.color;
|
||||
|
||||
return GestureDetector(
|
||||
onTap: onTap,
|
||||
|
||||
@@ -5,7 +5,6 @@ import 'package:flutter/services.dart';
|
||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
import 'package:flutter_slidable/flutter_slidable.dart';
|
||||
import 'package:cake_wallet/routes.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/src/domain/common/crypto_currency.dart';
|
||||
import 'package:cake_wallet/src/stores/address_book/address_book_store.dart';
|
||||
@@ -17,9 +16,6 @@ class AddressBookPage extends BasePage {
|
||||
|
||||
final bool isEditable;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
String get title => S.current.address_book;
|
||||
|
||||
@@ -35,11 +31,15 @@ class AddressBookPage extends BasePage {
|
||||
width: 32.0,
|
||||
height: 32.0,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle, color: PaletteDark.menuList),
|
||||
shape: BoxShape.circle,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor
|
||||
),
|
||||
child: Stack(
|
||||
alignment: Alignment.center,
|
||||
children: <Widget>[
|
||||
Icon(Icons.add, color: Colors.white, size: 22.0),
|
||||
Icon(Icons.add,
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
size: 22.0),
|
||||
ButtonTheme(
|
||||
minWidth: 32.0,
|
||||
height: 32.0,
|
||||
@@ -61,17 +61,17 @@ class AddressBookPage extends BasePage {
|
||||
final addressBookStore = Provider.of<AddressBookStore>(context);
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
padding: EdgeInsets.only(top: 20.0, bottom: 20.0),
|
||||
child: Observer(
|
||||
builder: (_) => ListView.separated(
|
||||
separatorBuilder: (_, __) => Container(
|
||||
height: 1,
|
||||
padding: EdgeInsets.only(left: 24),
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
child: Container(
|
||||
height: 1,
|
||||
color: PaletteDark.mainBackgroundColor,
|
||||
color: Theme.of(context).dividerColor,
|
||||
),
|
||||
),
|
||||
itemCount: addressBookStore.contactList == null
|
||||
@@ -117,12 +117,12 @@ class AddressBookPage extends BasePage {
|
||||
? Container(
|
||||
width: double.infinity,
|
||||
height: 1,
|
||||
color: PaletteDark.mainBackgroundColor,
|
||||
color: Theme.of(context).dividerColor,
|
||||
)
|
||||
: Offstage(),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(left: 24, top: 16, bottom: 16, right: 24),
|
||||
child: Row(
|
||||
@@ -141,7 +141,7 @@ class AddressBookPage extends BasePage {
|
||||
contact.name,
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
)
|
||||
@@ -153,7 +153,7 @@ class AddressBookPage extends BasePage {
|
||||
? Container(
|
||||
width: double.infinity,
|
||||
height: 1,
|
||||
color: PaletteDark.mainBackgroundColor,
|
||||
color: Theme.of(context).dividerColor,
|
||||
)
|
||||
: Offstage(),
|
||||
],
|
||||
|
||||
@@ -10,7 +10,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/address_text_field.dart';
|
||||
import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/src/widgets/base_text_form_field.dart';
|
||||
import 'package:cake_wallet/src/screens/exchange/widgets/currency_picker.dart';
|
||||
import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
|
||||
@@ -23,9 +22,6 @@ class ContactPage extends BasePage {
|
||||
@override
|
||||
String get title => S.current.contact;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) => ContactForm(contact);
|
||||
}
|
||||
@@ -45,10 +41,6 @@ class ContactFormState extends State<ContactForm> {
|
||||
final _currencyTypeController = TextEditingController();
|
||||
final _addressController = TextEditingController();
|
||||
final currencies = CryptoCurrency.all;
|
||||
final downArrow = Image.asset(
|
||||
'assets/images/arrow_bottom_purple_icon.png',
|
||||
color: PaletteDark.walletCardText,
|
||||
height: 8);
|
||||
|
||||
CryptoCurrency _selectectCrypto;
|
||||
|
||||
@@ -90,13 +82,17 @@ class ContactFormState extends State<ContactForm> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final addressBookStore = Provider.of<AddressBookStore>(context);
|
||||
final downArrow = Image.asset(
|
||||
'assets/images/arrow_bottom_purple_icon.png',
|
||||
color: Theme.of(context).dividerColor,
|
||||
height: 8);
|
||||
|
||||
_contactNameController.addListener(() {onHandleControllers(addressBookStore);});
|
||||
_currencyTypeController.addListener(() {onHandleControllers(addressBookStore);});
|
||||
_addressController.addListener(() {onHandleControllers(addressBookStore);});
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
child: ScrollableWithBottomSection(
|
||||
contentPadding: EdgeInsets.all(24),
|
||||
content: Form(
|
||||
@@ -107,7 +103,6 @@ class ContactFormState extends State<ContactForm> {
|
||||
BaseTextFormField(
|
||||
controller: _contactNameController,
|
||||
hintText: S.of(context).contact_name,
|
||||
borderColor: PaletteDark.walletCardSubAddressField,
|
||||
validator: (value) {
|
||||
addressBookStore.validateContactName(value);
|
||||
return addressBookStore.errorMessage;
|
||||
@@ -122,7 +117,6 @@ class ContactFormState extends State<ContactForm> {
|
||||
child: BaseTextFormField(
|
||||
controller: _currencyTypeController,
|
||||
hintText: S.of(context).settings_currency,
|
||||
borderColor: PaletteDark.walletCardSubAddressField,
|
||||
suffixIcon: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
|
||||
@@ -8,7 +8,6 @@ import 'package:cake_wallet/src/stores/auth/auth_store.dart';
|
||||
import 'package:cake_wallet/src/screens/pin_code/pin_code.dart';
|
||||
import 'package:cake_wallet/src/stores/settings/settings_store.dart';
|
||||
import 'package:cake_wallet/src/domain/common/biometric_auth.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
|
||||
typedef OnAuthenticationFinished = void Function(bool, AuthPageState);
|
||||
|
||||
@@ -139,7 +138,7 @@ class AuthPageState extends State<AuthPage> {
|
||||
),
|
||||
)
|
||||
: Container(),
|
||||
backgroundColor: PaletteDark.historyPanel,
|
||||
backgroundColor: Theme.of(context).backgroundColor,
|
||||
border: null,
|
||||
),
|
||||
resizeToAvoidBottomPadding: false,
|
||||
|
||||
@@ -4,13 +4,15 @@ import 'package:cake_wallet/src/widgets/nav_bar.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:cake_wallet/themes.dart';
|
||||
import 'package:cake_wallet/theme_changer.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
|
||||
enum AppBarStyle { regular, withShadow }
|
||||
|
||||
abstract class BasePage extends StatelessWidget {
|
||||
String get title => null;
|
||||
bool get isModalBackButton => false;
|
||||
Color get backgroundColor => Colors.white;
|
||||
Color get backgroundLightColor => Colors.white;
|
||||
Color get backgroundDarkColor => PaletteDark.darkNightBlue;
|
||||
bool get resizeToAvoidBottomPadding => true;
|
||||
AppBarStyle get appBarStyle => AppBarStyle.regular;
|
||||
|
||||
@@ -31,16 +33,13 @@ abstract class BasePage extends StatelessWidget {
|
||||
final _themeChanger = Provider.of<ThemeChanger>(context);
|
||||
Image _closeButton, _backButton;
|
||||
|
||||
_backButton = _backArrowImageDarkTheme;
|
||||
_closeButton = _closeButtonImageDarkTheme;
|
||||
|
||||
/*if (_themeChanger.getTheme() == Themes.darkTheme) {
|
||||
if (_themeChanger.getTheme() == Themes.darkTheme) {
|
||||
_backButton = _backArrowImageDarkTheme;
|
||||
_closeButton = _closeButtonImageDarkTheme;
|
||||
} else {
|
||||
_backButton = _backArrowImage;
|
||||
_closeButton = _closeButtonImage;
|
||||
}*/
|
||||
}
|
||||
|
||||
return SizedBox(
|
||||
height: 37,
|
||||
@@ -65,8 +64,7 @@ abstract class BasePage extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 18.0,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white),
|
||||
//color: Theme.of(context).primaryTextTheme.title.color),
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -85,10 +83,9 @@ abstract class BasePage extends StatelessWidget {
|
||||
leading: leading(context),
|
||||
middle: middle(context),
|
||||
trailing: trailing(context),
|
||||
backgroundColor: backgroundColor);
|
||||
/*backgroundColor: _isDarkTheme
|
||||
? Theme.of(context).backgroundColor
|
||||
: backgroundColor);*/
|
||||
backgroundColor: _isDarkTheme
|
||||
? backgroundDarkColor
|
||||
: backgroundLightColor);
|
||||
|
||||
case AppBarStyle.withShadow:
|
||||
return NavBar.withShadow(
|
||||
@@ -96,10 +93,9 @@ abstract class BasePage extends StatelessWidget {
|
||||
leading: leading(context),
|
||||
middle: middle(context),
|
||||
trailing: trailing(context),
|
||||
backgroundColor: backgroundColor);
|
||||
/*backgroundColor: _isDarkTheme
|
||||
? Theme.of(context).backgroundColor
|
||||
: backgroundColor);*/
|
||||
backgroundColor: _isDarkTheme
|
||||
? backgroundDarkColor
|
||||
: backgroundLightColor);
|
||||
|
||||
default:
|
||||
return NavBar(
|
||||
@@ -107,10 +103,9 @@ abstract class BasePage extends StatelessWidget {
|
||||
leading: leading(context),
|
||||
middle: middle(context),
|
||||
trailing: trailing(context),
|
||||
backgroundColor: backgroundColor);
|
||||
/*backgroundColor: _isDarkTheme
|
||||
? Theme.of(context).backgroundColor
|
||||
: backgroundColor);*/
|
||||
backgroundColor: _isDarkTheme
|
||||
? backgroundDarkColor
|
||||
: backgroundLightColor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,8 +117,9 @@ abstract class BasePage extends StatelessWidget {
|
||||
final _isDarkTheme = _themeChanger.getTheme() == Themes.darkTheme;
|
||||
|
||||
return Scaffold(
|
||||
backgroundColor:
|
||||
_isDarkTheme ? Theme.of(context).backgroundColor : backgroundColor,
|
||||
backgroundColor: _isDarkTheme
|
||||
? backgroundDarkColor
|
||||
: backgroundLightColor,
|
||||
resizeToAvoidBottomPadding: resizeToAvoidBottomPadding,
|
||||
appBar: appBar(context),
|
||||
body: SafeArea(child: body(context)),
|
||||
|
||||
@@ -1,43 +1,14 @@
|
||||
import 'package:cake_wallet/src/screens/dashboard/widgets/menu_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/src/screens/base_page.dart';
|
||||
import 'package:cake_wallet/src/screens/dashboard/widgets/wallet_card.dart';
|
||||
import 'package:cake_wallet/src/screens/dashboard/widgets/trade_history_panel.dart';
|
||||
import 'package:cake_wallet/src/screens/dashboard/widgets/menu_widget.dart';
|
||||
|
||||
class DashboardPage extends BasePage {
|
||||
class DashboardPage extends StatelessWidget {
|
||||
final _bodyKey = GlobalKey();
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.mainBackgroundColor;
|
||||
|
||||
@override
|
||||
Widget trailing(BuildContext context) {
|
||||
final menuButton = Image.asset('assets/images/header.png');
|
||||
|
||||
return SizedBox(
|
||||
height: 37,
|
||||
width: 37,
|
||||
child: ButtonTheme(
|
||||
minWidth: double.minPositive,
|
||||
child: FlatButton(
|
||||
highlightColor: Colors.transparent,
|
||||
splashColor: Colors.transparent,
|
||||
padding: EdgeInsets.all(0),
|
||||
onPressed: () async {
|
||||
await showDialog<void>(
|
||||
builder: (_) => MenuWidget(),
|
||||
context: context
|
||||
);
|
||||
},
|
||||
child: menuButton),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) => DashboardPageBody(key: _bodyKey);
|
||||
Widget build(BuildContext context) => DashboardPageBody(key: _bodyKey);
|
||||
}
|
||||
|
||||
class DashboardPageBody extends StatefulWidget {
|
||||
@@ -51,21 +22,57 @@ class DashboardPageBodyState extends State<DashboardPageBody> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final menuButton = Image.asset('assets/images/header.png',
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
);
|
||||
|
||||
return SafeArea(
|
||||
child: Container(
|
||||
color: PaletteDark.mainBackgroundColor,
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: EdgeInsets.only(left: 20, top: 10),
|
||||
child: WalletCard(),
|
||||
),
|
||||
SizedBox(
|
||||
height: 28,
|
||||
),
|
||||
Expanded(child: TradeHistoryPanel())
|
||||
],
|
||||
child: Scaffold(
|
||||
body: Container(
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
colors: [
|
||||
Theme.of(context).scaffoldBackgroundColor,
|
||||
Theme.of(context).primaryColor
|
||||
],
|
||||
begin: Alignment.centerLeft,
|
||||
end: Alignment.centerRight
|
||||
)
|
||||
),
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
Container(
|
||||
padding: EdgeInsets.only(top: 10, right: 10),
|
||||
alignment: Alignment.centerRight,
|
||||
child: SizedBox(
|
||||
height: 44,
|
||||
width: 44,
|
||||
child: ButtonTheme(
|
||||
minWidth: double.minPositive,
|
||||
child: FlatButton(
|
||||
highlightColor: Colors.transparent,
|
||||
splashColor: Colors.transparent,
|
||||
padding: EdgeInsets.all(0),
|
||||
onPressed: () async {
|
||||
await showDialog<void>(
|
||||
builder: (_) => MenuWidget(),
|
||||
context: context
|
||||
);
|
||||
},
|
||||
child: menuButton),
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(left: 20, top: 20),
|
||||
child: WalletCard(),
|
||||
),
|
||||
SizedBox(
|
||||
height: 28,
|
||||
),
|
||||
Expanded(child: TradeHistoryPanel())
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
@@ -2,24 +2,33 @@ import 'package:cake_wallet/src/domain/exchange/exchange_provider_description.da
|
||||
import 'package:cake_wallet/src/stores/action_list/action_list_store.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:cake_wallet/routes.dart';
|
||||
import 'package:date_range_picker/date_range_picker.dart' as date_rage_picker;
|
||||
import 'package:cake_wallet/themes.dart';
|
||||
import 'package:cake_wallet/theme_changer.dart';
|
||||
|
||||
class ButtonHeader extends SliverPersistentHeaderDelegate {
|
||||
final sendImage = Image.asset('assets/images/send.png');
|
||||
final exchangeImage = Image.asset('assets/images/exchange.png');
|
||||
final buyImage = Image.asset('assets/images/coins.png');
|
||||
final filterButton = Image.asset('assets/images/filter_button.png');
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, double shrinkOffset, bool overlapsContent) {
|
||||
final actionListStore = Provider.of<ActionListStore>(context);
|
||||
final historyPanelWidth = MediaQuery.of(context).size.width;
|
||||
|
||||
final _themeChanger = Provider.of<ThemeChanger>(context);
|
||||
Image filterButton;
|
||||
|
||||
if (_themeChanger.getTheme() == Themes.darkTheme) {
|
||||
filterButton = Image.asset('assets/images/filter_button.png');
|
||||
} else {
|
||||
filterButton = Image.asset('assets/images/filter_light_button.png');
|
||||
}
|
||||
|
||||
double buttonsOpacity = 1 - shrinkOffset / (maxExtent - minExtent);
|
||||
double buttonsHeight = maxExtent - minExtent - shrinkOffset;
|
||||
|
||||
@@ -68,173 +77,173 @@ class ButtonHeader extends SliverPersistentHeaderDelegate {
|
||||
Positioned(
|
||||
top: buttonsHeight,
|
||||
left: 0,
|
||||
child: Container(
|
||||
width: historyPanelWidth,
|
||||
height: 66,
|
||||
padding: EdgeInsets.only(top: 20, left: 20, right: 20, bottom: 10),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.only(topLeft: Radius.circular(20), topRight: Radius.circular(20)),
|
||||
color: PaletteDark.historyPanel,
|
||||
),
|
||||
child: Stack(
|
||||
alignment: Alignment.center,
|
||||
children: <Widget>[
|
||||
Text(
|
||||
S.of(context).trade_history_title,
|
||||
style: TextStyle(
|
||||
fontSize: 20,
|
||||
color: Colors.white
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.only(topLeft: Radius.circular(20), topRight: Radius.circular(20)),
|
||||
child: Container(
|
||||
width: historyPanelWidth,
|
||||
height: 66,
|
||||
padding: EdgeInsets.only(top: 20, left: 20, right: 20, bottom: 10),
|
||||
color: Theme.of(context).backgroundColor,
|
||||
child: Stack(
|
||||
alignment: Alignment.center,
|
||||
children: <Widget>[
|
||||
Text(
|
||||
S.of(context).trade_history_title,
|
||||
style: TextStyle(
|
||||
fontSize: 20,
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
),
|
||||
Positioned(
|
||||
right: 0,
|
||||
child: PopupMenuButton<int>(
|
||||
itemBuilder: (context) => [
|
||||
PopupMenuItem(
|
||||
enabled: false,
|
||||
value: -1,
|
||||
child: Text(S.of(context).transactions,
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color))),
|
||||
PopupMenuItem(
|
||||
value: 0,
|
||||
child: Observer(
|
||||
builder: (_) => Row(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment
|
||||
.spaceBetween,
|
||||
children: [
|
||||
Text(S.of(context).incoming),
|
||||
Checkbox(
|
||||
value: actionListStore
|
||||
.transactionFilterStore
|
||||
.displayIncoming,
|
||||
onChanged: (value) =>
|
||||
actionListStore
|
||||
.transactionFilterStore
|
||||
.toggleIncoming(),
|
||||
)
|
||||
]))),
|
||||
PopupMenuItem(
|
||||
value: 1,
|
||||
child: Observer(
|
||||
builder: (_) => Row(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment
|
||||
.spaceBetween,
|
||||
children: [
|
||||
Text(S.of(context).outgoing),
|
||||
Checkbox(
|
||||
value: actionListStore
|
||||
.transactionFilterStore
|
||||
.displayOutgoing,
|
||||
onChanged: (value) =>
|
||||
actionListStore
|
||||
.transactionFilterStore
|
||||
.toggleOutgoing(),
|
||||
)
|
||||
]))),
|
||||
PopupMenuItem(
|
||||
value: 2,
|
||||
child:
|
||||
Text(S.of(context).transactions_by_date)),
|
||||
PopupMenuDivider(),
|
||||
PopupMenuItem(
|
||||
enabled: false,
|
||||
value: -1,
|
||||
child: Text(S.of(context).trades,
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color))),
|
||||
PopupMenuItem(
|
||||
value: 3,
|
||||
child: Observer(
|
||||
builder: (_) => Row(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment
|
||||
.spaceBetween,
|
||||
children: [
|
||||
Text('XMR.TO'),
|
||||
Checkbox(
|
||||
value: actionListStore
|
||||
.tradeFilterStore
|
||||
.displayXMRTO,
|
||||
onChanged: (value) =>
|
||||
actionListStore
|
||||
.tradeFilterStore
|
||||
.toggleDisplayExchange(
|
||||
ExchangeProviderDescription
|
||||
.xmrto),
|
||||
)
|
||||
]))),
|
||||
PopupMenuItem(
|
||||
value: 4,
|
||||
child: Observer(
|
||||
builder: (_) => Row(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment
|
||||
.spaceBetween,
|
||||
children: [
|
||||
Text('Change.NOW'),
|
||||
Checkbox(
|
||||
value: actionListStore
|
||||
.tradeFilterStore
|
||||
.displayChangeNow,
|
||||
onChanged: (value) =>
|
||||
actionListStore
|
||||
.tradeFilterStore
|
||||
.toggleDisplayExchange(
|
||||
ExchangeProviderDescription
|
||||
.changeNow),
|
||||
)
|
||||
]))),
|
||||
PopupMenuItem(
|
||||
value: 5,
|
||||
child: Observer(
|
||||
builder: (_) => Row(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment
|
||||
.spaceBetween,
|
||||
children: [
|
||||
Text('MorphToken'),
|
||||
Checkbox(
|
||||
value: actionListStore
|
||||
.tradeFilterStore
|
||||
.displayMorphToken,
|
||||
onChanged: (value) =>
|
||||
actionListStore
|
||||
.tradeFilterStore
|
||||
.toggleDisplayExchange(
|
||||
ExchangeProviderDescription
|
||||
.morphToken),
|
||||
)
|
||||
])))
|
||||
],
|
||||
child: filterButton,
|
||||
onSelected: (item) async {
|
||||
if (item == 2) {
|
||||
final List<DateTime> picked =
|
||||
await date_rage_picker.showDatePicker(
|
||||
context: context,
|
||||
initialFirstDate: DateTime.now()
|
||||
.subtract(Duration(days: 1)),
|
||||
initialLastDate: (DateTime.now()),
|
||||
firstDate: DateTime(2015),
|
||||
lastDate: DateTime.now()
|
||||
.add(Duration(days: 1)));
|
||||
Positioned(
|
||||
right: 0,
|
||||
child: PopupMenuButton<int>(
|
||||
itemBuilder: (context) => [
|
||||
PopupMenuItem(
|
||||
enabled: false,
|
||||
value: -1,
|
||||
child: Text(S.of(context).transactions,
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color))),
|
||||
PopupMenuItem(
|
||||
value: 0,
|
||||
child: Observer(
|
||||
builder: (_) => Row(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment
|
||||
.spaceBetween,
|
||||
children: [
|
||||
Text(S.of(context).incoming),
|
||||
Checkbox(
|
||||
value: actionListStore
|
||||
.transactionFilterStore
|
||||
.displayIncoming,
|
||||
onChanged: (value) =>
|
||||
actionListStore
|
||||
.transactionFilterStore
|
||||
.toggleIncoming(),
|
||||
)
|
||||
]))),
|
||||
PopupMenuItem(
|
||||
value: 1,
|
||||
child: Observer(
|
||||
builder: (_) => Row(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment
|
||||
.spaceBetween,
|
||||
children: [
|
||||
Text(S.of(context).outgoing),
|
||||
Checkbox(
|
||||
value: actionListStore
|
||||
.transactionFilterStore
|
||||
.displayOutgoing,
|
||||
onChanged: (value) =>
|
||||
actionListStore
|
||||
.transactionFilterStore
|
||||
.toggleOutgoing(),
|
||||
)
|
||||
]))),
|
||||
PopupMenuItem(
|
||||
value: 2,
|
||||
child:
|
||||
Text(S.of(context).transactions_by_date)),
|
||||
PopupMenuDivider(),
|
||||
PopupMenuItem(
|
||||
enabled: false,
|
||||
value: -1,
|
||||
child: Text(S.of(context).trades,
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color))),
|
||||
PopupMenuItem(
|
||||
value: 3,
|
||||
child: Observer(
|
||||
builder: (_) => Row(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment
|
||||
.spaceBetween,
|
||||
children: [
|
||||
Text('XMR.TO'),
|
||||
Checkbox(
|
||||
value: actionListStore
|
||||
.tradeFilterStore
|
||||
.displayXMRTO,
|
||||
onChanged: (value) =>
|
||||
actionListStore
|
||||
.tradeFilterStore
|
||||
.toggleDisplayExchange(
|
||||
ExchangeProviderDescription
|
||||
.xmrto),
|
||||
)
|
||||
]))),
|
||||
PopupMenuItem(
|
||||
value: 4,
|
||||
child: Observer(
|
||||
builder: (_) => Row(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment
|
||||
.spaceBetween,
|
||||
children: [
|
||||
Text('Change.NOW'),
|
||||
Checkbox(
|
||||
value: actionListStore
|
||||
.tradeFilterStore
|
||||
.displayChangeNow,
|
||||
onChanged: (value) =>
|
||||
actionListStore
|
||||
.tradeFilterStore
|
||||
.toggleDisplayExchange(
|
||||
ExchangeProviderDescription
|
||||
.changeNow),
|
||||
)
|
||||
]))),
|
||||
PopupMenuItem(
|
||||
value: 5,
|
||||
child: Observer(
|
||||
builder: (_) => Row(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment
|
||||
.spaceBetween,
|
||||
children: [
|
||||
Text('MorphToken'),
|
||||
Checkbox(
|
||||
value: actionListStore
|
||||
.tradeFilterStore
|
||||
.displayMorphToken,
|
||||
onChanged: (value) =>
|
||||
actionListStore
|
||||
.tradeFilterStore
|
||||
.toggleDisplayExchange(
|
||||
ExchangeProviderDescription
|
||||
.morphToken),
|
||||
)
|
||||
])))
|
||||
],
|
||||
child: filterButton,
|
||||
onSelected: (item) async {
|
||||
if (item == 2) {
|
||||
final List<DateTime> picked =
|
||||
await date_rage_picker.showDatePicker(
|
||||
context: context,
|
||||
initialFirstDate: DateTime.now()
|
||||
.subtract(Duration(days: 1)),
|
||||
initialLastDate: (DateTime.now()),
|
||||
firstDate: DateTime(2015),
|
||||
lastDate: DateTime.now()
|
||||
.add(Duration(days: 1)));
|
||||
|
||||
if (picked != null && picked.length == 2) {
|
||||
actionListStore.transactionFilterStore
|
||||
.changeStartDate(picked.first);
|
||||
actionListStore.transactionFilterStore
|
||||
.changeEndDate(picked.last);
|
||||
if (picked != null && picked.length == 2) {
|
||||
actionListStore.transactionFilterStore
|
||||
.changeStartDate(picked.first);
|
||||
actionListStore.transactionFilterStore
|
||||
.changeEndDate(picked.last);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
),
|
||||
)
|
||||
],
|
||||
},
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
@@ -274,7 +283,7 @@ class ButtonHeader extends SliverPersistentHeaderDelegate {
|
||||
width: 48,
|
||||
alignment: Alignment.center,
|
||||
decoration: BoxDecoration(
|
||||
color: PaletteDark.borderCardColor,
|
||||
color: Theme.of(context).primaryTextTheme.subhead.color,
|
||||
shape: BoxShape.circle
|
||||
),
|
||||
child: image,
|
||||
@@ -286,7 +295,7 @@ class ButtonHeader extends SliverPersistentHeaderDelegate {
|
||||
title,
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
color: PaletteDark.walletCardText
|
||||
color: Theme.of(context).primaryTextTheme.caption.color
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
@@ -40,14 +39,17 @@ class DateSectionRaw extends StatelessWidget {
|
||||
padding: EdgeInsets.only(top: 10, bottom: 10, left: 20, right: 20),
|
||||
alignment: Alignment.center,
|
||||
decoration: BoxDecoration(
|
||||
color: PaletteDark.historyPanel,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
border: Border.all(
|
||||
width: 1,
|
||||
color: PaletteDark.historyPanel
|
||||
color: Theme.of(context).backgroundColor
|
||||
),
|
||||
),
|
||||
child: Text(title,
|
||||
style: TextStyle(fontSize: 12, color: PaletteDark.historyPanelText))
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
color: Theme.of(context).primaryTextTheme.headline.color
|
||||
))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ class MenuWidgetState extends State<MenuWidget> {
|
||||
child: BackdropFilter(
|
||||
filter: ImageFilter.blur(sigmaX: 3.0, sigmaY: 3.0),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(color: PaletteDark.historyPanel.withOpacity(0.75)),
|
||||
decoration: BoxDecoration(color: PaletteDark.darkNightBlue.withOpacity(0.75)),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
@@ -91,7 +91,7 @@ class MenuWidgetState extends State<MenuWidget> {
|
||||
width: 4,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.all(Radius.circular(2)),
|
||||
color: PaletteDark.walletCardText
|
||||
color: Theme.of(context).hintColor //
|
||||
),
|
||||
)
|
||||
: Container(
|
||||
@@ -115,7 +115,7 @@ class MenuWidgetState extends State<MenuWidget> {
|
||||
curve: Curves.fastOutSlowIn,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.only(topLeft: Radius.circular(24), bottomLeft: Radius.circular(24)),
|
||||
color: PaletteDark.menuList.withOpacity(opacity)
|
||||
color: Theme.of(context).primaryTextTheme.display1.color.withOpacity(opacity)
|
||||
),
|
||||
child: isDraw
|
||||
? ListView.separated(
|
||||
@@ -131,7 +131,7 @@ class MenuWidgetState extends State<MenuWidget> {
|
||||
bottom: fromBottomEdge),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.only(topLeft: Radius.circular(24)),
|
||||
color: PaletteDark.menuHeader
|
||||
color: Theme.of(context).primaryTextTheme.display2.color
|
||||
),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
@@ -148,7 +148,7 @@ class MenuWidgetState extends State<MenuWidget> {
|
||||
Text(
|
||||
walletStore.name,
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
decoration: TextDecoration.none,
|
||||
fontFamily: 'Lato',
|
||||
fontSize: 20,
|
||||
@@ -158,7 +158,7 @@ class MenuWidgetState extends State<MenuWidget> {
|
||||
Text(
|
||||
walletStore.account.label,
|
||||
style: TextStyle(
|
||||
color: PaletteDark.walletCardText,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color,
|
||||
decoration: TextDecoration.none,
|
||||
fontFamily: 'Lato',
|
||||
fontSize: 12
|
||||
@@ -193,7 +193,7 @@ class MenuWidgetState extends State<MenuWidget> {
|
||||
alignment: Alignment.topLeft,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.only(bottomLeft: Radius.circular(24)),
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).primaryTextTheme.display1.color,
|
||||
),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
@@ -206,7 +206,7 @@ class MenuWidgetState extends State<MenuWidget> {
|
||||
item,
|
||||
style: TextStyle(
|
||||
decoration: TextDecoration.none,
|
||||
color: Colors.white,
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
fontFamily: 'Lato',
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.bold
|
||||
@@ -219,7 +219,7 @@ class MenuWidgetState extends State<MenuWidget> {
|
||||
: Container(
|
||||
height: tileHeight,
|
||||
padding: EdgeInsets.only(left: 24, right: 24),
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).primaryTextTheme.display1.color,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
@@ -231,7 +231,7 @@ class MenuWidgetState extends State<MenuWidget> {
|
||||
item,
|
||||
style: TextStyle(
|
||||
decoration: TextDecoration.none,
|
||||
color: Colors.white,
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
fontFamily: 'Lato',
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.bold
|
||||
@@ -244,9 +244,9 @@ class MenuWidgetState extends State<MenuWidget> {
|
||||
);
|
||||
},
|
||||
separatorBuilder: (_, index) =>
|
||||
Divider(
|
||||
Container(
|
||||
height: 1,
|
||||
color: PaletteDark.walletCardText,
|
||||
color: Theme.of(context).dividerColor,
|
||||
),
|
||||
itemCount: itemCount + 1)
|
||||
: Offstage()
|
||||
|
||||
@@ -6,7 +6,6 @@ import 'package:cake_wallet/src/stores/action_list/transaction_list_item.dart';
|
||||
import 'package:cake_wallet/src/stores/settings/settings_store.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
@@ -58,101 +57,104 @@ class TradeHistoryPanelState extends State<TradeHistoryPanel> {
|
||||
height: panelHeight,
|
||||
duration: Duration(milliseconds: 1000),
|
||||
curve: Curves.fastOutSlowIn,
|
||||
child: CustomScrollView(
|
||||
slivers: <Widget>[
|
||||
SliverPersistentHeader(
|
||||
delegate: ButtonHeader(),
|
||||
pinned: true,
|
||||
floating: false,
|
||||
),
|
||||
Observer(
|
||||
key: _listObserverKey,
|
||||
builder: (_) {
|
||||
final items = actionListStore.items == null
|
||||
? <String>[]
|
||||
: actionListStore.items;
|
||||
final itemsCount = items.length + 1;
|
||||
final symbol = settingsStore.fiatCurrency.toString();
|
||||
double freeSpaceHeight = MediaQuery.of(context).size.height - 496;
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.only(topLeft: Radius.circular(20), topRight: Radius.circular(20)),
|
||||
child: CustomScrollView(
|
||||
slivers: <Widget>[
|
||||
SliverPersistentHeader(
|
||||
delegate: ButtonHeader(),
|
||||
pinned: true,
|
||||
floating: false,
|
||||
),
|
||||
Observer(
|
||||
key: _listObserverKey,
|
||||
builder: (_) {
|
||||
final items = actionListStore.items == null
|
||||
? <String>[]
|
||||
: actionListStore.items;
|
||||
final itemsCount = items.length + 1;
|
||||
final symbol = settingsStore.fiatCurrency.toString();
|
||||
double freeSpaceHeight = MediaQuery.of(context).size.height - 496;
|
||||
|
||||
return SliverList(
|
||||
key: _listKey,
|
||||
delegate: SliverChildBuilderDelegate(
|
||||
(context, index) {
|
||||
return SliverList(
|
||||
key: _listKey,
|
||||
delegate: SliverChildBuilderDelegate(
|
||||
(context, index) {
|
||||
|
||||
if (index == itemsCount - 1) {
|
||||
freeSpaceHeight = freeSpaceHeight >= 0 ? freeSpaceHeight : 0;
|
||||
if (index == itemsCount - 1) {
|
||||
freeSpaceHeight = freeSpaceHeight >= 0 ? freeSpaceHeight : 0;
|
||||
|
||||
return Container(
|
||||
height: freeSpaceHeight,
|
||||
width: MediaQuery.of(context).size.width,
|
||||
color: PaletteDark.historyPanel,
|
||||
);
|
||||
}
|
||||
return Container(
|
||||
height: freeSpaceHeight,
|
||||
width: MediaQuery.of(context).size.width,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
);
|
||||
}
|
||||
|
||||
final item = items[index];
|
||||
final item = items[index];
|
||||
|
||||
if (item is DateSectionItem) {
|
||||
freeSpaceHeight -= 38;
|
||||
return DateSectionRaw(date: item.date);
|
||||
}
|
||||
if (item is DateSectionItem) {
|
||||
freeSpaceHeight -= 38;
|
||||
return DateSectionRaw(date: item.date);
|
||||
}
|
||||
|
||||
if (item is TransactionListItem) {
|
||||
freeSpaceHeight -= 62;
|
||||
final transaction = item.transaction;
|
||||
final savedDisplayMode = settingsStore.balanceDisplayMode;
|
||||
final formattedAmount =
|
||||
savedDisplayMode == BalanceDisplayMode.hiddenBalance
|
||||
? '---'
|
||||
: transaction.amountFormatted();
|
||||
final formattedFiatAmount =
|
||||
savedDisplayMode == BalanceDisplayMode.hiddenBalance
|
||||
? '---'
|
||||
: transaction.fiatAmount(symbol);
|
||||
if (item is TransactionListItem) {
|
||||
freeSpaceHeight -= 62;
|
||||
final transaction = item.transaction;
|
||||
final savedDisplayMode = settingsStore.balanceDisplayMode;
|
||||
final formattedAmount =
|
||||
savedDisplayMode == BalanceDisplayMode.hiddenBalance
|
||||
? '---'
|
||||
: transaction.amountFormatted();
|
||||
final formattedFiatAmount =
|
||||
savedDisplayMode == BalanceDisplayMode.hiddenBalance
|
||||
? '---'
|
||||
: transaction.fiatAmount(symbol);
|
||||
|
||||
return TransactionRow(
|
||||
onTap: () => Navigator.of(context).pushNamed(
|
||||
Routes.transactionDetails,
|
||||
arguments: transaction),
|
||||
direction: transaction.direction,
|
||||
formattedDate:
|
||||
transactionDateFormat.format(transaction.date),
|
||||
formattedAmount: formattedAmount,
|
||||
formattedFiatAmount: formattedFiatAmount,
|
||||
isPending: transaction.isPending);
|
||||
}
|
||||
return TransactionRow(
|
||||
onTap: () => Navigator.of(context).pushNamed(
|
||||
Routes.transactionDetails,
|
||||
arguments: transaction),
|
||||
direction: transaction.direction,
|
||||
formattedDate:
|
||||
transactionDateFormat.format(transaction.date),
|
||||
formattedAmount: formattedAmount,
|
||||
formattedFiatAmount: formattedFiatAmount,
|
||||
isPending: transaction.isPending);
|
||||
}
|
||||
|
||||
if (item is TradeListItem) {
|
||||
freeSpaceHeight -= 62;
|
||||
final trade = item.trade;
|
||||
final savedDisplayMode = settingsStore.balanceDisplayMode;
|
||||
final formattedAmount = trade.amount != null
|
||||
? savedDisplayMode == BalanceDisplayMode.hiddenBalance
|
||||
? '---'
|
||||
: trade.amountFormatted()
|
||||
: trade.amount;
|
||||
if (item is TradeListItem) {
|
||||
freeSpaceHeight -= 62;
|
||||
final trade = item.trade;
|
||||
final savedDisplayMode = settingsStore.balanceDisplayMode;
|
||||
final formattedAmount = trade.amount != null
|
||||
? savedDisplayMode == BalanceDisplayMode.hiddenBalance
|
||||
? '---'
|
||||
: trade.amountFormatted()
|
||||
: trade.amount;
|
||||
|
||||
return TradeRow(
|
||||
onTap: () => Navigator.of(context)
|
||||
.pushNamed(Routes.tradeDetails, arguments: trade),
|
||||
provider: trade.provider,
|
||||
from: trade.from,
|
||||
to: trade.to,
|
||||
createdAtFormattedDate:
|
||||
transactionDateFormat.format(trade.createdAt),
|
||||
formattedAmount: formattedAmount);
|
||||
}
|
||||
return TradeRow(
|
||||
onTap: () => Navigator.of(context)
|
||||
.pushNamed(Routes.tradeDetails, arguments: trade),
|
||||
provider: trade.provider,
|
||||
from: trade.from,
|
||||
to: trade.to,
|
||||
createdAtFormattedDate:
|
||||
transactionDateFormat.format(trade.createdAt),
|
||||
formattedAmount: formattedAmount);
|
||||
}
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel
|
||||
);
|
||||
},
|
||||
return Container(
|
||||
color: Theme.of(context).backgroundColor
|
||||
);
|
||||
},
|
||||
|
||||
childCount: itemsCount
|
||||
)
|
||||
);
|
||||
})
|
||||
],
|
||||
childCount: itemsCount
|
||||
)
|
||||
);
|
||||
})
|
||||
],
|
||||
),
|
||||
)
|
||||
),
|
||||
);
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/src/domain/common/crypto_currency.dart';
|
||||
import 'package:cake_wallet/src/domain/exchange/exchange_provider_description.dart';
|
||||
|
||||
@@ -28,10 +27,10 @@ class TradeRow extends StatelessWidget {
|
||||
child: Container(
|
||||
height: 60,
|
||||
decoration: BoxDecoration(
|
||||
color: PaletteDark.historyPanel,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
border: Border.all(
|
||||
width: 1,
|
||||
color: PaletteDark.historyPanel
|
||||
color: Theme.of(context).backgroundColor
|
||||
),
|
||||
),
|
||||
padding: EdgeInsets.only(top: 5, bottom: 5, left: 20, right: 20),
|
||||
@@ -41,7 +40,7 @@ class TradeRow extends StatelessWidget {
|
||||
width: 36,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: PaletteDark.historyPanelButton
|
||||
color: Theme.of(context).backgroundColor
|
||||
),
|
||||
child: _getPoweredImage(provider),
|
||||
),
|
||||
@@ -56,13 +55,13 @@ class TradeRow extends StatelessWidget {
|
||||
Text('${from.toString()} → ${to.toString()}',
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
)),
|
||||
formattedAmount != null
|
||||
? Text(formattedAmount + ' ' + amountCrypto,
|
||||
style: const TextStyle(
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
))
|
||||
: Container()
|
||||
]),
|
||||
@@ -71,8 +70,8 @@ class TradeRow extends StatelessWidget {
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: <Widget>[
|
||||
Text(createdAtFormattedDate,
|
||||
style: const TextStyle(
|
||||
fontSize: 14, color: PaletteDark.historyPanelText))
|
||||
style: TextStyle(
|
||||
fontSize: 14, color: Theme.of(context).primaryTextTheme.headline.color))
|
||||
]),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -26,10 +26,10 @@ class TransactionRow extends StatelessWidget {
|
||||
child: Container(
|
||||
height: 60,
|
||||
decoration: BoxDecoration(
|
||||
color: PaletteDark.historyPanel,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
border: Border.all(
|
||||
width: 1,
|
||||
color: PaletteDark.historyPanel
|
||||
color: Theme.of(context).backgroundColor
|
||||
),
|
||||
),
|
||||
padding: EdgeInsets.only(top: 5, bottom: 5, left: 20, right: 20),
|
||||
@@ -39,7 +39,7 @@ class TransactionRow extends StatelessWidget {
|
||||
width: 36,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: PaletteDark.historyPanelButton
|
||||
color: Theme.of(context).primaryTextTheme.display3.color
|
||||
),
|
||||
child: Image.asset(
|
||||
direction == TransactionDirection.incoming
|
||||
@@ -62,14 +62,14 @@ class TransactionRow extends StatelessWidget {
|
||||
(isPending ? S.of(context).pending : ''),
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
)),
|
||||
Text(direction == TransactionDirection.incoming
|
||||
? formattedAmount
|
||||
: '- ' + formattedAmount,
|
||||
style: const TextStyle(
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
))
|
||||
]),
|
||||
SizedBox(height: 5,),
|
||||
@@ -77,13 +77,13 @@ class TransactionRow extends StatelessWidget {
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: <Widget>[
|
||||
Text(formattedDate,
|
||||
style: const TextStyle(
|
||||
fontSize: 14, color: PaletteDark.historyPanelText)),
|
||||
style: TextStyle(
|
||||
fontSize: 14, color: Theme.of(context).primaryTextTheme.headline.color)),
|
||||
Text(direction == TransactionDirection.incoming
|
||||
? formattedFiatAmount
|
||||
: '- ' + formattedFiatAmount,
|
||||
style: const TextStyle(
|
||||
fontSize: 14, color: PaletteDark.historyPanelText))
|
||||
style: TextStyle(
|
||||
fontSize: 14, color: Theme.of(context).primaryTextTheme.headline.color))
|
||||
]),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'dart:async';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/src/domain/common/balance_display_mode.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
@@ -9,7 +10,6 @@ import 'package:cake_wallet/src/stores/wallet/wallet_store.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/src/domain/common/sync_status.dart';
|
||||
import 'package:cake_wallet/src/screens/receive/widgets/qr_image.dart';
|
||||
@@ -25,7 +25,6 @@ class WalletCardState extends State<WalletCard> {
|
||||
final _balanceObserverKey = GlobalKey();
|
||||
final _addressObserverKey = GlobalKey();
|
||||
|
||||
final List<Color> colorsSync = [PaletteDark.walletCardSubAddressField, PaletteDark.walletCardBottomEndSync];
|
||||
double cardWidth;
|
||||
double cardHeight;
|
||||
double screenWidth;
|
||||
@@ -58,6 +57,11 @@ class WalletCardState extends State<WalletCard> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final List<Color> colorsSync = [
|
||||
Theme.of(context).cardTheme.color,
|
||||
Theme.of(context).hoverColor
|
||||
];
|
||||
|
||||
return Container(
|
||||
width: double.infinity,
|
||||
height: cardHeight,
|
||||
@@ -75,38 +79,40 @@ class WalletCardState extends State<WalletCard> {
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.only(topLeft: Radius.circular(10), bottomLeft: Radius.circular(10)),
|
||||
color: PaletteDark.borderCardColor,
|
||||
color: Theme.of(context).focusColor,
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: PaletteDark.historyPanel.withOpacity(0.5),
|
||||
color: PaletteDark.darkNightBlue.withOpacity(0.5),
|
||||
blurRadius: 8,
|
||||
offset: Offset(5, 5))
|
||||
]
|
||||
),
|
||||
child: Container(
|
||||
width: cardWidth,
|
||||
height: cardHeight,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.only(topLeft: Radius.circular(10), bottomLeft: Radius.circular(10)),
|
||||
color: PaletteDark.historyPanel
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.only(topLeft: Radius.circular(10), bottomLeft: Radius.circular(10)),
|
||||
child: Container(
|
||||
width: cardWidth,
|
||||
height: cardHeight,
|
||||
color: Theme.of(context).cardColor,
|
||||
child: InkWell(
|
||||
onTap: () => setState(() => isFrontSide = !isFrontSide),
|
||||
child: isFrontSide
|
||||
? frontSide(colorsSync)
|
||||
: backSide(colorsSync)
|
||||
),
|
||||
),
|
||||
child: InkWell(
|
||||
onTap: () => setState(() => isFrontSide = !isFrontSide),
|
||||
child: isFrontSide
|
||||
? frontSide()
|
||||
: backSide()
|
||||
),
|
||||
),
|
||||
)
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget frontSide() {
|
||||
Widget frontSide(List<Color> colorsSync) {
|
||||
final syncStore = Provider.of<SyncStore>(context);
|
||||
final walletStore = Provider.of<WalletStore>(context);
|
||||
final settingsStore = Provider.of<SettingsStore>(context);
|
||||
final balanceStore = Provider.of<BalanceStore>(context);
|
||||
final triangleButton = Image.asset('assets/images/triangle.png');
|
||||
final triangleButton = Image.asset('assets/images/triangle.png',
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
);
|
||||
|
||||
return Observer(
|
||||
key: _syncingObserverKey,
|
||||
@@ -159,7 +165,7 @@ class WalletCardState extends State<WalletCard> {
|
||||
child: Container(
|
||||
width: 1,
|
||||
height: cardHeight,
|
||||
color: PaletteDark.borderCardColor,
|
||||
color: Theme.of(context).focusColor,
|
||||
)
|
||||
)
|
||||
: Offstage(),
|
||||
@@ -180,7 +186,7 @@ class WalletCardState extends State<WalletCard> {
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
InkWell(
|
||||
onTap: () {print('TAP 2');},
|
||||
onTap: () {},
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
Text(
|
||||
@@ -188,7 +194,7 @@ class WalletCardState extends State<WalletCard> {
|
||||
style: TextStyle(
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
SizedBox(width: 10),
|
||||
@@ -202,8 +208,8 @@ class WalletCardState extends State<WalletCard> {
|
||||
Text(
|
||||
walletStore.account.label,
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
color: PaletteDark.walletCardText
|
||||
fontSize: 12,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color
|
||||
),
|
||||
)
|
||||
],
|
||||
@@ -213,14 +219,14 @@ class WalletCardState extends State<WalletCard> {
|
||||
height: 32,
|
||||
alignment: Alignment.center,
|
||||
decoration: BoxDecoration(
|
||||
color: PaletteDark.walletCardAddressField,
|
||||
color: Theme.of(context).accentTextTheme.subtitle.backgroundColor,
|
||||
borderRadius: BorderRadius.all(Radius.circular(16))
|
||||
),
|
||||
child: Text(
|
||||
shortAddress,
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
color: PaletteDark.walletCardAddressText
|
||||
color: Theme.of(context).primaryTextTheme.caption.color
|
||||
),
|
||||
),
|
||||
)
|
||||
@@ -265,7 +271,7 @@ class WalletCardState extends State<WalletCard> {
|
||||
balanceDisplayMode.toString(),
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
color: PaletteDark.walletCardText
|
||||
color: Theme.of(context).primaryTextTheme.caption.color
|
||||
),
|
||||
),
|
||||
SizedBox(height: 5),
|
||||
@@ -273,7 +279,7 @@ class WalletCardState extends State<WalletCard> {
|
||||
balance,
|
||||
style: TextStyle(
|
||||
fontSize: 28,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
)
|
||||
],
|
||||
@@ -282,7 +288,7 @@ class WalletCardState extends State<WalletCard> {
|
||||
fiatBalance,
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
)
|
||||
],
|
||||
@@ -300,7 +306,7 @@ class WalletCardState extends State<WalletCard> {
|
||||
statusText,
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
color: PaletteDark.walletCardText
|
||||
color: Theme.of(context).primaryTextTheme.caption.color
|
||||
),
|
||||
),
|
||||
SizedBox(height: 5),
|
||||
@@ -308,7 +314,7 @@ class WalletCardState extends State<WalletCard> {
|
||||
descriptionText,
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
)
|
||||
],
|
||||
@@ -327,9 +333,11 @@ class WalletCardState extends State<WalletCard> {
|
||||
);
|
||||
}
|
||||
|
||||
Widget backSide() {
|
||||
Widget backSide(List<Color> colorsSync) {
|
||||
final walletStore = Provider.of<WalletStore>(context);
|
||||
final rightArrow = Image.asset('assets/images/right_arrow.png');
|
||||
final rightArrow = Image.asset('assets/images/right_arrow.png',
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
);
|
||||
double messageBoxHeight = 0;
|
||||
double messageBoxWidth = cardWidth - 10;
|
||||
|
||||
@@ -371,7 +379,7 @@ class WalletCardState extends State<WalletCard> {
|
||||
S.current.card_address,
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
color: PaletteDark.walletCardText
|
||||
color: Theme.of(context).primaryTextTheme.caption.color
|
||||
),
|
||||
),
|
||||
GestureDetector(
|
||||
@@ -397,7 +405,7 @@ class WalletCardState extends State<WalletCard> {
|
||||
walletStore.subaddress.address,
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
)
|
||||
@@ -412,7 +420,7 @@ class WalletCardState extends State<WalletCard> {
|
||||
child: QrImage(
|
||||
data: walletStore.subaddress.address,
|
||||
backgroundColor: Colors.transparent,
|
||||
foregroundColor: PaletteDark.walletCardText,
|
||||
foregroundColor: Theme.of(context).primaryTextTheme.caption.color
|
||||
),
|
||||
)
|
||||
],
|
||||
@@ -423,7 +431,7 @@ class WalletCardState extends State<WalletCard> {
|
||||
alignment: Alignment.center,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.all(Radius.circular(22)),
|
||||
color: PaletteDark.walletCardSubAddressField
|
||||
color: Theme.of(context).primaryTextTheme.overline.color
|
||||
),
|
||||
child: InkWell(
|
||||
onTap: () => Navigator.of(context,
|
||||
@@ -436,7 +444,7 @@ class WalletCardState extends State<WalletCard> {
|
||||
S.of(context).accounts_subaddresses,
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
rightArrow
|
||||
|
||||
@@ -2,7 +2,6 @@ import 'dart:ui';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import 'package:cake_wallet/src/screens/base_page.dart';
|
||||
import 'package:cake_wallet/src/widgets/primary_button.dart';
|
||||
@@ -14,9 +13,6 @@ class DisclaimerPage extends BasePage {
|
||||
|
||||
final bool isReadOnly;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
String get title => 'Terms of Use';
|
||||
|
||||
@@ -78,7 +74,7 @@ class DisclaimerBodyState extends State<DisclaimerPageBody> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
SizedBox(height: 10.0),
|
||||
@@ -99,7 +95,7 @@ class DisclaimerBodyState extends State<DisclaimerPageBody> {
|
||||
style: TextStyle(
|
||||
fontSize: 20.0,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
)
|
||||
@@ -120,7 +116,7 @@ class DisclaimerBodyState extends State<DisclaimerPageBody> {
|
||||
style: TextStyle(
|
||||
fontSize: 12.0,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
)
|
||||
@@ -136,7 +132,7 @@ class DisclaimerBodyState extends State<DisclaimerPageBody> {
|
||||
_fileText,
|
||||
style: TextStyle(
|
||||
fontSize: 12.0,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
))
|
||||
],
|
||||
@@ -154,7 +150,7 @@ class DisclaimerBodyState extends State<DisclaimerPageBody> {
|
||||
style: TextStyle(
|
||||
fontSize: 14.0,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
)
|
||||
@@ -240,8 +236,8 @@ class DisclaimerBodyState extends State<DisclaimerPageBody> {
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
colors: [
|
||||
PaletteDark.historyPanel.withOpacity(0.0),
|
||||
PaletteDark.historyPanel,
|
||||
Theme.of(context).backgroundColor.withOpacity(0.0),
|
||||
Theme.of(context).backgroundColor,
|
||||
],
|
||||
begin: FractionalOffset.topCenter,
|
||||
end: FractionalOffset.bottomCenter,
|
||||
@@ -279,10 +275,10 @@ class DisclaimerBodyState extends State<DisclaimerPageBody> {
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(
|
||||
color: Palette.lightGrey, width: 1.0),
|
||||
color: Theme.of(context).primaryTextTheme.caption.color, width: 1.0),
|
||||
borderRadius: BorderRadius.all(
|
||||
Radius.circular(8.0)),
|
||||
color: PaletteDark.historyPanel),
|
||||
color: Theme.of(context).backgroundColor),
|
||||
child: _checked
|
||||
? Icon(
|
||||
Icons.check,
|
||||
@@ -296,7 +292,7 @@ class DisclaimerBodyState extends State<DisclaimerPageBody> {
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 14.0,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
)
|
||||
],
|
||||
|
||||
@@ -16,7 +16,10 @@ class ExchangePage extends BasePage {
|
||||
String get title => S.current.exchange;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.walletCardSubAddressField;
|
||||
Color get backgroundLightColor => Palette.darkLavender;
|
||||
|
||||
@override
|
||||
Color get backgroundDarkColor => PaletteDark.moderateBlue;
|
||||
|
||||
@override
|
||||
Widget middle(BuildContext context) {
|
||||
@@ -38,7 +41,7 @@ class ExchangePage extends BasePage {
|
||||
child: Text(
|
||||
S.of(context).clear,
|
||||
style: TextStyle(
|
||||
color: PaletteDark.walletCardText,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color,
|
||||
fontWeight: FontWeight.w500,
|
||||
fontSize: 14),
|
||||
),
|
||||
|
||||
@@ -16,7 +16,10 @@ class ExchangeTemplatePage extends BasePage {
|
||||
String get title => S.current.exchange_new_template;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.walletCardSubAddressField;
|
||||
Color get backgroundLightColor => Palette.darkLavender;
|
||||
|
||||
@override
|
||||
Color get backgroundDarkColor => PaletteDark.moderateBlue;
|
||||
|
||||
@override
|
||||
Widget trailing(BuildContext context) {
|
||||
|
||||
@@ -6,7 +6,6 @@ import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
import 'package:mobx/mobx.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/routes.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/src/domain/common/crypto_currency.dart';
|
||||
@@ -63,19 +62,18 @@ class BaseExchangeWidgetState extends State<BaseExchangeWidget> {
|
||||
final _formKey = GlobalKey<FormState>();
|
||||
var _isReactionsSet = false;
|
||||
|
||||
final Image arrowBottomPurple = Image.asset(
|
||||
'assets/images/arrow_bottom_purple_icon.png',
|
||||
color: Colors.white,
|
||||
height: 8,
|
||||
);
|
||||
final Image arrowBottomCakeGreen = Image.asset(
|
||||
'assets/images/arrow_bottom_cake_green.png',
|
||||
color: Colors.white,
|
||||
height: 8,
|
||||
);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final Image arrowBottomPurple = Image.asset(
|
||||
'assets/images/arrow_bottom_purple_icon.png',
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
height: 8,
|
||||
);
|
||||
final Image arrowBottomCakeGreen = Image.asset(
|
||||
'assets/images/arrow_bottom_cake_green.png',
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
height: 8,
|
||||
);
|
||||
|
||||
final depositWalletName =
|
||||
exchangeStore.depositCurrency == CryptoCurrency.xmr
|
||||
@@ -90,7 +88,7 @@ class BaseExchangeWidgetState extends State<BaseExchangeWidget> {
|
||||
(_) => _setReactions(context, exchangeStore, walletStore));
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
child: Form(
|
||||
key: _formKey,
|
||||
child: ScrollableWithBottomSection(
|
||||
@@ -98,12 +96,12 @@ class BaseExchangeWidgetState extends State<BaseExchangeWidget> {
|
||||
content: Column(
|
||||
children: <Widget>[
|
||||
TopPanel(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
edgeInsets: EdgeInsets.only(bottom: 24),
|
||||
widget: Column(
|
||||
children: <Widget>[
|
||||
TopPanel(
|
||||
color: PaletteDark.walletCardSubAddressField,
|
||||
color: Theme.of(context).accentTextTheme.title.color,
|
||||
widget: Observer(
|
||||
builder: (_) => ExchangeCard(
|
||||
key: depositKey,
|
||||
@@ -121,8 +119,8 @@ class BaseExchangeWidgetState extends State<BaseExchangeWidget> {
|
||||
onCurrencySelected: (currency) =>
|
||||
exchangeStore.changeDepositCurrency(currency: currency),
|
||||
imageArrow: arrowBottomPurple,
|
||||
currencyButtonColor: PaletteDark.walletCardSubAddressField,
|
||||
addressButtonsColor: PaletteDark.menuList,
|
||||
currencyButtonColor: Theme.of(context).accentTextTheme.title.color,
|
||||
addressButtonsColor: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
currencyValueValidator: (value) {
|
||||
exchangeStore.validateCryptoCurrency(value);
|
||||
return exchangeStore.errorMessage;
|
||||
@@ -154,7 +152,8 @@ class BaseExchangeWidgetState extends State<BaseExchangeWidget> {
|
||||
onCurrencySelected: (currency) => exchangeStore
|
||||
.changeReceiveCurrency(currency: currency),
|
||||
imageArrow: arrowBottomCakeGreen,
|
||||
currencyButtonColor: PaletteDark.menuList,
|
||||
currencyButtonColor: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
addressButtonsColor: Theme.of(context).accentTextTheme.title.color,
|
||||
currencyValueValidator: (value) {
|
||||
exchangeStore.validateCryptoCurrency(value);
|
||||
return exchangeStore.errorMessage;
|
||||
@@ -185,7 +184,7 @@ class BaseExchangeWidgetState extends State<BaseExchangeWidget> {
|
||||
style: TextStyle(
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: PaletteDark.walletCardText
|
||||
color: Theme.of(context).primaryTextTheme.caption.color
|
||||
),
|
||||
)
|
||||
],
|
||||
@@ -215,7 +214,7 @@ class BaseExchangeWidgetState extends State<BaseExchangeWidget> {
|
||||
child: DottedBorder(
|
||||
borderType: BorderType.RRect,
|
||||
dashPattern: [8, 4],
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
strokeWidth: 2,
|
||||
radius: Radius.circular(20),
|
||||
child: Container(
|
||||
@@ -232,7 +231,7 @@ class BaseExchangeWidgetState extends State<BaseExchangeWidget> {
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: PaletteDark.walletCardText
|
||||
color: Theme.of(context).primaryTextTheme.caption.color
|
||||
),
|
||||
),
|
||||
)
|
||||
@@ -273,7 +272,7 @@ class BaseExchangeWidgetState extends State<BaseExchangeWidget> {
|
||||
child: Text(
|
||||
description,
|
||||
style: TextStyle(
|
||||
color: PaletteDark.walletCardText,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color,
|
||||
fontSize: 12
|
||||
),
|
||||
),
|
||||
|
||||
@@ -26,7 +26,7 @@ class CurrencyPicker extends StatelessWidget {
|
||||
child: BackdropFilter(
|
||||
filter: ImageFilter.blur(sigmaX: 3.0, sigmaY: 3.0),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(color: PaletteDark.historyPanel.withOpacity(0.75)),
|
||||
decoration: BoxDecoration(color: PaletteDark.darkNightBlue.withOpacity(0.75)),
|
||||
child: Center(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
@@ -53,7 +53,7 @@ class CurrencyPicker extends StatelessWidget {
|
||||
child: Container(
|
||||
height: 400,
|
||||
width: 300,
|
||||
color: PaletteDark.walletCardSubAddressField,
|
||||
color: Theme.of(context).dividerColor,
|
||||
child: GridView.count(
|
||||
shrinkWrap: true,
|
||||
crossAxisCount: 3,
|
||||
@@ -65,7 +65,7 @@ class CurrencyPicker extends StatelessWidget {
|
||||
|
||||
if (index == 14) {
|
||||
return Container(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).primaryTextTheme.display1.color,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -73,11 +73,11 @@ class CurrencyPicker extends StatelessWidget {
|
||||
final isItemSelected = index == selectedAtIndex;
|
||||
|
||||
final color = isItemSelected
|
||||
? PaletteDark.historyPanel
|
||||
: PaletteDark.menuList;
|
||||
? Theme.of(context).accentTextTheme.subtitle.decorationColor
|
||||
: Theme.of(context).primaryTextTheme.display1.color;
|
||||
final textColor = isItemSelected
|
||||
? Colors.blue
|
||||
: Colors.white;
|
||||
: Theme.of(context).primaryTextTheme.title.color;
|
||||
|
||||
return GestureDetector(
|
||||
onTap: () {
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/src/domain/common/crypto_currency.dart';
|
||||
import 'package:cake_wallet/src/widgets/address_text_field.dart';
|
||||
@@ -21,7 +20,7 @@ class ExchangeCard extends StatefulWidget {
|
||||
this.onCurrencySelected,
|
||||
this.imageArrow,
|
||||
this.currencyButtonColor = Colors.transparent,
|
||||
this.addressButtonsColor = PaletteDark.walletCardSubAddressField,
|
||||
this.addressButtonsColor = Colors.transparent,
|
||||
this.currencyValueValidator,
|
||||
this.addressTextFieldValidator})
|
||||
: super(key: key);
|
||||
@@ -124,7 +123,7 @@ class ExchangeCardState extends State<ExchangeCard> {
|
||||
style: TextStyle(
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: PaletteDark.walletCardText
|
||||
color: Theme.of(context).primaryTextTheme.caption.color
|
||||
),
|
||||
)
|
||||
],
|
||||
@@ -144,7 +143,6 @@ class ExchangeCardState extends State<ExchangeCard> {
|
||||
RegExp('[\\-|\\ |\\,]'))
|
||||
],
|
||||
hintText: '0.0000',
|
||||
borderColor: PaletteDark.borderCardColor,
|
||||
validator: widget.currencyValueValidator
|
||||
),
|
||||
Positioned(
|
||||
@@ -165,7 +163,7 @@ class ExchangeCardState extends State<ExchangeCard> {
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.w600,
|
||||
fontSize: 16,
|
||||
color: Colors.white)),
|
||||
color: Theme.of(context).primaryTextTheme.title.color)),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(left: 5),
|
||||
child: widget.imageArrow,
|
||||
@@ -189,7 +187,7 @@ class ExchangeCardState extends State<ExchangeCard> {
|
||||
style: TextStyle(
|
||||
fontSize: 10,
|
||||
height: 1.2,
|
||||
color: PaletteDark.walletCardText),
|
||||
color: Theme.of(context).primaryTextTheme.caption.color),
|
||||
)
|
||||
: Offstage(),
|
||||
_min != null ? SizedBox(width: 10) : Offstage(),
|
||||
@@ -200,7 +198,7 @@ class ExchangeCardState extends State<ExchangeCard> {
|
||||
style: TextStyle(
|
||||
fontSize: 10,
|
||||
height: 1.2,
|
||||
color: PaletteDark.walletCardText))
|
||||
color: Theme.of(context).primaryTextTheme.caption.color))
|
||||
: Offstage(),
|
||||
]),
|
||||
),
|
||||
|
||||
@@ -4,7 +4,6 @@ import 'package:cake_wallet/src/domain/exchange/exchange_provider_description.da
|
||||
import 'package:cake_wallet/src/domain/exchange/exchange_provider.dart';
|
||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/src/widgets/picker.dart';
|
||||
|
||||
class PresentProviderPicker extends StatelessWidget {
|
||||
@@ -12,11 +11,13 @@ class PresentProviderPicker extends StatelessWidget {
|
||||
|
||||
final ExchangeStore exchangeStore;
|
||||
|
||||
final Image arrowBottom =
|
||||
Image.asset('assets/images/arrow_bottom_purple_icon.png', color: Colors.white, height: 6);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final Image arrowBottom =
|
||||
Image.asset('assets/images/arrow_bottom_purple_icon.png',
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
height: 6);
|
||||
|
||||
return FlatButton(
|
||||
onPressed: () => _presentProviderPicker(context),
|
||||
highlightColor: Colors.transparent,
|
||||
@@ -33,13 +34,13 @@ class PresentProviderPicker extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Colors.white)),
|
||||
color: Theme.of(context).primaryTextTheme.title.color)),
|
||||
Observer(
|
||||
builder: (_) => Text('${exchangeStore.provider.title}',
|
||||
style: TextStyle(
|
||||
fontSize: 10.0,
|
||||
fontWeight: FontWeight.w400,
|
||||
color:PaletteDark.walletCardText)))
|
||||
color: Theme.of(context).primaryTextTheme.caption.color)))
|
||||
],
|
||||
),
|
||||
SizedBox(width: 5),
|
||||
|
||||
@@ -6,24 +6,21 @@ 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/src/domain/exchange/trade.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
|
||||
class ExchangeConfirmPage extends BasePage {
|
||||
ExchangeConfirmPage({@required this.trade});
|
||||
|
||||
final Trade trade;
|
||||
final copyImage = Image.asset('assets/images/copy_content.png', color: Colors.white);
|
||||
|
||||
@override
|
||||
String get title => S.current.copy_id;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) {
|
||||
final copyImage = Image.asset('assets/images/copy_content.png',
|
||||
color: Theme.of(context).primaryTextTheme.title.color);
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
padding: EdgeInsets.all(24),
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
@@ -38,7 +35,7 @@ class ExchangeConfirmPage extends BasePage {
|
||||
style: TextStyle(
|
||||
fontSize: 18.0,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Colors.white),
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(top: 60),
|
||||
@@ -48,7 +45,7 @@ class ExchangeConfirmPage extends BasePage {
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Colors.white),
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
@@ -72,7 +69,7 @@ class ExchangeConfirmPage extends BasePage {
|
||||
padding: EdgeInsets.only(left: 24, right: 24),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.all(Radius.circular(30)),
|
||||
color: PaletteDark.menuList
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
@@ -85,7 +82,7 @@ class ExchangeConfirmPage extends BasePage {
|
||||
style: TextStyle(
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -6,7 +6,6 @@ import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/src/stores/exchange_trade/exchange_trade_store.dart';
|
||||
import 'package:cake_wallet/src/stores/send/send_store.dart';
|
||||
@@ -24,9 +23,6 @@ class ExchangeTradePage extends BasePage {
|
||||
@override
|
||||
String get title => S.current.exchange;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) => ExchangeTradeForm();
|
||||
}
|
||||
@@ -51,7 +47,6 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
|
||||
_setEffects(context);
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
child: ScrollableWithBottomSection(
|
||||
contentPadding: EdgeInsets.only(left: 24, right: 24, top: 24),
|
||||
content: Observer(builder: (_) {
|
||||
@@ -78,14 +73,14 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
|
||||
height: 2,
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 14.0,
|
||||
color: Colors.white),
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
),
|
||||
Text(
|
||||
'${trade.id ?? fetchingLabel}',
|
||||
style: TextStyle(
|
||||
fontSize: 14.0,
|
||||
height: 2,
|
||||
color: PaletteDark.walletCardText),
|
||||
color: Theme.of(context).primaryTextTheme.caption.color),
|
||||
)
|
||||
],
|
||||
),
|
||||
@@ -98,14 +93,14 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
|
||||
height: 2,
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 14.0,
|
||||
color: Colors.white),
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
),
|
||||
Text(
|
||||
'${trade.amount ?? fetchingLabel}',
|
||||
style: TextStyle(
|
||||
fontSize: 14.0,
|
||||
height: 2,
|
||||
color: PaletteDark.walletCardText),
|
||||
color: Theme.of(context).primaryTextTheme.caption.color),
|
||||
)
|
||||
],
|
||||
),
|
||||
@@ -119,14 +114,14 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
|
||||
height: 2,
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 14.0,
|
||||
color: Colors.white),
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
),
|
||||
Text(
|
||||
'${trade.extraId ?? fetchingLabel}',
|
||||
style: TextStyle(
|
||||
fontSize: 14.0,
|
||||
height: 2,
|
||||
color: PaletteDark.walletCardText),
|
||||
color: Theme.of(context).primaryTextTheme.caption.color),
|
||||
)
|
||||
],
|
||||
)
|
||||
@@ -139,7 +134,7 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
|
||||
style: TextStyle(
|
||||
fontSize: 14.0,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white,
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
height: 2),
|
||||
),
|
||||
Text(
|
||||
@@ -147,7 +142,7 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
|
||||
style: TextStyle(
|
||||
fontSize: 14.0,
|
||||
height: 2,
|
||||
color: PaletteDark.walletCardText),
|
||||
color: Theme.of(context).primaryTextTheme.caption.color),
|
||||
)
|
||||
],
|
||||
),
|
||||
@@ -159,10 +154,10 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
|
||||
S.of(context).offer_expires_in,
|
||||
style: TextStyle(
|
||||
fontSize: 14.0,
|
||||
color: Colors.white),
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
),
|
||||
TimerWidget(trade.expiredAt,
|
||||
color: PaletteDark.walletCardText)
|
||||
color: Theme.of(context).primaryTextTheme.caption.color)
|
||||
],
|
||||
)
|
||||
: Container(),
|
||||
@@ -186,7 +181,7 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
|
||||
child: QrImage(
|
||||
data: trade.inputAddress ?? fetchingLabel,
|
||||
backgroundColor: Colors.transparent,
|
||||
foregroundColor: PaletteDark.walletCardText,
|
||||
foregroundColor: Theme.of(context).primaryTextTheme.display4.color,
|
||||
),
|
||||
),
|
||||
)),
|
||||
@@ -208,7 +203,7 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
|
||||
style: TextStyle(
|
||||
fontSize: 14.0,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white),
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
),
|
||||
),
|
||||
Container(
|
||||
@@ -217,7 +212,9 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
|
||||
child: Text(
|
||||
trade.inputAddress ?? fetchingLabel,
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(fontSize: 14.0, color: PaletteDark.walletCardText),
|
||||
style: TextStyle(
|
||||
fontSize: 14.0,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -242,8 +239,8 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
|
||||
));
|
||||
},
|
||||
text: S.of(context).copy_address,
|
||||
color: PaletteDark.menuList,
|
||||
textColor: Colors.white)
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
textColor: Theme.of(context).primaryTextTheme.title.color)
|
||||
),
|
||||
)),
|
||||
Flexible(
|
||||
@@ -264,8 +261,8 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
|
||||
));
|
||||
},
|
||||
text: S.of(context).copy_id,
|
||||
color: PaletteDark.menuList,
|
||||
textColor: Colors.white)
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
textColor: Theme.of(context).primaryTextTheme.title.color)
|
||||
),
|
||||
))
|
||||
],
|
||||
@@ -284,7 +281,7 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
|
||||
textAlign: TextAlign.left,
|
||||
style: TextStyle(
|
||||
fontSize: 13.0,
|
||||
color: Colors.white),
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
),
|
||||
),
|
||||
Text(
|
||||
@@ -292,7 +289,7 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
|
||||
textAlign: TextAlign.left,
|
||||
style: TextStyle(
|
||||
fontSize: 13.0,
|
||||
color: Colors.white),
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
)
|
||||
],
|
||||
);
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class CopyButton extends StatelessWidget {
|
||||
const CopyButton(
|
||||
{@required this.onPressed,
|
||||
@required this.text,
|
||||
@required this.color,
|
||||
@required this.borderColor});
|
||||
|
||||
final VoidCallback onPressed;
|
||||
final Color color;
|
||||
final Color borderColor;
|
||||
final String text;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ButtonTheme(
|
||||
minWidth: double.infinity,
|
||||
height: 44.0,
|
||||
child: FlatButton(
|
||||
onPressed: onPressed,
|
||||
color: color,
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(color: borderColor),
|
||||
borderRadius: BorderRadius.circular(10.0)),
|
||||
child: Text(text, style: TextStyle(fontSize: 14.0)),
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -5,15 +5,11 @@ import 'package:provider/provider.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/src/stores/settings/settings_store.dart';
|
||||
import 'package:cake_wallet/src/screens/base_page.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
|
||||
class FaqPage extends BasePage {
|
||||
@override
|
||||
String get title => S.current.faq;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) => FaqForm();
|
||||
}
|
||||
@@ -24,25 +20,25 @@ class FaqForm extends StatefulWidget {
|
||||
}
|
||||
|
||||
class FaqFormState extends State<FaqForm> {
|
||||
final addIcon = Icon(Icons.add, color: Colors.white);
|
||||
final removeIcon = Icon(Icons.remove, color: Colors.green);
|
||||
List<Icon> icons;
|
||||
List<Color> colors;
|
||||
bool isLoaded = false;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final addIcon = Icon(Icons.add, color: Theme.of(context).primaryTextTheme.title.color);
|
||||
final removeIcon = Icon(Icons.remove, color: Colors.green);
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
padding: EdgeInsets.only(top: 12),
|
||||
child: Container(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.headline.color,
|
||||
child: FutureBuilder(
|
||||
builder: (context, snapshot) {
|
||||
final faqItems = jsonDecode(snapshot.data.toString()) as List;
|
||||
|
||||
if (snapshot.hasData) {
|
||||
setIconsAndColors(faqItems.length);
|
||||
setIconsAndColors(context, faqItems.length, addIcon);
|
||||
}
|
||||
|
||||
return SingleChildScrollView(
|
||||
@@ -74,7 +70,7 @@ class FaqFormState extends State<FaqForm> {
|
||||
),
|
||||
),
|
||||
),
|
||||
backgroundColor: PaletteDark.menuHeader,
|
||||
backgroundColor: Theme.of(context).accentTextTheme.headline.backgroundColor,
|
||||
onExpansionChanged: (value) {
|
||||
setState(() {
|
||||
if (value) {
|
||||
@@ -82,7 +78,7 @@ class FaqFormState extends State<FaqForm> {
|
||||
colors[index] = Colors.green;
|
||||
} else {
|
||||
icons[index] = addIcon;
|
||||
colors[index] = Colors.white;
|
||||
colors[index] = Theme.of(context).primaryTextTheme.title.color;
|
||||
}
|
||||
});
|
||||
},
|
||||
@@ -101,7 +97,7 @@ class FaqFormState extends State<FaqForm> {
|
||||
itemChild,
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
))
|
||||
@@ -111,7 +107,7 @@ class FaqFormState extends State<FaqForm> {
|
||||
);
|
||||
},
|
||||
separatorBuilder: (_, __) =>
|
||||
Container(color: PaletteDark.mainBackgroundColor, height: 1.0),
|
||||
Container(color: Theme.of(context).dividerColor, height: 1.0),
|
||||
itemCount: faqItems == null ? 0 : faqItems.length,
|
||||
),
|
||||
);
|
||||
@@ -122,13 +118,13 @@ class FaqFormState extends State<FaqForm> {
|
||||
);
|
||||
}
|
||||
|
||||
void setIconsAndColors(int index) {
|
||||
void setIconsAndColors(BuildContext context, int index, Icon icon) {
|
||||
if (isLoaded) {
|
||||
return;
|
||||
}
|
||||
|
||||
icons = List.generate(index, (int i) => addIcon);
|
||||
colors = List.generate(index, (int i) => Colors.white);
|
||||
icons = List.generate(index, (int i) => icon);
|
||||
colors = List.generate(index, (int i) => Theme.of(context).primaryTextTheme.title.color);
|
||||
|
||||
isLoaded = true;
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@ import 'package:cake_wallet/src/domain/services/wallet_service.dart';
|
||||
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/palette.dart';
|
||||
import 'package:cake_wallet/src/stores/seed_language/seed_language_store.dart';
|
||||
import 'package:cake_wallet/src/screens/new_wallet/widgets/select_button.dart';
|
||||
import 'package:cake_wallet/src/screens/seed_language/widgets/seed_language_picker.dart';
|
||||
@@ -31,9 +30,6 @@ class NewWalletPage extends BasePage {
|
||||
@override
|
||||
String get title => S.current.new_wallet;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) => WalletNameForm();
|
||||
}
|
||||
@@ -102,7 +98,6 @@ class _WalletNameFormState extends State<WalletNameForm> {
|
||||
});
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
padding: EdgeInsets.only(top: 24),
|
||||
child: ScrollableWithBottomSection(
|
||||
contentPadding: EdgeInsets.only(left: 24, right: 24, bottom: 24),
|
||||
@@ -124,21 +119,21 @@ class _WalletNameFormState extends State<WalletNameForm> {
|
||||
style: TextStyle(
|
||||
fontSize: 20.0,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Colors.white),
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
controller: nameController,
|
||||
decoration: InputDecoration(
|
||||
hintStyle: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: PaletteDark.walletCardText),
|
||||
color: Theme.of(context).primaryTextTheme.caption.color),
|
||||
hintText: S.of(context).wallet_name,
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide:
|
||||
BorderSide(
|
||||
color: PaletteDark.walletCardSubAddressField,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.walletCardSubAddressField,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0))),
|
||||
validator: (value) {
|
||||
walletCreationStore.validateWalletName(value);
|
||||
@@ -153,7 +148,7 @@ class _WalletNameFormState extends State<WalletNameForm> {
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -162,8 +157,8 @@ class _WalletNameFormState extends State<WalletNameForm> {
|
||||
builder: (_) => SelectButton(
|
||||
image: null,
|
||||
text: seedLocales[seedLanguages.indexOf(seedLanguageStore.selectedSeedLanguage)],
|
||||
color: PaletteDark.menuList,
|
||||
textColor: Colors.white,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
textColor: Theme.of(context).primaryTextTheme.title.color,
|
||||
onTap: () async => await showDialog(
|
||||
context: context,
|
||||
builder: (BuildContext context) => SeedLanguagePicker()
|
||||
|
||||
@@ -4,7 +4,6 @@ import 'package:cake_wallet/generated/i18n.dart';
|
||||
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/palette.dart';
|
||||
import 'package:cake_wallet/src/screens/new_wallet/widgets/select_button.dart';
|
||||
import 'package:cake_wallet/routes.dart';
|
||||
|
||||
@@ -12,9 +11,6 @@ class NewWalletTypePage extends BasePage {
|
||||
@override
|
||||
String get title => S.current.new_wallet;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) => WalletTypeForm();
|
||||
}
|
||||
@@ -35,10 +31,10 @@ class WalletTypeFormState extends State<WalletTypeForm> {
|
||||
bool isMoneroSelected;
|
||||
bool isBitcoinSelected;
|
||||
|
||||
Color moneroBackgroundColor;
|
||||
Color moneroTextColor;
|
||||
Color bitcoinBackgroundColor;
|
||||
Color bitcoinTextColor;
|
||||
Color moneroBackgroundColor = Colors.transparent;
|
||||
Color moneroTextColor = Colors.transparent;
|
||||
Color bitcoinBackgroundColor = Colors.transparent;
|
||||
Color bitcoinTextColor = Colors.transparent;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@@ -46,18 +42,21 @@ class WalletTypeFormState extends State<WalletTypeForm> {
|
||||
isMoneroSelected = false;
|
||||
isBitcoinSelected = false;
|
||||
|
||||
moneroBackgroundColor = PaletteDark.menuList;
|
||||
moneroTextColor = Colors.white;
|
||||
bitcoinBackgroundColor = PaletteDark.menuList;
|
||||
bitcoinTextColor = Colors.white;
|
||||
|
||||
super.initState();
|
||||
WidgetsBinding.instance.addPostFrameCallback(afterLayout);
|
||||
}
|
||||
|
||||
void afterLayout(dynamic _) {
|
||||
moneroBackgroundColor = Theme.of(context).accentTextTheme.title.backgroundColor;
|
||||
moneroTextColor = Theme.of(context).primaryTextTheme.title.color;
|
||||
bitcoinBackgroundColor = Theme.of(context).accentTextTheme.title.backgroundColor;
|
||||
bitcoinTextColor = Theme.of(context).primaryTextTheme.title.color;
|
||||
setState(() {});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
padding: EdgeInsets.only(top: 24),
|
||||
child: ScrollableWithBottomSection(
|
||||
contentPadding: EdgeInsets.only(left: 24, right: 24, bottom: 24),
|
||||
@@ -78,7 +77,7 @@ class WalletTypeFormState extends State<WalletTypeForm> {
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -98,7 +97,7 @@ class WalletTypeFormState extends State<WalletTypeForm> {
|
||||
text: 'Monero',
|
||||
color: moneroBackgroundColor,
|
||||
textColor: moneroTextColor,
|
||||
onTap: () => onSelectMoneroButton()),
|
||||
onTap: () => onSelectMoneroButton(context)),
|
||||
)
|
||||
],
|
||||
),
|
||||
@@ -118,28 +117,28 @@ class WalletTypeFormState extends State<WalletTypeForm> {
|
||||
);
|
||||
}
|
||||
|
||||
void onSelectMoneroButton() {
|
||||
void onSelectMoneroButton(BuildContext context) {
|
||||
isMoneroSelected = true;
|
||||
isBitcoinSelected = false;
|
||||
isDisabledButton = false;
|
||||
|
||||
moneroBackgroundColor = Colors.white;
|
||||
moneroTextColor = PaletteDark.selectButtonText;
|
||||
bitcoinBackgroundColor = PaletteDark.menuList;
|
||||
bitcoinTextColor = Colors.white;
|
||||
moneroBackgroundColor = Theme.of(context).accentTextTheme.title.decorationColor;
|
||||
moneroTextColor = Theme.of(context).primaryTextTheme.title.backgroundColor;
|
||||
bitcoinBackgroundColor = Theme.of(context).accentTextTheme.title.backgroundColor;
|
||||
bitcoinTextColor = Theme.of(context).primaryTextTheme.title.color;
|
||||
|
||||
setState(() {});
|
||||
}
|
||||
|
||||
void onSelectBitcoinButton() {
|
||||
void onSelectBitcoinButton(BuildContext context) {
|
||||
isMoneroSelected = false;
|
||||
isBitcoinSelected = true;
|
||||
isDisabledButton = false;
|
||||
|
||||
moneroBackgroundColor = PaletteDark.menuList;
|
||||
moneroTextColor = Colors.white;
|
||||
bitcoinBackgroundColor = Colors.white;
|
||||
bitcoinTextColor = PaletteDark.selectButtonText;
|
||||
moneroBackgroundColor = Theme.of(context).accentTextTheme.title.backgroundColor;
|
||||
moneroTextColor = Theme.of(context).primaryTextTheme.title.color;
|
||||
bitcoinBackgroundColor = moneroBackgroundColor = Theme.of(context).accentTextTheme.title.decorationColor;
|
||||
bitcoinTextColor = Theme.of(context).primaryTextTheme.title.backgroundColor;
|
||||
|
||||
setState(() {});
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/src/stores/node_list/node_list_store.dart';
|
||||
import 'package:cake_wallet/src/widgets/primary_button.dart';
|
||||
@@ -13,9 +12,6 @@ class NewNodePage extends BasePage {
|
||||
@override
|
||||
String get title => S.current.node_new;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) => NewNodePageForm();
|
||||
}
|
||||
@@ -58,7 +54,6 @@ class NewNodeFormState extends State<NewNodePageForm> {
|
||||
_nodePortController.addListener(() {onHandleControllers(nodeList);});
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
padding: EdgeInsets.only(left: 24, right: 24),
|
||||
child: ScrollableWithBottomSection(
|
||||
contentPadding: EdgeInsets.only(bottom: 24.0),
|
||||
@@ -72,22 +67,22 @@ class NewNodeFormState extends State<NewNodePageForm> {
|
||||
child: TextFormField(
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
decoration: InputDecoration(
|
||||
hintStyle:
|
||||
TextStyle(
|
||||
color: PaletteDark.walletCardText,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color,
|
||||
fontSize: 16
|
||||
),
|
||||
hintText: S.of(context).node_address,
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0))),
|
||||
controller: _nodeAddressController,
|
||||
validator: (value) {
|
||||
@@ -105,24 +100,24 @@ class NewNodeFormState extends State<NewNodePageForm> {
|
||||
child: TextFormField(
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
keyboardType: TextInputType.numberWithOptions(
|
||||
signed: false, decimal: false),
|
||||
decoration: InputDecoration(
|
||||
hintStyle:
|
||||
TextStyle(
|
||||
color: PaletteDark.walletCardText,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color,
|
||||
fontSize: 16
|
||||
),
|
||||
hintText: S.of(context).node_port,
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0))),
|
||||
controller: _nodePortController,
|
||||
validator: (value) {
|
||||
@@ -140,22 +135,22 @@ class NewNodeFormState extends State<NewNodePageForm> {
|
||||
child: TextFormField(
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
decoration: InputDecoration(
|
||||
hintStyle:
|
||||
TextStyle(
|
||||
color: PaletteDark.walletCardText,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color,
|
||||
fontSize: 16
|
||||
),
|
||||
hintText: S.of(context).login,
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0))),
|
||||
controller: _loginController,
|
||||
validator: (value) => null,
|
||||
@@ -170,22 +165,22 @@ class NewNodeFormState extends State<NewNodePageForm> {
|
||||
child: TextFormField(
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
decoration: InputDecoration(
|
||||
hintStyle:
|
||||
TextStyle(
|
||||
color: PaletteDark.walletCardText,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color,
|
||||
fontSize: 16
|
||||
),
|
||||
hintText: S.of(context).password,
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0))),
|
||||
controller: _passwordController,
|
||||
validator: (value) => null,
|
||||
|
||||
@@ -18,9 +18,6 @@ class NodeListPage extends BasePage {
|
||||
@override
|
||||
String get title => S.current.nodes;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
Widget trailing(context) {
|
||||
final nodeList = Provider.of<NodeListStore>(context);
|
||||
@@ -31,7 +28,7 @@ class NodeListPage extends BasePage {
|
||||
width: 72,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.all(Radius.circular(16)),
|
||||
color: PaletteDark.menuList
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor
|
||||
),
|
||||
child: ButtonTheme(
|
||||
minWidth: double.minPositive,
|
||||
@@ -82,24 +79,25 @@ class NodeListPageBodyState extends State<NodeListPageBody> {
|
||||
|
||||
final trashImage = Image.asset('assets/images/trash.png', height: 32, width: 32, color: Colors.white);
|
||||
|
||||
final currentColor = PaletteDark.menuHeader;
|
||||
final notCurrentColor = PaletteDark.menuList;
|
||||
final currentColor = Theme.of(context).accentTextTheme.subtitle.decorationColor;
|
||||
final notCurrentColor = Theme.of(context).accentTextTheme.title.backgroundColor;
|
||||
|
||||
final currentTextColor = Colors.blue;
|
||||
final notCurrentTextColor = Colors.white;
|
||||
final notCurrentTextColor = Theme.of(context).primaryTextTheme.title.color;
|
||||
|
||||
return Container(
|
||||
height: double.infinity,
|
||||
color: PaletteDark.historyPanel,
|
||||
padding: EdgeInsets.only(top: 12),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: <Widget>[
|
||||
NodeListRow(
|
||||
title: S.of(context).add_new_node,
|
||||
trailing: Icon(Icons.add, color: Colors.white, size: 24.0),
|
||||
color: PaletteDark.menuList,
|
||||
textColor: Colors.white,
|
||||
trailing: Icon(Icons.add,
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
size: 24.0),
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
textColor: Theme.of(context).primaryTextTheme.title.color,
|
||||
onTap: () async =>
|
||||
await Navigator.of(context).pushNamed(Routes.newNode),
|
||||
isDrawTop: true,
|
||||
@@ -112,10 +110,10 @@ class NodeListPageBodyState extends State<NodeListPageBody> {
|
||||
separatorBuilder: (_, __) => Container(
|
||||
height: 1,
|
||||
padding: EdgeInsets.only(left: 24),
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
child: Container(
|
||||
height: 1,
|
||||
color: PaletteDark.walletCardTopEndSync,
|
||||
color: Theme.of(context).dividerColor,
|
||||
),
|
||||
),
|
||||
itemCount: nodeList.nodes.length,
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
|
||||
class NodeListRow extends StatelessWidget {
|
||||
NodeListRow({
|
||||
@@ -27,7 +26,7 @@ class NodeListRow extends StatelessWidget {
|
||||
? Container(
|
||||
width: double.infinity,
|
||||
height: 1,
|
||||
color: PaletteDark.walletCardTopEndSync,
|
||||
color: Theme.of(context).dividerColor,
|
||||
)
|
||||
: Offstage(),
|
||||
Container(
|
||||
@@ -54,7 +53,7 @@ class NodeListRow extends StatelessWidget {
|
||||
? Container(
|
||||
width: double.infinity,
|
||||
height: 1,
|
||||
color: PaletteDark.walletCardTopEndSync,
|
||||
color: Theme.of(context).dividerColor,
|
||||
)
|
||||
: Offstage(),
|
||||
],
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/src/stores/settings/settings_store.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
|
||||
@@ -29,8 +28,6 @@ class PinCodeState<T extends PinCodeWidget> extends State<T> {
|
||||
static const defaultPinLength = 4;
|
||||
static const sixPinLength = 6;
|
||||
static const fourPinLength = 4;
|
||||
static final deleteIconImage = Image.asset('assets/images/delete_icon.png');
|
||||
static final faceImage = Image.asset('assets/images/face.png');
|
||||
final _gridViewKey = GlobalKey();
|
||||
|
||||
int pinLength = defaultPinLength;
|
||||
@@ -89,9 +86,18 @@ class PinCodeState<T extends PinCodeWidget> extends State<T> {
|
||||
Widget build(BuildContext context) => Scaffold(body: body(context));
|
||||
|
||||
Widget body(BuildContext context) {
|
||||
final deleteIconImage = Image.asset(
|
||||
'assets/images/delete_icon.png',
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
);
|
||||
final faceImage = Image.asset(
|
||||
'assets/images/face.png',
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
);
|
||||
|
||||
return SafeArea(
|
||||
child: Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
padding: EdgeInsets.only(left: 40.0, right: 40.0, bottom: 40.0),
|
||||
child: Column(children: <Widget>[
|
||||
Spacer(flex: 2),
|
||||
@@ -99,7 +105,8 @@ class PinCodeState<T extends PinCodeWidget> extends State<T> {
|
||||
style: TextStyle(
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white)),
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
)),
|
||||
Spacer(flex: 3),
|
||||
Container(
|
||||
width: 180,
|
||||
@@ -114,7 +121,9 @@ class PinCodeState<T extends PinCodeWidget> extends State<T> {
|
||||
height: size,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: isFilled ? Colors.white : PaletteDark.walletCardAddressField,
|
||||
color: isFilled
|
||||
? Theme.of(context).primaryTextTheme.title.color
|
||||
: Theme.of(context).primaryTextTheme.caption.color,
|
||||
));
|
||||
}),
|
||||
),
|
||||
@@ -129,7 +138,7 @@ class PinCodeState<T extends PinCodeWidget> extends State<T> {
|
||||
},
|
||||
child: Text(
|
||||
_changePinLengthText(),
|
||||
style: TextStyle(fontSize: 14.0, color: PaletteDark.walletCardText),
|
||||
style: TextStyle(fontSize: 14.0, color: Theme.of(context).primaryTextTheme.caption.color),
|
||||
))
|
||||
],
|
||||
Spacer(flex: 1),
|
||||
@@ -153,7 +162,7 @@ class PinCodeState<T extends PinCodeWidget> extends State<T> {
|
||||
left: marginLeft, right: marginRight),
|
||||
child: FlatButton(
|
||||
onPressed: () {},
|
||||
color: PaletteDark.historyPanel,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
shape: CircleBorder(),
|
||||
child: faceImage,
|
||||
),
|
||||
@@ -166,7 +175,7 @@ class PinCodeState<T extends PinCodeWidget> extends State<T> {
|
||||
left: marginLeft, right: marginRight),
|
||||
child: FlatButton(
|
||||
onPressed: () => _pop(),
|
||||
color: PaletteDark.historyPanel,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
shape: CircleBorder(),
|
||||
child: deleteIconImage,
|
||||
),
|
||||
@@ -180,13 +189,13 @@ class PinCodeState<T extends PinCodeWidget> extends State<T> {
|
||||
left: marginLeft, right: marginRight),
|
||||
child: FlatButton(
|
||||
onPressed: () => _push(index),
|
||||
color: PaletteDark.historyPanel,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
shape: CircleBorder(),
|
||||
child: Text('$index',
|
||||
style: TextStyle(
|
||||
fontSize: 30.0,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white)),
|
||||
color: Theme.of(context).primaryTextTheme.title.color)),
|
||||
),
|
||||
);
|
||||
}),
|
||||
|
||||
@@ -6,60 +6,28 @@ import 'package:esys_flutter_share/esys_flutter_share.dart';
|
||||
import 'package:flutter_slidable/flutter_slidable.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:cake_wallet/routes.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/src/stores/subaddress_list/subaddress_list_store.dart';
|
||||
import 'package:cake_wallet/src/stores/wallet/wallet_store.dart';
|
||||
import 'package:cake_wallet/src/screens/receive/widgets/qr_image.dart';
|
||||
import 'package:cake_wallet/src/screens/base_page.dart';
|
||||
import 'package:cake_wallet/src/screens/accounts/account_list_page.dart';
|
||||
import 'package:cake_wallet/src/stores/account_list/account_list_store.dart';
|
||||
import 'package:cake_wallet/src/screens/receive/widgets/header_tile.dart';
|
||||
import 'package:cake_wallet/src/widgets/base_text_form_field.dart';
|
||||
import 'package:cake_wallet/themes.dart';
|
||||
import 'package:cake_wallet/theme_changer.dart';
|
||||
|
||||
class ReceivePage extends BasePage {
|
||||
class ReceivePage extends StatefulWidget {
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.mainBackgroundColor;
|
||||
|
||||
@override
|
||||
bool get resizeToAvoidBottomPadding => false;
|
||||
|
||||
@override
|
||||
String get title => S.current.receive;
|
||||
|
||||
@override
|
||||
Widget trailing(BuildContext context) {
|
||||
final walletStore = Provider.of<WalletStore>(context);
|
||||
final shareImage = Image.asset('assets/images/share.png');
|
||||
|
||||
return SizedBox(
|
||||
height: 37.0,
|
||||
width: 37.0,
|
||||
child: ButtonTheme(
|
||||
minWidth: double.minPositive,
|
||||
child: FlatButton(
|
||||
highlightColor: Colors.transparent,
|
||||
splashColor: Colors.transparent,
|
||||
padding: EdgeInsets.all(0),
|
||||
onPressed: () => Share.text(
|
||||
S.current.share_address, walletStore.subaddress.address, 'text/plain'),
|
||||
child: shareImage),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) => ReceiveBody();
|
||||
ReceivePageState createState() => ReceivePageState();
|
||||
}
|
||||
|
||||
class ReceiveBody extends StatefulWidget {
|
||||
@override
|
||||
ReceiveBodyState createState() => ReceiveBodyState();
|
||||
}
|
||||
|
||||
class ReceiveBodyState extends State<ReceiveBody> {
|
||||
class ReceivePageState extends State<ReceivePage> {
|
||||
final amountController = TextEditingController();
|
||||
final _formKey = GlobalKey<FormState>();
|
||||
final _backArrowImage = Image.asset('assets/images/back_arrow.png');
|
||||
final _backArrowImageDarkTheme =
|
||||
Image.asset('assets/images/back_arrow_dark_theme.png');
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
@@ -73,13 +41,27 @@ class ReceiveBodyState extends State<ReceiveBody> {
|
||||
final subaddressListStore = Provider.of<SubaddressListStore>(context);
|
||||
final accountListStore = Provider.of<AccountListStore>(context);
|
||||
|
||||
final copyImage = Image.asset('assets/images/copy_content.png');
|
||||
final shareImage = Image.asset('assets/images/share.png',
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
);
|
||||
final copyImage = Image.asset('assets/images/copy_content.png',
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
);
|
||||
|
||||
final currentColor = PaletteDark.menuList;
|
||||
final notCurrentColor = PaletteDark.historyPanel;
|
||||
final currentColor = Theme.of(context).accentTextTheme.subtitle.decorationColor;
|
||||
final notCurrentColor = Theme.of(context).backgroundColor;
|
||||
|
||||
final currentTextColor = Colors.blue;
|
||||
final notCurrentTextColor = PaletteDark.walletCardText;
|
||||
final notCurrentTextColor = Theme.of(context).primaryTextTheme.caption.color;
|
||||
|
||||
final _themeChanger = Provider.of<ThemeChanger>(context);
|
||||
Image _backButton;
|
||||
|
||||
if (_themeChanger.getTheme() == Themes.darkTheme) {
|
||||
_backButton = _backArrowImageDarkTheme;
|
||||
} else {
|
||||
_backButton = _backArrowImage;
|
||||
}
|
||||
|
||||
amountController.addListener(() {
|
||||
if (_formKey.currentState.validate()) {
|
||||
@@ -89,227 +71,292 @@ class ReceiveBodyState extends State<ReceiveBody> {
|
||||
}
|
||||
});
|
||||
|
||||
return Container(
|
||||
height: MediaQuery.of(context).size.height,
|
||||
width: MediaQuery.of(context).size.width,
|
||||
color: PaletteDark.mainBackgroundColor,
|
||||
padding: EdgeInsets.only(top: 24),
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
Observer(builder: (_) {
|
||||
return Row(
|
||||
children: <Widget>[
|
||||
Spacer(
|
||||
flex: 1,
|
||||
),
|
||||
Flexible(
|
||||
flex: 2,
|
||||
child: Center(
|
||||
child: AspectRatio(
|
||||
aspectRatio: 1.0,
|
||||
child: QrImage(
|
||||
data: walletStore.subaddress.address +
|
||||
walletStore.amountValue,
|
||||
backgroundColor: Colors.transparent,
|
||||
foregroundColor: PaletteDark.walletCardText,
|
||||
),
|
||||
),
|
||||
)),
|
||||
Spacer(
|
||||
flex: 1,
|
||||
)
|
||||
],
|
||||
);
|
||||
}),
|
||||
Padding(
|
||||
padding: EdgeInsets.all(24),
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Form(
|
||||
key: _formKey,
|
||||
child: BaseTextFormField(
|
||||
controller: amountController,
|
||||
keyboardType: TextInputType.numberWithOptions(decimal: true),
|
||||
inputFormatters: [
|
||||
BlacklistingTextInputFormatter(
|
||||
RegExp('[\\-|\\ |\\,]'))
|
||||
],
|
||||
textAlign: TextAlign.center,
|
||||
hintText: S.of(context).receive_amount,
|
||||
borderColor: PaletteDark.walletCardText,
|
||||
validator: (value) {
|
||||
walletStore.validateAmount(value);
|
||||
return walletStore.errorMessage;
|
||||
},
|
||||
autovalidate: true,
|
||||
)
|
||||
)
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(left: 24, right: 24, bottom: 24),
|
||||
child: Observer(
|
||||
builder: (_) => GestureDetector(
|
||||
onTap: () {
|
||||
Clipboard.setData(ClipboardData(
|
||||
text: walletStore.subaddress.address));
|
||||
Scaffold.of(context).showSnackBar(SnackBar(
|
||||
content: Text(
|
||||
S.of(context).copied_to_clipboard,
|
||||
style: TextStyle(color: Colors.white),
|
||||
),
|
||||
backgroundColor: Colors.green,
|
||||
duration: Duration(milliseconds: 500),
|
||||
));
|
||||
},
|
||||
child: Container(
|
||||
height: 48,
|
||||
padding: EdgeInsets.only(left: 24, right: 24),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.all(Radius.circular(24)),
|
||||
color: PaletteDark.walletCardSubAddressField
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Text(
|
||||
walletStore.subaddress.address,
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Colors.white
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(left: 12),
|
||||
child: copyImage,
|
||||
)
|
||||
],
|
||||
return Scaffold(
|
||||
resizeToAvoidBottomPadding: false,
|
||||
body: Container(
|
||||
height: MediaQuery.of(context).size.height,
|
||||
width: MediaQuery.of(context).size.width,
|
||||
padding: EdgeInsets.only(top: 24),
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
colors: [
|
||||
Theme.of(context).scaffoldBackgroundColor,
|
||||
Theme.of(context).primaryColor
|
||||
],
|
||||
begin: Alignment.centerLeft,
|
||||
end: Alignment.centerRight
|
||||
)
|
||||
),
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
Container(
|
||||
padding: EdgeInsets.only(
|
||||
top: 10,
|
||||
bottom: 20,
|
||||
left: 5,
|
||||
right: 10
|
||||
),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
SizedBox(
|
||||
height: 44,
|
||||
width: 44,
|
||||
child: ButtonTheme(
|
||||
minWidth: double.minPositive,
|
||||
child: FlatButton(
|
||||
highlightColor: Colors.transparent,
|
||||
splashColor: Colors.transparent,
|
||||
padding: EdgeInsets.all(0),
|
||||
onPressed: () => Navigator.of(context).pop(),
|
||||
child: _backButton),
|
||||
),
|
||||
),
|
||||
)
|
||||
),
|
||||
),
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.only(
|
||||
topLeft: Radius.circular(24),
|
||||
topRight: Radius.circular(24),
|
||||
),
|
||||
color: PaletteDark.historyPanel,
|
||||
),
|
||||
child: Observer(
|
||||
builder: (_) => ListView.separated(
|
||||
separatorBuilder: (context, index) => Divider(
|
||||
height: 1,
|
||||
color: PaletteDark.menuList,
|
||||
Text(
|
||||
S.of(context).receive,
|
||||
style: TextStyle(
|
||||
fontSize: 18.0,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
),
|
||||
SizedBox(
|
||||
height: 44.0,
|
||||
width: 44.0,
|
||||
child: ButtonTheme(
|
||||
minWidth: double.minPositive,
|
||||
child: FlatButton(
|
||||
highlightColor: Colors.transparent,
|
||||
splashColor: Colors.transparent,
|
||||
padding: EdgeInsets.all(0),
|
||||
onPressed: () => Share.text(
|
||||
S.current.share_address, walletStore.subaddress.address, 'text/plain'),
|
||||
child: shareImage),
|
||||
),
|
||||
shrinkWrap: true,
|
||||
physics: NeverScrollableScrollPhysics(),
|
||||
itemCount: subaddressListStore.subaddresses.length + 2,
|
||||
itemBuilder: (context, index) {
|
||||
|
||||
if (index == 0) {
|
||||
return HeaderTile(
|
||||
onTap: () async {
|
||||
await showDialog<void>(
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AccountListPage(accountListStore: accountListStore);
|
||||
}
|
||||
);
|
||||
},
|
||||
title: walletStore.account.label,
|
||||
icon: Icon(
|
||||
Icons.arrow_forward_ios,
|
||||
size: 14,
|
||||
color: Colors.white,
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
if (index == 1) {
|
||||
return HeaderTile(
|
||||
onTap: () => Navigator.of(context)
|
||||
.pushNamed(Routes.newSubaddress),
|
||||
title: S.of(context).subaddresses,
|
||||
icon: Icon(
|
||||
Icons.add,
|
||||
size: 20,
|
||||
color: Colors.white,
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
index -= 2;
|
||||
|
||||
return Observer(
|
||||
builder: (_) {
|
||||
final subaddress = subaddressListStore.subaddresses[index];
|
||||
final isCurrent =
|
||||
walletStore.subaddress.address == subaddress.address;
|
||||
|
||||
final label = subaddress.label.isNotEmpty
|
||||
? subaddress.label
|
||||
: subaddress.address;
|
||||
|
||||
final content = InkWell(
|
||||
onTap: () => walletStore.setSubaddress(subaddress),
|
||||
child: Container(
|
||||
color: isCurrent ? currentColor : notCurrentColor,
|
||||
padding: EdgeInsets.only(
|
||||
left: 24,
|
||||
right: 24,
|
||||
top: 28,
|
||||
bottom: 28
|
||||
),
|
||||
child: Text(
|
||||
label,
|
||||
style: TextStyle(
|
||||
fontSize: subaddress.label.isNotEmpty
|
||||
? 18 : 10,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: isCurrent
|
||||
? currentTextColor
|
||||
: notCurrentTextColor,
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
Observer(builder: (_) {
|
||||
return Row(
|
||||
children: <Widget>[
|
||||
Spacer(
|
||||
flex: 1,
|
||||
),
|
||||
Flexible(
|
||||
flex: 2,
|
||||
child: Center(
|
||||
child: AspectRatio(
|
||||
aspectRatio: 1.0,
|
||||
child: QrImage(
|
||||
data: walletStore.subaddress.address +
|
||||
walletStore.amountValue,
|
||||
backgroundColor: Colors.transparent,
|
||||
foregroundColor: Theme.of(context).primaryTextTheme.display4.color,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
return isCurrent
|
||||
? content
|
||||
: Slidable(
|
||||
key: Key(subaddress.address),
|
||||
actionPane: SlidableDrawerActionPane(),
|
||||
child: content,
|
||||
secondaryActions: <Widget>[
|
||||
IconSlideAction(
|
||||
caption: S.of(context).edit,
|
||||
color: PaletteDark.walletCardSubAddressField,
|
||||
icon: Icons.edit,
|
||||
onTap: () => Navigator.of(context)
|
||||
.pushNamed(Routes.newSubaddress, arguments: subaddress),
|
||||
)
|
||||
]
|
||||
);
|
||||
}
|
||||
)),
|
||||
Spacer(
|
||||
flex: 1,
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
)
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
}),
|
||||
Padding(
|
||||
padding: EdgeInsets.all(24),
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Form(
|
||||
key: _formKey,
|
||||
child: BaseTextFormField(
|
||||
controller: amountController,
|
||||
keyboardType: TextInputType.numberWithOptions(decimal: true),
|
||||
inputFormatters: [
|
||||
BlacklistingTextInputFormatter(
|
||||
RegExp('[\\-|\\ |\\,]'))
|
||||
],
|
||||
textAlign: TextAlign.center,
|
||||
hintText: S.of(context).receive_amount,
|
||||
borderColor: Theme.of(context).primaryTextTheme.caption.color,
|
||||
validator: (value) {
|
||||
walletStore.validateAmount(value);
|
||||
return walletStore.errorMessage;
|
||||
},
|
||||
autovalidate: true,
|
||||
)
|
||||
)
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(left: 24, right: 24, bottom: 24),
|
||||
child: Builder(
|
||||
builder: (context) => Observer(
|
||||
builder: (context) => GestureDetector(
|
||||
onTap: () {
|
||||
Clipboard.setData(ClipboardData(
|
||||
text: walletStore.subaddress.address));
|
||||
Scaffold.of(context).showSnackBar(SnackBar(
|
||||
content: Text(
|
||||
S.of(context).copied_to_clipboard,
|
||||
style: TextStyle(color: Colors.white),
|
||||
),
|
||||
backgroundColor: Colors.green,
|
||||
duration: Duration(milliseconds: 500),
|
||||
));
|
||||
},
|
||||
child: Container(
|
||||
height: 48,
|
||||
padding: EdgeInsets.only(left: 24, right: 24),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.all(Radius.circular(24)),
|
||||
color: Theme.of(context).primaryTextTheme.overline.color
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Text(
|
||||
walletStore.subaddress.address,
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(left: 12),
|
||||
child: copyImage,
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
),
|
||||
),
|
||||
Observer(
|
||||
builder: (_) => ListView.separated(
|
||||
separatorBuilder: (context, index) => Divider(
|
||||
height: 1,
|
||||
color: Theme.of(context).dividerColor,
|
||||
),
|
||||
shrinkWrap: true,
|
||||
physics: NeverScrollableScrollPhysics(),
|
||||
itemCount: subaddressListStore.subaddresses.length + 2,
|
||||
itemBuilder: (context, index) {
|
||||
|
||||
if (index == 0) {
|
||||
return ClipRRect(
|
||||
borderRadius: BorderRadius.only(
|
||||
topLeft: Radius.circular(24),
|
||||
topRight: Radius.circular(24)
|
||||
),
|
||||
child: HeaderTile(
|
||||
onTap: () async {
|
||||
await showDialog<void>(
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AccountListPage(accountListStore: accountListStore);
|
||||
}
|
||||
);
|
||||
},
|
||||
title: walletStore.account.label,
|
||||
icon: Icon(
|
||||
Icons.arrow_forward_ios,
|
||||
size: 14,
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
)
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
if (index == 1) {
|
||||
return HeaderTile(
|
||||
onTap: () => Navigator.of(context)
|
||||
.pushNamed(Routes.newSubaddress),
|
||||
title: S.of(context).subaddresses,
|
||||
icon: Icon(
|
||||
Icons.add,
|
||||
size: 20,
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
index -= 2;
|
||||
|
||||
return Observer(
|
||||
builder: (_) {
|
||||
final subaddress = subaddressListStore.subaddresses[index];
|
||||
final isCurrent =
|
||||
walletStore.subaddress.address == subaddress.address;
|
||||
|
||||
final label = subaddress.label.isNotEmpty
|
||||
? subaddress.label
|
||||
: subaddress.address;
|
||||
|
||||
final content = InkWell(
|
||||
onTap: () => walletStore.setSubaddress(subaddress),
|
||||
child: Container(
|
||||
color: isCurrent ? currentColor : notCurrentColor,
|
||||
padding: EdgeInsets.only(
|
||||
left: 24,
|
||||
right: 24,
|
||||
top: 28,
|
||||
bottom: 28
|
||||
),
|
||||
child: Text(
|
||||
label,
|
||||
style: TextStyle(
|
||||
fontSize: subaddress.label.isNotEmpty
|
||||
? 18 : 10,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: isCurrent
|
||||
? currentTextColor
|
||||
: notCurrentTextColor,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
return isCurrent
|
||||
? content
|
||||
: Slidable(
|
||||
key: Key(subaddress.address),
|
||||
actionPane: SlidableDrawerActionPane(),
|
||||
child: content,
|
||||
secondaryActions: <Widget>[
|
||||
IconSlideAction(
|
||||
caption: S.of(context).edit,
|
||||
color: Theme.of(context).primaryTextTheme.overline.color,
|
||||
icon: Icons.edit,
|
||||
onTap: () => Navigator.of(context)
|
||||
.pushNamed(Routes.newSubaddress, arguments: subaddress),
|
||||
)
|
||||
]
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
)
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
)
|
||||
],
|
||||
)
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -23,7 +23,7 @@ class HeaderTile extends StatelessWidget {
|
||||
top: 24,
|
||||
bottom: 24
|
||||
),
|
||||
color: Colors.transparent,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
@@ -33,7 +33,7 @@ class HeaderTile extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
Container(
|
||||
@@ -41,7 +41,7 @@ class HeaderTile extends StatelessWidget {
|
||||
width: 32,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: PaletteDark.menuList
|
||||
color: Theme.of(context).primaryTextTheme.overline.color
|
||||
),
|
||||
child: icon,
|
||||
)
|
||||
|
||||
@@ -17,7 +17,7 @@ class RescanPage extends BasePage {
|
||||
final rescanWalletStore = Provider.of<RescanWalletStore>(context);
|
||||
|
||||
return Padding(
|
||||
padding: EdgeInsets.only(left: 20, right: 20, bottom: 20),
|
||||
padding: EdgeInsets.only(left: 24, right: 24, bottom: 24),
|
||||
child:
|
||||
Column(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
|
||||
BlockchainHeightWidget(key: blockchainKey),
|
||||
@@ -31,9 +31,8 @@ class RescanPage extends BasePage {
|
||||
restoreHeight: blockchainKey.currentState.height);
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
color:
|
||||
Theme.of(context).primaryTextTheme.button.backgroundColor,
|
||||
textColor: Theme.of(context).primaryTextTheme.button.color,))
|
||||
color: Colors.blue,
|
||||
textColor: Colors.white,))
|
||||
]),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -11,9 +11,6 @@ class RestoreOptionsPage extends BasePage {
|
||||
@override
|
||||
String get title => S.current.restore_restore_wallet;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
final imageSeedKeys = Image.asset('assets/images/restore_wallet_image.png');
|
||||
final imageBackup = Image.asset('assets/images/backup.png');
|
||||
|
||||
@@ -23,7 +20,6 @@ class RestoreOptionsPage extends BasePage {
|
||||
width: double.infinity,
|
||||
height: double.infinity,
|
||||
padding: EdgeInsets.all(24),
|
||||
color: PaletteDark.historyPanel,
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
|
||||
@@ -14,7 +14,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/blockchain_height_widget.dart';
|
||||
import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/src/stores/seed_language/seed_language_store.dart';
|
||||
import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
|
||||
|
||||
@@ -31,9 +30,6 @@ class RestoreWalletFromKeysPage extends BasePage {
|
||||
@override
|
||||
String get title => S.current.restore_title_from_keys;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) => RestoreFromKeysFrom();
|
||||
}
|
||||
@@ -103,7 +99,6 @@ class _RestoreFromKeysFromState extends State<RestoreFromKeysFrom> {
|
||||
});
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
padding: EdgeInsets.only(left: 24, right: 24),
|
||||
child: ScrollableWithBottomSection(
|
||||
contentPadding: EdgeInsets.only(bottom: 24.0),
|
||||
@@ -118,22 +113,22 @@ class _RestoreFromKeysFromState extends State<RestoreFromKeysFrom> {
|
||||
child: TextFormField(
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
controller: _nameController,
|
||||
decoration: InputDecoration(
|
||||
hintStyle: TextStyle(
|
||||
color: PaletteDark.walletCardText,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color,
|
||||
fontSize: 16
|
||||
),
|
||||
hintText: S.of(context).restore_wallet_name,
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0))),
|
||||
validator: (value) {
|
||||
walletRestorationStore.validateWalletName(value);
|
||||
@@ -151,24 +146,24 @@ class _RestoreFromKeysFromState extends State<RestoreFromKeysFrom> {
|
||||
child: TextFormField(
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
controller: _addressController,
|
||||
keyboardType: TextInputType.multiline,
|
||||
maxLines: null,
|
||||
decoration: InputDecoration(
|
||||
hintStyle: TextStyle(
|
||||
color: PaletteDark.walletCardText,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color,
|
||||
fontSize: 16
|
||||
),
|
||||
hintText: S.of(context).restore_address,
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0))),
|
||||
validator: (value) {
|
||||
walletRestorationStore.validateAddress(value);
|
||||
@@ -186,22 +181,22 @@ class _RestoreFromKeysFromState extends State<RestoreFromKeysFrom> {
|
||||
child: TextFormField(
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
controller: _viewKeyController,
|
||||
decoration: InputDecoration(
|
||||
hintStyle: TextStyle(
|
||||
color: PaletteDark.walletCardText,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color,
|
||||
fontSize: 16
|
||||
),
|
||||
hintText: S.of(context).restore_view_key_private,
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0))),
|
||||
validator: (value) {
|
||||
walletRestorationStore.validateKeys(value);
|
||||
@@ -219,22 +214,22 @@ class _RestoreFromKeysFromState extends State<RestoreFromKeysFrom> {
|
||||
child: TextFormField(
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
controller: _spendKeyController,
|
||||
decoration: InputDecoration(
|
||||
hintStyle: TextStyle(
|
||||
color: PaletteDark.walletCardText,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color,
|
||||
fontSize: 16
|
||||
),
|
||||
hintText: S.of(context).restore_spend_key_private,
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0))),
|
||||
validator: (value) {
|
||||
walletRestorationStore.validateKeys(value);
|
||||
|
||||
@@ -10,16 +10,12 @@ import 'package:cake_wallet/src/screens/base_page.dart';
|
||||
import 'package:cake_wallet/src/widgets/blockchain_height_widget.dart';
|
||||
import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart';
|
||||
import 'package:cake_wallet/src/widgets/primary_button.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
|
||||
|
||||
class RestoreWalletFromSeedDetailsPage extends BasePage {
|
||||
@override
|
||||
String get title => S.current.restore_wallet_restore_description;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) => RestoreFromSeedDetailsForm();
|
||||
}
|
||||
@@ -76,7 +72,6 @@ class _RestoreFromSeedDetailsFormState
|
||||
});
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
padding: EdgeInsets.only(left: 24, right: 24),
|
||||
child: ScrollableWithBottomSection(
|
||||
contentPadding: EdgeInsets.only(bottom: 24.0),
|
||||
@@ -92,22 +87,22 @@ class _RestoreFromSeedDetailsFormState
|
||||
child: TextFormField(
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
controller: _nameController,
|
||||
decoration: InputDecoration(
|
||||
hintStyle: TextStyle(
|
||||
color: PaletteDark.walletCardText,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color,
|
||||
fontSize: 16
|
||||
),
|
||||
hintText: S.of(context).restore_wallet_name,
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0))),
|
||||
validator: (value) {
|
||||
walletRestorationStore
|
||||
|
||||
@@ -28,7 +28,10 @@ class RestoreWalletFromSeedPage extends BasePage {
|
||||
String get title => S.current.restore_title_from_seed;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.menuList;
|
||||
Color get backgroundLightColor => Palette.lavender;
|
||||
|
||||
@override
|
||||
Color get backgroundDarkColor => PaletteDark.lightNightBlue;
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) => RestoreFromSeedForm(key: formKey);
|
||||
@@ -54,7 +57,7 @@ class _RestoreFromSeedFormState extends State<RestoreFromSeedForm> {
|
||||
onTap: () =>
|
||||
SystemChannels.textInput.invokeMethod<void>('TextInput.hide'),
|
||||
child: Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
child: SeedWidget(
|
||||
key: _seedKey,
|
||||
onMnemoticChange: (seed) => walletRestorationStore.setSeed(seed),
|
||||
|
||||
@@ -13,9 +13,6 @@ class RestoreWalletOptionsPage extends BasePage {
|
||||
@override
|
||||
String get title => S.current.restore_seed_keys_restore;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
final imageSeed = Image.asset('assets/images/restore_seed.png');
|
||||
final imageKeys = Image.asset('assets/images/restore_keys.png');
|
||||
|
||||
@@ -27,7 +24,6 @@ class RestoreWalletOptionsPage extends BasePage {
|
||||
width: double.infinity,
|
||||
height: double.infinity,
|
||||
padding: EdgeInsets.all(24),
|
||||
color: PaletteDark.historyPanel,
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
|
||||
class RestoreButton extends StatelessWidget {
|
||||
const RestoreButton({
|
||||
@@ -25,7 +24,7 @@ class RestoreButton extends StatelessWidget {
|
||||
alignment: Alignment.topLeft,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.all(Radius.circular(12)),
|
||||
color: PaletteDark.menuList
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
@@ -46,7 +45,7 @@ class RestoreButton extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
@@ -55,7 +54,7 @@ class RestoreButton extends StatelessWidget {
|
||||
description,
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
color: PaletteDark.walletCardText
|
||||
color: Theme.of(context).primaryTextTheme.caption.color
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -4,7 +4,6 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/src/widgets/primary_button.dart';
|
||||
import 'package:cake_wallet/src/stores/wallet_seed/wallet_seed_store.dart';
|
||||
@@ -16,9 +15,6 @@ class SeedPage extends BasePage {
|
||||
|
||||
static final image = Image.asset('assets/images/crypto_lock.png');
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
String get title => S.current.seed_title;
|
||||
|
||||
@@ -44,7 +40,7 @@ class SeedPage extends BasePage {
|
||||
alignment: Alignment.center,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.all(Radius.circular(16)),
|
||||
color: PaletteDark.menuList
|
||||
color: Theme.of(context).accentTextTheme.title.color
|
||||
),
|
||||
child: Text(
|
||||
S.of(context).seed_language_next,
|
||||
@@ -67,7 +63,6 @@ class SeedPage extends BasePage {
|
||||
return Container(
|
||||
width: double.infinity,
|
||||
height: double.infinity,
|
||||
color: PaletteDark.historyPanel,
|
||||
child: ScrollableWithBottomSection(
|
||||
contentPadding: EdgeInsets.only(left: 40, right: 40, bottom: 20),
|
||||
content: Column(
|
||||
@@ -90,7 +85,7 @@ class SeedPage extends BasePage {
|
||||
style: TextStyle(
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
@@ -100,7 +95,7 @@ class SeedPage extends BasePage {
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
color: PaletteDark.walletCardText
|
||||
color: Theme.of(context).primaryTextTheme.caption.color
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -6,15 +6,11 @@ import 'package:cake_wallet/generated/i18n.dart';
|
||||
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/palette.dart';
|
||||
import 'package:cake_wallet/src/stores/seed_language/seed_language_store.dart';
|
||||
import 'package:cake_wallet/src/screens/new_wallet/widgets/select_button.dart';
|
||||
import 'package:cake_wallet/src/screens/seed_language/widgets/seed_language_picker.dart';
|
||||
|
||||
class SeedLanguage extends BasePage {
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) => SeedLanguageForm();
|
||||
}
|
||||
@@ -44,7 +40,6 @@ class SeedLanguageFormState extends State<SeedLanguageForm> {
|
||||
];
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
padding: EdgeInsets.only(top: 24),
|
||||
child: ScrollableWithBottomSection(
|
||||
contentPadding: EdgeInsets.only(left: 24, right: 24, bottom: 24),
|
||||
@@ -64,7 +59,7 @@ class SeedLanguageFormState extends State<SeedLanguageForm> {
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -73,8 +68,8 @@ class SeedLanguageFormState extends State<SeedLanguageForm> {
|
||||
builder: (_) => SelectButton(
|
||||
image: null,
|
||||
text: seedLocales[seedLanguages.indexOf(seedLanguageStore.selectedSeedLanguage)],
|
||||
color: PaletteDark.menuList,
|
||||
textColor: Colors.white,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
textColor: Theme.of(context).primaryTextTheme.title.color,
|
||||
onTap: () async => await showDialog(
|
||||
context: context,
|
||||
builder: (BuildContext context) => SeedLanguagePicker()
|
||||
|
||||
@@ -48,7 +48,7 @@ class SeedLanguagePickerState extends State<SeedLanguagePicker> {
|
||||
child: BackdropFilter(
|
||||
filter: ImageFilter.blur(sigmaX: 3.0, sigmaY: 3.0),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(color: PaletteDark.historyPanel.withOpacity(0.75)),
|
||||
decoration: BoxDecoration(color: PaletteDark.darkNightBlue.withOpacity(0.75)),
|
||||
child: Center(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
@@ -75,7 +75,7 @@ class SeedLanguagePickerState extends State<SeedLanguagePicker> {
|
||||
width: 300,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.all(Radius.circular(14)),
|
||||
color: PaletteDark.walletCardSubAddressField
|
||||
color: Theme.of(context).dividerColor
|
||||
),
|
||||
child: GridView.count(
|
||||
shrinkWrap: true,
|
||||
@@ -173,8 +173,12 @@ class SeedLanguagePickerState extends State<SeedLanguagePicker> {
|
||||
@required VoidCallback onTap}) {
|
||||
|
||||
BorderRadius borderRadius;
|
||||
final color = isCurrent ? PaletteDark.historyPanel : PaletteDark.menuList;
|
||||
final textColor = isCurrent ? Colors.blue : Colors.white;
|
||||
final color = isCurrent
|
||||
? Theme.of(context).accentTextTheme.subtitle.decorationColor
|
||||
: Theme.of(context).primaryTextTheme.display1.color;
|
||||
final textColor = isCurrent
|
||||
? Colors.blue
|
||||
: Theme.of(context).primaryTextTheme.title.color;
|
||||
|
||||
switch (place) {
|
||||
case Places.topLeft:
|
||||
|
||||
@@ -35,7 +35,10 @@ class SendPage extends BasePage {
|
||||
String get title => S.current.send_title;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.menuList;
|
||||
Color get backgroundLightColor => Palette.lavender;
|
||||
|
||||
@override
|
||||
Color get backgroundDarkColor => PaletteDark.lightNightBlue;
|
||||
|
||||
@override
|
||||
bool get resizeToAvoidBottomPadding => false;
|
||||
@@ -49,7 +52,7 @@ class SendPage extends BasePage {
|
||||
width: 82,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.all(Radius.circular(16)),
|
||||
color: PaletteDark.menuHeader
|
||||
color: Theme.of(context).accentTextTheme.title.color
|
||||
),
|
||||
child: ButtonTheme(
|
||||
minWidth: double.minPositive,
|
||||
@@ -130,13 +133,13 @@ class SendFormState extends State<SendForm> {
|
||||
_setEffects(context);
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
child: ScrollableWithBottomSection(
|
||||
contentPadding: EdgeInsets.only(bottom: 24),
|
||||
content: Column(
|
||||
children: <Widget>[
|
||||
TopPanel(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
widget: Form(
|
||||
key: _formKey,
|
||||
child: Column(children: <Widget>[
|
||||
@@ -162,6 +165,7 @@ class SendFormState extends State<SendForm> {
|
||||
AddressTextFieldOption.qrCode,
|
||||
AddressTextFieldOption.addressBook
|
||||
],
|
||||
buttonColor: Theme.of(context).accentTextTheme.title.color,
|
||||
validator: (value) {
|
||||
sendStore.validateAddress(value,
|
||||
cryptoCurrency: CryptoCurrency.xmr);
|
||||
@@ -175,7 +179,7 @@ class SendFormState extends State<SendForm> {
|
||||
child: TextFormField(
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
controller: _cryptoAmountController,
|
||||
keyboardType: TextInputType.numberWithOptions(
|
||||
@@ -191,7 +195,7 @@ class SendFormState extends State<SendForm> {
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white,
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
)),
|
||||
),
|
||||
suffixIcon: Padding(
|
||||
@@ -211,7 +215,7 @@ class SendFormState extends State<SendForm> {
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
color: PaletteDark.walletCardText
|
||||
color: Theme.of(context).primaryTextTheme.caption.color
|
||||
)
|
||||
),
|
||||
),
|
||||
@@ -220,7 +224,7 @@ class SendFormState extends State<SendForm> {
|
||||
width: 32,
|
||||
margin: EdgeInsets.only(left: 12, bottom: 7, top: 4),
|
||||
decoration: BoxDecoration(
|
||||
color: PaletteDark.walletCardSubAddressField,
|
||||
color: Theme.of(context).accentTextTheme.title.color,
|
||||
borderRadius: BorderRadius.all(Radius.circular(6))
|
||||
),
|
||||
child: InkWell(
|
||||
@@ -231,7 +235,7 @@ class SendFormState extends State<SendForm> {
|
||||
style: TextStyle(
|
||||
fontSize: 9,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: PaletteDark.walletCardText
|
||||
color: Theme.of(context).primaryTextTheme.caption.color
|
||||
)
|
||||
),
|
||||
),
|
||||
@@ -242,15 +246,15 @@ class SendFormState extends State<SendForm> {
|
||||
),
|
||||
hintStyle: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: Colors.white),
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
hintText: '0.0000',
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.walletCardSubAddressField,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.walletCardSubAddressField,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0))),
|
||||
validator: (value) {
|
||||
sendStore.validateXMR(
|
||||
@@ -265,7 +269,7 @@ class SendFormState extends State<SendForm> {
|
||||
child: TextFormField(
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: Colors.white),
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
controller: _fiatAmountController,
|
||||
keyboardType: TextInputType.numberWithOptions(
|
||||
signed: false, decimal: true),
|
||||
@@ -281,20 +285,20 @@ class SendFormState extends State<SendForm> {
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white,
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
)),
|
||||
),
|
||||
hintStyle: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: PaletteDark.walletCardText),
|
||||
color: Theme.of(context).primaryTextTheme.caption.color),
|
||||
hintText: '0.00',
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.walletCardSubAddressField,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.walletCardSubAddressField,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0)))),
|
||||
),
|
||||
Padding(
|
||||
@@ -306,14 +310,14 @@ class SendFormState extends State<SendForm> {
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Colors.white,
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
)),
|
||||
Text(
|
||||
'${calculateEstimatedFee(priority: settingsStore.transactionPriority)} XMR',
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Colors.white,
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
))
|
||||
],
|
||||
),
|
||||
@@ -335,7 +339,7 @@ class SendFormState extends State<SendForm> {
|
||||
style: TextStyle(
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: PaletteDark.walletCardText
|
||||
color: Theme.of(context).primaryTextTheme.caption.color
|
||||
),
|
||||
)
|
||||
],
|
||||
@@ -363,7 +367,7 @@ class SendFormState extends State<SendForm> {
|
||||
child: DottedBorder(
|
||||
borderType: BorderType.RRect,
|
||||
dashPattern: [8, 4],
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
strokeWidth: 2,
|
||||
radius: Radius.circular(20),
|
||||
child: Container(
|
||||
@@ -380,7 +384,7 @@ class SendFormState extends State<SendForm> {
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: PaletteDark.walletCardText
|
||||
color: Theme.of(context).primaryTextTheme.caption.color
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -21,7 +21,10 @@ class SendTemplatePage extends BasePage {
|
||||
String get title => S.current.send_title;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.menuList;
|
||||
Color get backgroundLightColor => Palette.lavender;
|
||||
|
||||
@override
|
||||
Color get backgroundDarkColor => PaletteDark.lightNightBlue;
|
||||
|
||||
@override
|
||||
bool get resizeToAvoidBottomPadding => false;
|
||||
@@ -65,33 +68,33 @@ class SendTemplateFormState extends State<SendTemplateForm> {
|
||||
_setEffects(context);
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
child: ScrollableWithBottomSection(
|
||||
contentPadding: EdgeInsets.only(bottom: 24),
|
||||
content: Column(
|
||||
children: <Widget>[
|
||||
TopPanel(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
widget: Form(
|
||||
key: _formKey,
|
||||
child: Column(children: <Widget>[
|
||||
TextFormField(
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: Colors.white),
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
controller: _nameController,
|
||||
decoration: InputDecoration(
|
||||
hintStyle: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: PaletteDark.walletCardText),
|
||||
color: Theme.of(context).primaryTextTheme.caption.color),
|
||||
hintText: S.of(context).send_name,
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.walletCardSubAddressField,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.walletCardSubAddressField,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0))),
|
||||
validator: (value) {
|
||||
sendTemplateStore.validateTemplate(value);
|
||||
@@ -121,6 +124,7 @@ class SendTemplateFormState extends State<SendTemplateForm> {
|
||||
AddressTextFieldOption.qrCode,
|
||||
AddressTextFieldOption.addressBook
|
||||
],
|
||||
buttonColor: Theme.of(context).accentTextTheme.title.color,
|
||||
validator: (value) {
|
||||
sendTemplateStore.validateTemplate(value);
|
||||
return sendTemplateStore.errorMessage;
|
||||
@@ -134,7 +138,7 @@ class SendTemplateFormState extends State<SendTemplateForm> {
|
||||
child: TextFormField(
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
controller: _cryptoAmountController,
|
||||
keyboardType: TextInputType.numberWithOptions(
|
||||
@@ -150,20 +154,20 @@ class SendTemplateFormState extends State<SendTemplateForm> {
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white,
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
)),
|
||||
),
|
||||
hintStyle: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: Colors.white),
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
hintText: '0.0000',
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.walletCardSubAddressField,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.walletCardSubAddressField,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0))),
|
||||
),
|
||||
);
|
||||
@@ -174,7 +178,7 @@ class SendTemplateFormState extends State<SendTemplateForm> {
|
||||
child: TextFormField(
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: Colors.white),
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
controller: _fiatAmountController,
|
||||
keyboardType: TextInputType.numberWithOptions(
|
||||
signed: false, decimal: true),
|
||||
@@ -190,20 +194,20 @@ class SendTemplateFormState extends State<SendTemplateForm> {
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white,
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
)),
|
||||
),
|
||||
hintStyle: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: PaletteDark.walletCardText),
|
||||
color: Theme.of(context).primaryTextTheme.caption.color),
|
||||
hintText: '0.00',
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.walletCardSubAddressField,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.walletCardSubAddressField,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0)))),
|
||||
),
|
||||
]),
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'dart:ui';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/src/stores/send/sending_state.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:cake_wallet/src/widgets/primary_button.dart';
|
||||
@@ -31,7 +30,7 @@ class SendingAlertState extends State<SendingAlert> {
|
||||
return Stack(
|
||||
children: <Widget>[
|
||||
Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
child: Center(
|
||||
child: Image.asset(
|
||||
'assets/images/birthday_cake.png'),
|
||||
@@ -46,7 +45,7 @@ class SendingAlertState extends State<SendingAlert> {
|
||||
style: TextStyle(
|
||||
fontSize: 22,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white,
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
decoration: TextDecoration.none,
|
||||
),
|
||||
),
|
||||
@@ -70,7 +69,7 @@ class SendingAlertState extends State<SendingAlert> {
|
||||
return Stack(
|
||||
children: <Widget>[
|
||||
Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
child: Center(
|
||||
child: Image.asset(
|
||||
'assets/images/birthday_cake.png'),
|
||||
@@ -79,7 +78,7 @@ class SendingAlertState extends State<SendingAlert> {
|
||||
BackdropFilter(
|
||||
filter: ImageFilter.blur(sigmaX: 3.0, sigmaY: 3.0),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(color: PaletteDark.historyPanel.withOpacity(0.25)),
|
||||
decoration: BoxDecoration(color: Theme.of(context).backgroundColor.withOpacity(0.25)),
|
||||
child: Center(
|
||||
child: Padding(
|
||||
padding: EdgeInsets.only(top: 220),
|
||||
@@ -89,7 +88,7 @@ class SendingAlertState extends State<SendingAlert> {
|
||||
style: TextStyle(
|
||||
fontSize: 22,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white,
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
decoration: TextDecoration.none,
|
||||
),
|
||||
),
|
||||
|
||||
@@ -5,41 +5,36 @@ import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/src/domain/common/language.dart';
|
||||
import 'package:cake_wallet/src/stores/settings/settings_store.dart';
|
||||
import 'package:cake_wallet/src/screens/base_page.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
|
||||
|
||||
class ChangeLanguage extends BasePage {
|
||||
@override
|
||||
String get title => S.current.settings_change_language;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) {
|
||||
final settingsStore = Provider.of<SettingsStore>(context);
|
||||
final currentLanguage = Provider.of<Language>(context);
|
||||
|
||||
final currentColor = Colors.green;
|
||||
final notCurrentColor = Colors.white;
|
||||
final notCurrentColor = Theme.of(context).primaryTextTheme.title.color;
|
||||
|
||||
final shortDivider = Container(
|
||||
height: 1,
|
||||
padding: EdgeInsets.only(left: 24),
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
child: Container(
|
||||
height: 1,
|
||||
color: PaletteDark.mainBackgroundColor,
|
||||
color: Theme.of(context).dividerColor,
|
||||
),
|
||||
);
|
||||
|
||||
final longDivider = Container(
|
||||
height: 1,
|
||||
color: PaletteDark.mainBackgroundColor,
|
||||
color: Theme.of(context).dividerColor,
|
||||
);
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
padding: EdgeInsets.only(top: 10.0),
|
||||
child: ListView.builder(
|
||||
itemCount: languages.values.length,
|
||||
@@ -56,7 +51,7 @@ class ChangeLanguage extends BasePage {
|
||||
index == 0 ? longDivider : Offstage(),
|
||||
Container(
|
||||
padding: EdgeInsets.only(top: 4, bottom: 4),
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
child: ListTile(
|
||||
contentPadding: EdgeInsets.only(left: 24, right: 24),
|
||||
title: Text(
|
||||
|
||||
@@ -1,236 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:cake_wallet/theme_changer.dart';
|
||||
import 'package:cake_wallet/themes.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
|
||||
class EnterPinCode extends StatefulWidget {
|
||||
const EnterPinCode(this.currentPinLength, this.currentPin);
|
||||
|
||||
final int currentPinLength;
|
||||
final List<int> currentPin;
|
||||
|
||||
@override
|
||||
EnterPinCodeState createState() =>
|
||||
EnterPinCodeState(currentPinLength, currentPin);
|
||||
}
|
||||
|
||||
class EnterPinCodeState extends State<EnterPinCode> {
|
||||
EnterPinCodeState(this.pinLength, this.currentPin);
|
||||
|
||||
final _gridViewKey = GlobalKey();
|
||||
final _closeButtonImage = Image.asset('assets/images/close_button.png');
|
||||
final _closeButtonImageDarkTheme =
|
||||
Image.asset('assets/images/close_button_dark_theme.png');
|
||||
static final deleteIconImage = Image.asset('assets/images/delete_icon.png');
|
||||
final int pinLength;
|
||||
final List<int> currentPin;
|
||||
List<int> pin;
|
||||
double _aspectRatio = 0;
|
||||
|
||||
void _calcualteCurrentAspectRatio() {
|
||||
final renderBox =
|
||||
_gridViewKey.currentContext.findRenderObject() as RenderBox;
|
||||
final cellWidth = renderBox.size.width / 3;
|
||||
final cellHeight = renderBox.size.height / 4;
|
||||
|
||||
if (cellWidth > 0 && cellHeight > 0) {
|
||||
_aspectRatio = cellWidth / cellHeight;
|
||||
}
|
||||
|
||||
setState(() {});
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
pin = List<int>.filled(pinLength, null);
|
||||
WidgetsBinding.instance.addPostFrameCallback(_afterLayout);
|
||||
}
|
||||
|
||||
void _afterLayout(dynamic _) => _calcualteCurrentAspectRatio();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final _themeChanger = Provider.of<ThemeChanger>(context);
|
||||
final _isDarkTheme = _themeChanger.getTheme() == Themes.darkTheme;
|
||||
|
||||
return Scaffold(
|
||||
backgroundColor: Theme.of(context).backgroundColor,
|
||||
appBar: CupertinoNavigationBar(
|
||||
leading: ButtonTheme(
|
||||
minWidth: double.minPositive,
|
||||
child: FlatButton(
|
||||
onPressed: () {
|
||||
Navigator.pop(context, false);
|
||||
},
|
||||
child: _isDarkTheme
|
||||
? _closeButtonImageDarkTheme
|
||||
: _closeButtonImage),
|
||||
),
|
||||
backgroundColor: Theme.of(context).backgroundColor,
|
||||
border: null),
|
||||
body: SafeArea(
|
||||
child: Container(
|
||||
padding: EdgeInsets.only(left: 40.0, right: 40.0, bottom: 40.0),
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
Spacer(flex: 2),
|
||||
Text(S.of(context).enter_your_pin,
|
||||
style: TextStyle(fontSize: 24, color: Palette.wildDarkBlue)),
|
||||
Spacer(flex: 3),
|
||||
Container(
|
||||
width: 180,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: List.generate(pinLength, (index) {
|
||||
const size = 10.0;
|
||||
final isFilled = pin[index] != null;
|
||||
|
||||
return Container(
|
||||
width: size,
|
||||
height: size,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color:
|
||||
isFilled ? Palette.deepPurple : Colors.transparent,
|
||||
border: Border.all(color: Palette.wildDarkBlue),
|
||||
));
|
||||
}),
|
||||
),
|
||||
),
|
||||
Spacer(flex: 3),
|
||||
Flexible(
|
||||
flex: 24,
|
||||
child: Container(
|
||||
key: _gridViewKey,
|
||||
child: _aspectRatio > 0
|
||||
? GridView.count(
|
||||
crossAxisCount: 3,
|
||||
childAspectRatio: _aspectRatio,
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
children: List.generate(12, (index) {
|
||||
if (index == 9) {
|
||||
return Container(
|
||||
margin: EdgeInsets.all(5.0),
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: _isDarkTheme
|
||||
? PaletteDark.darkThemePinButton
|
||||
: Palette.darkGrey,
|
||||
),
|
||||
);
|
||||
} else if (index == 10) {
|
||||
index = 0;
|
||||
} else if (index == 11) {
|
||||
return Container(
|
||||
margin: EdgeInsets.all(5.0),
|
||||
child: FlatButton(
|
||||
onPressed: () {
|
||||
_pop();
|
||||
},
|
||||
color: _isDarkTheme
|
||||
? PaletteDark.darkThemePinButton
|
||||
: Palette.darkGrey,
|
||||
shape: CircleBorder(),
|
||||
child: deleteIconImage,
|
||||
),
|
||||
);
|
||||
} else {
|
||||
index++;
|
||||
}
|
||||
|
||||
return Container(
|
||||
margin: EdgeInsets.all(5.0),
|
||||
child: FlatButton(
|
||||
onPressed: () {
|
||||
_push(index);
|
||||
},
|
||||
color: _isDarkTheme
|
||||
? PaletteDark.darkThemePinDigitButton
|
||||
: Palette.creamyGrey,
|
||||
shape: CircleBorder(),
|
||||
child: Text('$index',
|
||||
style: TextStyle(
|
||||
fontSize: 23.0,
|
||||
color: Palette.blueGrey)),
|
||||
),
|
||||
);
|
||||
}),
|
||||
)
|
||||
: null))
|
||||
],
|
||||
),
|
||||
)),
|
||||
);
|
||||
}
|
||||
|
||||
void _showIncorrectPinDialog(BuildContext context) async {
|
||||
await showDialog<void>(
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
content: Text(S.of(context).pin_is_incorrect),
|
||||
actions: <Widget>[
|
||||
FlatButton(
|
||||
child: Text(S.of(context).ok),
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
),
|
||||
],
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
void _push(int num) {
|
||||
if (_pinLength() >= pinLength) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (var i = 0; i < pin.length; i++) {
|
||||
if (pin[i] == null) {
|
||||
setState(() => pin[i] = num);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
final currentPinLength = _pinLength();
|
||||
|
||||
if (currentPinLength == pinLength) {
|
||||
if (listEquals<int>(pin, currentPin)) {
|
||||
Navigator.pop(context, true);
|
||||
} else {
|
||||
Navigator.pop(context, false);
|
||||
|
||||
_showIncorrectPinDialog(context);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _pop() {
|
||||
if (_pinLength() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (var i = pin.length - 1; i >= 0; i--) {
|
||||
if (pin[i] != null) {
|
||||
setState(() => pin[i] = null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int _pinLength() {
|
||||
return pin.fold(0, (v, e) {
|
||||
if (e != null) {
|
||||
return v + 1;
|
||||
}
|
||||
|
||||
return v;
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'package:cake_wallet/src/screens/auth/auth_page.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
@@ -30,9 +29,6 @@ class SettingsPage extends BasePage {
|
||||
@override
|
||||
String get title => S.current.settings_title;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) {
|
||||
return SettingsForm();
|
||||
@@ -79,7 +75,7 @@ class SettingsFormState extends State<SettingsForm> {
|
||||
textAlign: TextAlign.right,
|
||||
style: TextStyle(
|
||||
fontSize: 14.0,
|
||||
color: PaletteDark.walletCardText),
|
||||
color: Theme.of(context).primaryTextTheme.caption.color),
|
||||
)),
|
||||
attribute: Attributes.widget),
|
||||
SettingsItem(
|
||||
@@ -91,7 +87,7 @@ class SettingsFormState extends State<SettingsForm> {
|
||||
textAlign: TextAlign.right,
|
||||
style: TextStyle(
|
||||
fontSize: 14.0,
|
||||
color: PaletteDark.walletCardText),
|
||||
color: Theme.of(context).primaryTextTheme.caption.color),
|
||||
)),
|
||||
attribute: Attributes.widget),
|
||||
SettingsItem(
|
||||
@@ -103,7 +99,7 @@ class SettingsFormState extends State<SettingsForm> {
|
||||
textAlign: TextAlign.right,
|
||||
style: TextStyle(
|
||||
fontSize: 14.0,
|
||||
color: PaletteDark.walletCardText),
|
||||
color: Theme.of(context).primaryTextTheme.caption.color),
|
||||
)),
|
||||
attribute: Attributes.widget),
|
||||
SettingsItem(
|
||||
@@ -145,7 +141,11 @@ class SettingsFormState extends State<SettingsForm> {
|
||||
children: [
|
||||
Text(S
|
||||
.of(context)
|
||||
.settings_transactions),
|
||||
.settings_transactions,
|
||||
style: TextStyle(
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
Checkbox(
|
||||
value: settingsStore
|
||||
.actionlistDisplayMode
|
||||
@@ -162,7 +162,12 @@ class SettingsFormState extends State<SettingsForm> {
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text(S.of(context).settings_trades),
|
||||
Text(
|
||||
S.of(context).settings_trades,
|
||||
style: TextStyle(
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
Checkbox(
|
||||
value: settingsStore
|
||||
.actionlistDisplayMode
|
||||
@@ -182,7 +187,7 @@ class SettingsFormState extends State<SettingsForm> {
|
||||
Text(S.of(context).settings_display_on_dashboard_list,
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
color: Colors.white)),
|
||||
color: Theme.of(context).primaryTextTheme.title.color)),
|
||||
Observer(builder: (_) {
|
||||
var title = '';
|
||||
|
||||
@@ -210,7 +215,7 @@ class SettingsFormState extends State<SettingsForm> {
|
||||
return Text(title,
|
||||
style: TextStyle(
|
||||
fontSize: 14.0,
|
||||
color: PaletteDark.walletCardText));
|
||||
color: Theme.of(context).primaryTextTheme.caption.color));
|
||||
})
|
||||
]),
|
||||
));
|
||||
@@ -321,20 +326,19 @@ class SettingsFormState extends State<SettingsForm> {
|
||||
final shortDivider = Container(
|
||||
height: 1,
|
||||
padding: EdgeInsets.only(left: 24),
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
child: Container(
|
||||
height: 1,
|
||||
color: PaletteDark.mainBackgroundColor,
|
||||
color: Theme.of(context).dividerColor,
|
||||
),
|
||||
);
|
||||
|
||||
final longDivider = Container(
|
||||
height: 1,
|
||||
color: PaletteDark.mainBackgroundColor,
|
||||
color: Theme.of(context).dividerColor,
|
||||
);
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
padding: EdgeInsets.only(top: 12),
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
@@ -371,7 +375,8 @@ class SettingsFormState extends State<SettingsForm> {
|
||||
child: Text(
|
||||
settingsStore.itemHeaders[ItemHeaders.version],
|
||||
style: TextStyle(
|
||||
fontSize: 14.0, color: PaletteDark.walletCardText)
|
||||
fontSize: 14.0,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color)
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
@@ -9,15 +8,15 @@ class SettingsArrowListRow extends StatelessWidget {
|
||||
|
||||
final VoidCallback onTaped;
|
||||
final String title;
|
||||
final _cakeArrowImage = Image.asset('assets/images/select_arrow.png',
|
||||
color: PaletteDark.walletCardText);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final settingsStore = Provider.of<SettingsStore>(context);
|
||||
final _cakeArrowImage = Image.asset('assets/images/select_arrow.png',
|
||||
color: Theme.of(context).primaryTextTheme.caption.color);
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
child: ListTile(
|
||||
contentPadding: EdgeInsets.only(left: 24.0, right: 24.0),
|
||||
title: Observer(
|
||||
@@ -25,7 +24,7 @@ class SettingsArrowListRow extends StatelessWidget {
|
||||
settingsStore.itemHeaders[title],
|
||||
style: TextStyle(
|
||||
fontSize: 14.0,
|
||||
color: Colors.white),
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
)),
|
||||
trailing: _cakeArrowImage,
|
||||
onTap: onTaped),
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
import 'package:cake_wallet/src/stores/settings/settings_store.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class SettingsHeaderListRow extends StatelessWidget {
|
||||
@@ -29,7 +28,8 @@ class SettingsHeaderListRow extends StatelessWidget {
|
||||
? settingsStore.itemHeaders[title]
|
||||
: '',
|
||||
style: TextStyle(
|
||||
fontSize: 15.0, color: Palette.wildDarkBlue),
|
||||
fontSize: 15.0,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color),
|
||||
))
|
||||
],
|
||||
),
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
|
||||
class SettingsLinktListRow extends StatelessWidget {
|
||||
SettingsLinktListRow(
|
||||
@@ -13,7 +12,7 @@ class SettingsLinktListRow extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
child: ListTile(
|
||||
contentPadding: EdgeInsets.only(left: 24.0, right: 24.0),
|
||||
title: Row(
|
||||
@@ -27,7 +26,7 @@ class SettingsLinktListRow extends StatelessWidget {
|
||||
title,
|
||||
style: TextStyle(
|
||||
fontSize: 14.0,
|
||||
color: Colors.white),
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
),
|
||||
)
|
||||
],
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
|
||||
class SettingRawWidgetListRow extends StatelessWidget {
|
||||
SettingRawWidgetListRow({@required this.widgetBuilder});
|
||||
@@ -9,7 +8,7 @@ class SettingRawWidgetListRow extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
child: widgetBuilder(context) ?? Container(),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
@@ -62,14 +61,14 @@ class SettingsSwitchListRow extends StatelessWidget {
|
||||
final settingsStore = Provider.of<SettingsStore>(context);
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
child: ListTile(
|
||||
contentPadding: EdgeInsets.only(left: 24.0, right: 24.0),
|
||||
title: Observer(
|
||||
builder: (_) => Text(settingsStore.itemHeaders[title],
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
color: Colors.white)),
|
||||
color: Theme.of(context).primaryTextTheme.title.color)),
|
||||
),
|
||||
trailing: _getSwitch(context)),
|
||||
);
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
@@ -16,7 +15,7 @@ class SettingsTextListRow extends StatelessWidget {
|
||||
final settingsStore = Provider.of<SettingsStore>(context);
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
child: ListTile(
|
||||
contentPadding: EdgeInsets.only(left: 24.0, right: 24.0),
|
||||
title: Row(
|
||||
@@ -28,7 +27,7 @@ class SettingsTextListRow extends StatelessWidget {
|
||||
settingsStore.itemHeaders[title],
|
||||
style: TextStyle(
|
||||
fontSize: 14.0,
|
||||
color: Colors.white),
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
)),
|
||||
),
|
||||
Flexible(
|
||||
|
||||
@@ -7,7 +7,6 @@ import 'package:cake_wallet/src/screens/pin_code/pin_code.dart';
|
||||
import 'package:cake_wallet/src/screens/base_page.dart';
|
||||
import 'package:cake_wallet/src/stores/settings/settings_store.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
|
||||
|
||||
class SetupPinCodePage extends BasePage {
|
||||
@@ -15,9 +14,6 @@ class SetupPinCodePage extends BasePage {
|
||||
|
||||
final Function(BuildContext, String) onPinCodeSetup;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
String get title => S.current.setup_pin;
|
||||
|
||||
|
||||
@@ -3,16 +3,12 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/src/stores/wallet/wallet_keys_store.dart';
|
||||
import 'package:cake_wallet/src/screens/base_page.dart';
|
||||
import 'package:cake_wallet/src/widgets/standart_list_row.dart';
|
||||
|
||||
class ShowKeysPage extends BasePage {
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
String get title => S.current.wallet_keys;
|
||||
|
||||
@@ -21,7 +17,6 @@ class ShowKeysPage extends BasePage {
|
||||
final walletKeysStore = Provider.of<WalletKeysStore>(context);
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
padding: EdgeInsets.only(top: 20.0, bottom: 20.0),
|
||||
child: Observer(
|
||||
builder: (_) {
|
||||
@@ -36,10 +31,10 @@ class ShowKeysPage extends BasePage {
|
||||
separatorBuilder: (context, index) => Container(
|
||||
height: 1,
|
||||
padding: EdgeInsets.only(left: 24),
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
child: Container(
|
||||
height: 1,
|
||||
color: PaletteDark.walletCardTopEndSync,
|
||||
color: Theme.of(context).dividerColor,
|
||||
),
|
||||
),
|
||||
itemCount: keysMap.length,
|
||||
|
||||
@@ -9,7 +9,6 @@ import 'package:cake_wallet/src/stores/subaddress_creation/subaddress_creation_s
|
||||
import 'package:cake_wallet/src/stores/subaddress_creation/subaddress_creation_store.dart';
|
||||
import 'package:cake_wallet/src/widgets/primary_button.dart';
|
||||
import 'package:cake_wallet/src/screens/base_page.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/src/widgets/base_text_form_field.dart';
|
||||
|
||||
class NewSubaddressPage extends BasePage {
|
||||
@@ -20,9 +19,6 @@ class NewSubaddressPage extends BasePage {
|
||||
@override
|
||||
String get title => S.current.new_subaddress_title;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) => NewSubaddressForm(subaddress);
|
||||
|
||||
@@ -86,7 +82,6 @@ class NewSubaddressFormState extends State<NewSubaddressForm> {
|
||||
return Form(
|
||||
key: _formKey,
|
||||
child: Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
padding: EdgeInsets.all(24.0),
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
|
||||
@@ -9,13 +9,9 @@ import 'package:cake_wallet/src/stores/settings/settings_store.dart';
|
||||
import 'package:cake_wallet/src/screens/base_page.dart';
|
||||
import 'package:cake_wallet/src/screens/transaction_details/standart_list_item.dart';
|
||||
import 'package:cake_wallet/src/widgets/standart_list_row.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
|
||||
class TradeDetailsPage extends BasePage {
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
String get title => S.current.trade_details_title;
|
||||
|
||||
@@ -28,7 +24,6 @@ class TradeDetailsPage extends BasePage {
|
||||
formatDefault: "dd.MM.yyyy, HH:mm");
|
||||
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
padding: EdgeInsets.only(top: 20, bottom: 20),
|
||||
child: Observer(builder: (_) {
|
||||
final trade = exchangeStore.trade;
|
||||
@@ -64,10 +59,10 @@ class TradeDetailsPage extends BasePage {
|
||||
separatorBuilder: (_, __) => Container(
|
||||
height: 1,
|
||||
padding: EdgeInsets.only(left: 24),
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
child: Container(
|
||||
height: 1,
|
||||
color: PaletteDark.walletCardTopEndSync,
|
||||
color: Theme.of(context).dividerColor,
|
||||
),
|
||||
),
|
||||
itemCount: items.length,
|
||||
|
||||
@@ -15,9 +15,6 @@ class TransactionDetailsPage extends BasePage {
|
||||
|
||||
final TransactionInfo transactionInfo;
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
String get title => S.current.transaction_details_title;
|
||||
|
||||
@@ -78,16 +75,15 @@ class TransactionDetailsFormState extends State<TransactionDetailsForm> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
color: PaletteDark.historyPanel,
|
||||
padding: EdgeInsets.only(top: 20, bottom: 20),
|
||||
child: ListView.separated(
|
||||
separatorBuilder: (context, index) => Container(
|
||||
height: 1,
|
||||
padding: EdgeInsets.only(left: 24),
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
child: Container(
|
||||
height: 1,
|
||||
color: PaletteDark.walletCardTopEndSync,
|
||||
color: Theme.of(context).dividerColor,
|
||||
),
|
||||
),
|
||||
itemCount: _items.length,
|
||||
|
||||
@@ -14,10 +14,6 @@ import 'package:cake_wallet/src/screens/wallet_list/wallet_menu.dart';
|
||||
import 'package:cake_wallet/src/screens/wallet_list/widgets/wallet_tile.dart';
|
||||
|
||||
class WalletListPage extends BasePage {
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) => WalletListBody();
|
||||
}
|
||||
@@ -29,8 +25,6 @@ class WalletListBody extends StatefulWidget {
|
||||
|
||||
class WalletListBodyState extends State<WalletListBody> {
|
||||
final moneroIcon = Image.asset('assets/images/monero.png', height: 24, width: 24);
|
||||
final newWalletImage = Image.asset('assets/images/new_wallet.png', height: 12, width: 12, color: PaletteDark.historyPanel);
|
||||
final restoreWalletImage = Image.asset('assets/images/restore_wallet.png', height: 12, width: 12, color: Colors.white);
|
||||
WalletListStore _walletListStore;
|
||||
ScrollController scrollController = ScrollController();
|
||||
|
||||
@@ -39,10 +33,18 @@ class WalletListBodyState extends State<WalletListBody> {
|
||||
final walletStore = Provider.of<WalletStore>(context);
|
||||
_walletListStore = Provider.of<WalletListStore>(context);
|
||||
|
||||
final newWalletImage = Image.asset('assets/images/new_wallet.png',
|
||||
height: 12,
|
||||
width: 12,
|
||||
color: Palette.oceanBlue);
|
||||
final restoreWalletImage = Image.asset('assets/images/restore_wallet.png',
|
||||
height: 12,
|
||||
width: 12,
|
||||
color: Theme.of(context).primaryTextTheme.title.color);
|
||||
|
||||
return SafeArea(
|
||||
child: Container(
|
||||
padding: EdgeInsets.only(top: 16),
|
||||
color: PaletteDark.historyPanel,
|
||||
child: ScrollableWithBottomSection(
|
||||
contentPadding: EdgeInsets.only(bottom: 20),
|
||||
content: Container(
|
||||
@@ -51,7 +53,8 @@ class WalletListBodyState extends State<WalletListBody> {
|
||||
shrinkWrap: true,
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
separatorBuilder: (_, index) => Divider(
|
||||
color: PaletteDark.historyPanel, height: 16),
|
||||
color: Theme.of(context).backgroundColor,
|
||||
height: 16),
|
||||
itemCount: _walletListStore.wallets.length,
|
||||
itemBuilder: (__, index) {
|
||||
final wallet = _walletListStore.wallets[index];
|
||||
@@ -110,7 +113,7 @@ class WalletListBodyState extends State<WalletListBody> {
|
||||
child: Container(
|
||||
height: 108,
|
||||
width: 108,
|
||||
color: PaletteDark.historyPanel,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
child: Container(
|
||||
padding: EdgeInsets.only(left: 5, right: 5),
|
||||
decoration: BoxDecoration(
|
||||
@@ -156,15 +159,17 @@ class WalletListBodyState extends State<WalletListBody> {
|
||||
image: newWalletImage,
|
||||
text: S.of(context).wallet_list_create_new_wallet,
|
||||
color: Colors.white,
|
||||
textColor: PaletteDark.historyPanel),
|
||||
textColor: Palette.oceanBlue,
|
||||
borderColor: Palette.oceanBlue,
|
||||
),
|
||||
SizedBox(height: 10.0),
|
||||
PrimaryImageButton(
|
||||
onPressed: () =>
|
||||
Navigator.of(context).pushNamed(Routes.restoreWalletOptions),
|
||||
image: restoreWalletImage,
|
||||
text: S.of(context).wallet_list_restore_wallet,
|
||||
color: PaletteDark.historyPanelButton,
|
||||
textColor: Colors.white)
|
||||
color: Theme.of(context).primaryTextTheme.overline.color,
|
||||
textColor: Theme.of(context).primaryTextTheme.title.color)
|
||||
])),
|
||||
)
|
||||
);
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
|
||||
class WalletTile extends SliverPersistentHeaderDelegate {
|
||||
WalletTile({
|
||||
@@ -29,8 +28,8 @@ class WalletTile extends SliverPersistentHeaderDelegate {
|
||||
panelWidth = panelWidth < 12 ? 0 : 12;
|
||||
|
||||
final currentColor = isCurrent
|
||||
? Colors.white
|
||||
: PaletteDark.historyPanel;
|
||||
? Theme.of(context).accentTextTheme.caption.color
|
||||
: Theme.of(context).backgroundColor;
|
||||
|
||||
return Stack(
|
||||
fit: StackFit.expand,
|
||||
@@ -55,7 +54,7 @@ class WalletTile extends SliverPersistentHeaderDelegate {
|
||||
height: 108,
|
||||
width: max - 16,
|
||||
padding: EdgeInsets.only(left: 20, right: 20),
|
||||
color: PaletteDark.historyPanel,
|
||||
color: Theme.of(context).backgroundColor,
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
@@ -71,7 +70,7 @@ class WalletTile extends SliverPersistentHeaderDelegate {
|
||||
style: TextStyle(
|
||||
fontSize: 22,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
)
|
||||
],
|
||||
@@ -87,7 +86,7 @@ class WalletTile extends SliverPersistentHeaderDelegate {
|
||||
walletAddress,
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
color: PaletteDark.walletCardText
|
||||
color: Theme.of(context).primaryTextTheme.caption.color
|
||||
),
|
||||
)
|
||||
],
|
||||
@@ -105,16 +104,27 @@ class WalletTile extends SliverPersistentHeaderDelegate {
|
||||
child: Container(
|
||||
height: 108,
|
||||
width: panelWidth,
|
||||
padding: EdgeInsets.only(
|
||||
top: 1,
|
||||
left: 1,
|
||||
bottom: 1
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.only(topLeft: Radius.circular(12), bottomLeft: Radius.circular(12)),
|
||||
color: Theme.of(context).accentTextTheme.subtitle.color
|
||||
),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.only(topLeft: Radius.circular(12), bottomLeft: Radius.circular(12)),
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
PaletteDark.walletCardTopEndSync,
|
||||
PaletteDark.walletCardBottomEndSync
|
||||
]
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
Theme.of(context).accentTextTheme.caption.backgroundColor,
|
||||
Theme.of(context).accentTextTheme.caption.decorationColor
|
||||
]
|
||||
)
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -9,11 +9,6 @@ import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart';
|
||||
class WelcomePage extends BasePage {
|
||||
static const aspectRatioImage = 1.25;
|
||||
final welcomeImage = Image.asset('assets/images/welcome.png');
|
||||
final newWalletImage = Image.asset('assets/images/new_wallet.png', height: 12, width: 12, color: PaletteDark.historyPanel);
|
||||
final restoreWalletImage = Image.asset('assets/images/restore_wallet.png', height: 12, width: 12, color: Colors.white);
|
||||
|
||||
@override
|
||||
Color get backgroundColor => PaletteDark.historyPanel;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -25,9 +20,17 @@ class WelcomePage extends BasePage {
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) {
|
||||
final newWalletImage = Image.asset('assets/images/new_wallet.png',
|
||||
height: 12,
|
||||
width: 12,
|
||||
color: Palette.oceanBlue);
|
||||
final restoreWalletImage = Image.asset('assets/images/restore_wallet.png',
|
||||
height: 12,
|
||||
width: 12,
|
||||
color: Theme.of(context).primaryTextTheme.title.color);
|
||||
|
||||
return Container(
|
||||
padding: EdgeInsets.only(top: 20),
|
||||
color: PaletteDark.historyPanel,
|
||||
child: ScrollableWithBottomSection(
|
||||
contentPadding: EdgeInsets.only(bottom: 20),
|
||||
content: Column(
|
||||
@@ -45,7 +48,7 @@ class WelcomePage extends BasePage {
|
||||
S.of(context).welcome,
|
||||
style: TextStyle(
|
||||
fontSize: 18,
|
||||
color: PaletteDark.walletCardText,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
@@ -56,7 +59,7 @@ class WelcomePage extends BasePage {
|
||||
style: TextStyle(
|
||||
fontSize: 36,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white,
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
@@ -68,7 +71,7 @@ class WelcomePage extends BasePage {
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: PaletteDark.walletCardText,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
@@ -84,7 +87,7 @@ class WelcomePage extends BasePage {
|
||||
S.of(context).please_make_selection,
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
color: PaletteDark.walletCardText,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
@@ -95,7 +98,9 @@ class WelcomePage extends BasePage {
|
||||
image: newWalletImage,
|
||||
text: S.of(context).create_new,
|
||||
color: Colors.white,
|
||||
textColor: PaletteDark.historyPanel),
|
||||
textColor: Palette.oceanBlue,
|
||||
borderColor: Palette.oceanBlue,
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(top: 10),
|
||||
@@ -103,8 +108,8 @@ class WelcomePage extends BasePage {
|
||||
onPressed: () => Navigator.pushNamed(context, Routes.restoreOptions),
|
||||
image: restoreWalletImage,
|
||||
text: S.of(context).restore_wallet,
|
||||
color: PaletteDark.historyPanelButton,
|
||||
textColor: Colors.white),
|
||||
color: Theme.of(context).primaryTextTheme.overline.color,
|
||||
textColor: Theme.of(context).primaryTextTheme.title.color),
|
||||
)
|
||||
]),
|
||||
),
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import 'package:cake_wallet/routes.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/src/domain/common/contact.dart';
|
||||
import 'package:cake_wallet/src/domain/monero/subaddress.dart';
|
||||
@@ -20,7 +19,7 @@ class AddressTextField extends StatelessWidget {
|
||||
this.onURIScanned,
|
||||
this.focusNode,
|
||||
this.isBorderExist = true,
|
||||
this.buttonColor = PaletteDark.walletCardSubAddressField,
|
||||
this.buttonColor,
|
||||
this.validator});
|
||||
|
||||
static const prefixIconWidth = 34.0;
|
||||
@@ -46,7 +45,7 @@ class AddressTextField extends StatelessWidget {
|
||||
focusNode: focusNode,
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
decoration: InputDecoration(
|
||||
suffixIcon: SizedBox(
|
||||
@@ -66,7 +65,7 @@ class AddressTextField extends StatelessWidget {
|
||||
child: Container(
|
||||
padding: EdgeInsets.all(8),
|
||||
decoration: BoxDecoration(
|
||||
color: buttonColor,
|
||||
color: buttonColor ?? Theme.of(context).accentTextTheme.title.color,
|
||||
borderRadius:
|
||||
BorderRadius.all(Radius.circular(6))),
|
||||
child: Image.asset('assets/images/qr_code_icon.png')),
|
||||
@@ -84,7 +83,7 @@ class AddressTextField extends StatelessWidget {
|
||||
child: Container(
|
||||
padding: EdgeInsets.all(8),
|
||||
decoration: BoxDecoration(
|
||||
color: buttonColor,
|
||||
color: buttonColor ?? Theme.of(context).accentTextTheme.title.color,
|
||||
borderRadius:
|
||||
BorderRadius.all(Radius.circular(6))),
|
||||
child: Image.asset(
|
||||
@@ -103,7 +102,7 @@ class AddressTextField extends StatelessWidget {
|
||||
child: Container(
|
||||
padding: EdgeInsets.all(8),
|
||||
decoration: BoxDecoration(
|
||||
color: buttonColor,
|
||||
color: buttonColor ?? Theme.of(context).accentTextTheme.title.color,
|
||||
borderRadius:
|
||||
BorderRadius.all(Radius.circular(6))),
|
||||
child: Image.asset(
|
||||
@@ -115,24 +114,24 @@ class AddressTextField extends StatelessWidget {
|
||||
),
|
||||
hintStyle: TextStyle(
|
||||
fontSize: 16,
|
||||
color: PaletteDark.walletCardText
|
||||
color: Theme.of(context).primaryTextTheme.caption.color
|
||||
),
|
||||
hintText: placeholder ?? S.current.widgets_address,
|
||||
focusedBorder: isBorderExist
|
||||
? UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.walletCardSubAddressField,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0))
|
||||
: InputBorder.none,
|
||||
disabledBorder: isBorderExist
|
||||
? UnderlineInputBorder(
|
||||
borderSide:
|
||||
BorderSide(color: PaletteDark.walletCardSubAddressField, width: 1.0))
|
||||
BorderSide(color: Theme.of(context).dividerColor, width: 1.0))
|
||||
: InputBorder.none,
|
||||
enabledBorder: isBorderExist
|
||||
? UnderlineInputBorder(
|
||||
borderSide:
|
||||
BorderSide(color: PaletteDark.walletCardSubAddressField, width: 1.0))
|
||||
BorderSide(color: Theme.of(context).dividerColor, width: 1.0))
|
||||
: InputBorder.none,
|
||||
),
|
||||
validator: validator,
|
||||
|
||||
@@ -18,7 +18,7 @@ class BaseAlertDialog extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Colors.white,
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
decoration: TextDecoration.none,
|
||||
),
|
||||
);
|
||||
@@ -31,7 +31,7 @@ class BaseAlertDialog extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Colors.white,
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
decoration: TextDecoration.none,
|
||||
),
|
||||
);
|
||||
@@ -122,7 +122,7 @@ class BaseAlertDialog extends StatelessWidget {
|
||||
child: BackdropFilter(
|
||||
filter: ImageFilter.blur(sigmaX: 3.0, sigmaY: 3.0),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(color: PaletteDark.historyPanel.withOpacity(0.75)),
|
||||
decoration: BoxDecoration(color: PaletteDark.darkNightBlue.withOpacity(0.75)),
|
||||
child: Center(
|
||||
child: GestureDetector(
|
||||
onTap: () => null,
|
||||
@@ -131,7 +131,7 @@ class BaseAlertDialog extends StatelessWidget {
|
||||
height: 257,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.all(Radius.circular(24)),
|
||||
color: PaletteDark.menuHeader
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor
|
||||
),
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
@@ -152,7 +152,7 @@ class BaseAlertDialog extends StatelessWidget {
|
||||
Container(
|
||||
width: 300,
|
||||
height: 1,
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
),
|
||||
Container(
|
||||
width: 300,
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
class BaseTextFormField extends StatelessWidget {
|
||||
@@ -12,9 +11,9 @@ class BaseTextFormField extends StatelessWidget {
|
||||
this.hintText = '',
|
||||
this.maxLines = 1,
|
||||
this.inputFormatters,
|
||||
this.textColor = Colors.white,
|
||||
this.hintColor = PaletteDark.walletCardText,
|
||||
this.borderColor = PaletteDark.menuList,
|
||||
this.textColor,
|
||||
this.hintColor,
|
||||
this.borderColor,
|
||||
this.prefix,
|
||||
this.suffix,
|
||||
this.suffixIcon,
|
||||
@@ -52,26 +51,26 @@ class BaseTextFormField extends StatelessWidget {
|
||||
enabled: enabled,
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: textColor
|
||||
color: textColor ?? Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
decoration: InputDecoration(
|
||||
prefix: prefix,
|
||||
suffix: suffix,
|
||||
suffixIcon: suffixIcon,
|
||||
hintStyle: TextStyle(
|
||||
color: hintColor,
|
||||
color: hintColor ?? Theme.of(context).primaryTextTheme.caption.color,
|
||||
fontSize: 16
|
||||
),
|
||||
hintText: hintText,
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: borderColor,
|
||||
color: borderColor ?? Theme.of(context).dividerColor,
|
||||
width: 1.0
|
||||
)
|
||||
),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: borderColor,
|
||||
color: borderColor ?? Theme.of(context).dividerColor,
|
||||
width: 1.0
|
||||
)
|
||||
)
|
||||
|
||||
@@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/src/domain/monero/get_height_by_date.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
|
||||
class BlockchainHeightWidget extends StatefulWidget {
|
||||
BlockchainHeightWidget({GlobalKey key}) : super(key: key);
|
||||
@@ -39,24 +38,24 @@ class BlockchainHeightState extends State<BlockchainHeightWidget> {
|
||||
child: TextFormField(
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
controller: restoreHeightController,
|
||||
keyboardType: TextInputType.numberWithOptions(
|
||||
signed: false, decimal: false),
|
||||
decoration: InputDecoration(
|
||||
hintStyle: TextStyle(
|
||||
color: PaletteDark.walletCardText,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color,
|
||||
fontSize: 16
|
||||
),
|
||||
hintText: S.of(context).widgets_restore_from_blockheight,
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0))),
|
||||
),
|
||||
))
|
||||
@@ -69,7 +68,7 @@ class BlockchainHeightState extends State<BlockchainHeightWidget> {
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white),
|
||||
color: Theme.of(context).primaryTextTheme.title.color),
|
||||
),
|
||||
),
|
||||
Row(
|
||||
@@ -82,21 +81,21 @@ class BlockchainHeightState extends State<BlockchainHeightWidget> {
|
||||
child: TextFormField(
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
decoration: InputDecoration(
|
||||
hintStyle: TextStyle(
|
||||
color: PaletteDark.walletCardText,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color,
|
||||
fontSize: 16
|
||||
),
|
||||
hintText: S.of(context).widgets_restore_from_date,
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0))),
|
||||
controller: dateController,
|
||||
validator: (value) {
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
import 'package:cake_wallet/theme_changer.dart';
|
||||
import 'package:cake_wallet/themes.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class NavBar extends StatelessWidget implements ObstructingPreferredSizeWidget {
|
||||
factory NavBar(
|
||||
@@ -11,8 +8,6 @@ class NavBar extends StatelessWidget implements ObstructingPreferredSizeWidget {
|
||||
Widget middle,
|
||||
Widget trailing,
|
||||
Color backgroundColor}) {
|
||||
final _themeChanger = Provider.of<ThemeChanger>(context);
|
||||
final _isDarkTheme = _themeChanger.getTheme() == Themes.darkTheme;
|
||||
|
||||
return NavBar._internal(
|
||||
leading: leading,
|
||||
@@ -20,8 +15,6 @@ class NavBar extends StatelessWidget implements ObstructingPreferredSizeWidget {
|
||||
trailing: trailing,
|
||||
height: _height,
|
||||
backgroundColor: backgroundColor);
|
||||
/*backgroundColor:
|
||||
_isDarkTheme ? Theme.of(context).backgroundColor : backgroundColor);*/
|
||||
}
|
||||
|
||||
factory NavBar.withShadow(
|
||||
@@ -30,8 +23,6 @@ class NavBar extends StatelessWidget implements ObstructingPreferredSizeWidget {
|
||||
Widget middle,
|
||||
Widget trailing,
|
||||
Color backgroundColor}) {
|
||||
final _themeChanger = Provider.of<ThemeChanger>(context);
|
||||
final _isDarkTheme = _themeChanger.getTheme() == Themes.darkTheme;
|
||||
|
||||
return NavBar._internal(
|
||||
leading: leading,
|
||||
@@ -39,13 +30,8 @@ class NavBar extends StatelessWidget implements ObstructingPreferredSizeWidget {
|
||||
trailing: trailing,
|
||||
height: 80,
|
||||
backgroundColor: backgroundColor,
|
||||
/*backgroundColor:
|
||||
_isDarkTheme ? Theme.of(context).backgroundColor : backgroundColor,*/
|
||||
decoration: BoxDecoration(
|
||||
color: backgroundColor,
|
||||
/*_isDarkTheme
|
||||
? Theme.of(context).backgroundColor
|
||||
: backgroundColor,*/
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Color.fromRGBO(132, 141, 198, 0.11),
|
||||
|
||||
@@ -28,7 +28,7 @@ class Picker<Item extends Object> extends StatelessWidget {
|
||||
child: BackdropFilter(
|
||||
filter: ImageFilter.blur(sigmaX: 3.0, sigmaY: 3.0),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(color: PaletteDark.historyPanel.withOpacity(0.75)),
|
||||
decoration: BoxDecoration(color: PaletteDark.darkNightBlue.withOpacity(0.75)),
|
||||
child: Center(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
@@ -54,10 +54,10 @@ class Picker<Item extends Object> extends StatelessWidget {
|
||||
borderRadius: BorderRadius.all(Radius.circular(14)),
|
||||
child: Container(
|
||||
height: 233,
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
child: ListView.separated(
|
||||
separatorBuilder: (context, index) => Divider(
|
||||
color: PaletteDark.mainBackgroundColor,
|
||||
color: Theme.of(context).dividerColor,
|
||||
height: 1,
|
||||
),
|
||||
itemCount: items == null ? 0 : items.length,
|
||||
@@ -67,11 +67,11 @@ class Picker<Item extends Object> extends StatelessWidget {
|
||||
final isItemSelected = index == selectedAtIndex;
|
||||
|
||||
final color = isItemSelected
|
||||
? PaletteDark.menuHeader
|
||||
? Theme.of(context).accentTextTheme.subtitle.decorationColor
|
||||
: Colors.transparent;
|
||||
final textColor = isItemSelected
|
||||
? Colors.blue
|
||||
: Colors.white;
|
||||
: Theme.of(context).primaryTextTheme.title.color;
|
||||
|
||||
return GestureDetector(
|
||||
onTap: () {
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
|
||||
Future<T> presentPicker<T extends Object>(
|
||||
BuildContext context, List<T> list) async {
|
||||
T _value = list[0];
|
||||
|
||||
return await showDialog(
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: Text(S.of(context).please_select),
|
||||
backgroundColor: Theme.of(context).backgroundColor,
|
||||
content: Container(
|
||||
height: 150.0,
|
||||
child: CupertinoPicker(
|
||||
backgroundColor: Theme.of(context).backgroundColor,
|
||||
itemExtent: 45.0,
|
||||
onSelectedItemChanged: (int index) => _value = list[index],
|
||||
children: List.generate(
|
||||
list.length,
|
||||
(index) => Center(
|
||||
child: Text(
|
||||
list[index].toString(),
|
||||
style: TextStyle(
|
||||
color: Theme.of(context)
|
||||
.primaryTextTheme
|
||||
.caption
|
||||
.color),
|
||||
),
|
||||
))),
|
||||
),
|
||||
actions: <Widget>[
|
||||
FlatButton(
|
||||
onPressed: () => Navigator.of(context).pop(),
|
||||
child: Text(S.of(context).cancel)),
|
||||
FlatButton(
|
||||
onPressed: () => Navigator.of(context).pop(_value),
|
||||
child: Text(S.of(context).ok))
|
||||
],
|
||||
);
|
||||
});
|
||||
}
|
||||
@@ -30,7 +30,8 @@ class PrimaryButton extends StatelessWidget {
|
||||
color: isDisabled ? color.withOpacity(0.5) : color,
|
||||
disabledColor: color.withOpacity(0.5),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(26.0)),
|
||||
borderRadius: BorderRadius.circular(26.0),
|
||||
),
|
||||
child: Text(text,
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
@@ -150,12 +151,14 @@ class PrimaryImageButton extends StatelessWidget {
|
||||
@required this.image,
|
||||
@required this.text,
|
||||
@required this.color,
|
||||
@required this.textColor});
|
||||
@required this.textColor,
|
||||
this.borderColor = Colors.transparent});
|
||||
|
||||
final VoidCallback onPressed;
|
||||
final Image image;
|
||||
final Color color;
|
||||
final Color textColor;
|
||||
final Color borderColor;
|
||||
final String text;
|
||||
|
||||
@override
|
||||
@@ -167,6 +170,7 @@ class PrimaryImageButton extends StatelessWidget {
|
||||
onPressed: onPressed,
|
||||
color: color,
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(color: borderColor),
|
||||
borderRadius: BorderRadius.circular(26.0)),
|
||||
child:Center(
|
||||
child: Row(
|
||||
|
||||
@@ -245,7 +245,7 @@ class SeedWidgetState extends State<SeedWidget> {
|
||||
bottomLeft: Radius.circular(24),
|
||||
bottomRight: Radius.circular(24)
|
||||
),
|
||||
color: PaletteDark.menuList
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor
|
||||
),
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
@@ -256,7 +256,7 @@ class SeedWidgetState extends State<SeedWidget> {
|
||||
S.of(context).restore_active_seed,
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
color: PaletteDark.walletCardText
|
||||
color: Theme.of(context).primaryTextTheme.caption.color
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
@@ -275,8 +275,9 @@ class SeedWidgetState extends State<SeedWidget> {
|
||||
child: Text(
|
||||
item.toString(),
|
||||
style: TextStyle(
|
||||
color:
|
||||
isValid ? Colors.white : Palette.lightGrey,
|
||||
color: isValid
|
||||
? Theme.of(context).primaryTextTheme.title.color
|
||||
: Theme.of(context).primaryTextTheme.caption.color,
|
||||
fontSize: 16,
|
||||
fontWeight:
|
||||
isSelected ? FontWeight.w900 : FontWeight.w400,
|
||||
@@ -306,7 +307,7 @@ class SeedWidgetState extends State<SeedWidget> {
|
||||
style: TextStyle(
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
@@ -318,7 +319,7 @@ class SeedWidgetState extends State<SeedWidget> {
|
||||
: null,
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
controller: _seedController,
|
||||
textInputAction: TextInputAction.done,
|
||||
@@ -333,7 +334,7 @@ class SeedWidgetState extends State<SeedWidget> {
|
||||
Text(
|
||||
'${items.length}/${SeedWidgetState.maxLength}',
|
||||
style: TextStyle(
|
||||
color: PaletteDark.walletCardText,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color,
|
||||
fontSize: 14)),
|
||||
SizedBox(width: 10),
|
||||
InkWell(
|
||||
@@ -346,13 +347,13 @@ class SeedWidgetState extends State<SeedWidget> {
|
||||
padding: EdgeInsets.all(7),
|
||||
decoration: BoxDecoration(
|
||||
color:
|
||||
PaletteDark.menuList,
|
||||
Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
borderRadius:
|
||||
BorderRadius.circular(10.0)),
|
||||
child: Text(
|
||||
S.of(context).paste,
|
||||
style: TextStyle(
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
)),
|
||||
)
|
||||
@@ -362,17 +363,17 @@ class SeedWidgetState extends State<SeedWidget> {
|
||||
),
|
||||
hintStyle:
|
||||
TextStyle(
|
||||
color: PaletteDark.walletCardText,
|
||||
color: Theme.of(context).primaryTextTheme.caption.color,
|
||||
fontSize: 16
|
||||
),
|
||||
hintText: S.of(context).restore_from_seed_placeholder,
|
||||
errorText: _errorMessage,
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList, width: 1.0)),
|
||||
color: Theme.of(context).dividerColor, width: 1.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 1.0))),
|
||||
enableInteractiveSelection: false,
|
||||
),
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class StandartCloseButton extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SizedBox(
|
||||
height: 37,
|
||||
width: 37,
|
||||
child: FlatButton(
|
||||
padding: EdgeInsets.all(0),
|
||||
onPressed: () => Navigator.of(context).pop(),
|
||||
child: Image.asset('assets/images/close_button.png')),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
|
||||
class StandartListRow extends StatelessWidget {
|
||||
StandartListRow({this.title, this.value, this.isDrawTop, this.isDrawBottom});
|
||||
@@ -17,12 +16,12 @@ class StandartListRow extends StatelessWidget {
|
||||
? Container(
|
||||
width: double.infinity,
|
||||
height: 1,
|
||||
color: PaletteDark.walletCardTopEndSync,
|
||||
color: Theme.of(context).dividerColor,
|
||||
)
|
||||
: Offstage(),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
color: PaletteDark.menuList,
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(left: 24, top: 16, bottom: 16, right: 24),
|
||||
child: Column(
|
||||
@@ -32,7 +31,7 @@ class StandartListRow extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: PaletteDark.walletCardText),
|
||||
color: Theme.of(context).primaryTextTheme.caption.color),
|
||||
textAlign: TextAlign.left),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 12),
|
||||
@@ -40,7 +39,7 @@ class StandartListRow extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Colors.white)),
|
||||
color: Theme.of(context).primaryTextTheme.title.color)),
|
||||
)
|
||||
]),
|
||||
),
|
||||
@@ -49,7 +48,7 @@ class StandartListRow extends StatelessWidget {
|
||||
? Container(
|
||||
width: double.infinity,
|
||||
height: 1,
|
||||
color: PaletteDark.walletCardTopEndSync,
|
||||
color: Theme.of(context).dividerColor,
|
||||
)
|
||||
: Offstage(),
|
||||
],
|
||||
|
||||
@@ -26,7 +26,7 @@ class StandartSwitchState extends State<StandartSwitch> {
|
||||
decoration: BoxDecoration(
|
||||
color: widget.value
|
||||
? Colors.green
|
||||
: PaletteDark.mainBackgroundColor,
|
||||
: PaletteDark.distantBlue,
|
||||
borderRadius: BorderRadius.all(Radius.circular(14.0))),
|
||||
child: Container(
|
||||
width: 24.0,
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
|
||||
class TemplateTile extends StatelessWidget {
|
||||
TemplateTile({
|
||||
@@ -14,10 +13,12 @@ class TemplateTile extends StatelessWidget {
|
||||
final String from;
|
||||
final VoidCallback onTap;
|
||||
|
||||
final toIcon = Image.asset('assets/images/to_icon.png');
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final toIcon = Image.asset('assets/images/to_icon.png',
|
||||
color: Theme.of(context).primaryTextTheme.title.color,
|
||||
);
|
||||
|
||||
return Container(
|
||||
padding: EdgeInsets.only(right: 10),
|
||||
child: GestureDetector(
|
||||
@@ -27,7 +28,7 @@ class TemplateTile extends StatelessWidget {
|
||||
padding: EdgeInsets.only(left: 24, right: 24),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.all(Radius.circular(20)),
|
||||
color: PaletteDark.menuList
|
||||
color: Theme.of(context).accentTextTheme.title.backgroundColor
|
||||
),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
@@ -38,7 +39,7 @@ class TemplateTile extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
@@ -48,7 +49,7 @@ class TemplateTile extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -63,7 +64,7 @@ class TemplateTile extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Colors.white
|
||||
color: Theme.of(context).primaryTextTheme.title.color
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user