CWA-179 | added image_widget and base_restore_widget, refactored restore_options_page and restore_wallet_options_page, added scale factor

This commit is contained in:
Oleksandr Sobol 2020-03-06 11:01:04 +02:00
parent 6e7ba33ecd
commit 859afef931
5 changed files with 144 additions and 78 deletions

View file

@ -3,6 +3,8 @@ import 'package:cake_wallet/palette.dart';
import 'package:cake_wallet/routes.dart';
import 'package:flutter/cupertino.dart';
import 'package:cake_wallet/src/screens/restore/widgets/restore_button.dart';
import 'package:cake_wallet/src/screens/restore/widgets/image_widget.dart';
import 'package:cake_wallet/src/screens/restore/widgets/base_restore_widget.dart';
import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/generated/i18n.dart';
@ -19,42 +21,39 @@ class RestoreOptionsPage extends BasePage {
final _imageRestoreSeed = Image.asset('assets/images/restoreSeed.png');
@override
Widget body(BuildContext context) => Container(
padding: EdgeInsets.only(
left: 20.0,
right: 20.0,
Widget body(BuildContext context) {
final isLargeScreen = MediaQuery.of(context).size.height > largeHeight;
return BaseRestoreWidget(
firstRestoreButton: RestoreButton(
onPressed: () =>
Navigator.pushNamed(
context, Routes.restoreWalletOptionsFromWelcome),
imageWidget: ImageWidget(
image: _imageSeedKeys,
aspectRatioImage: _aspectRatioImage,
isLargeScreen: isLargeScreen,
),
child: SingleChildScrollView(
child: Column(
children: <Widget>[
Container(
child: RestoreButton(
onPressed: () {
Navigator.pushNamed(
context, Routes.restoreWalletOptionsFromWelcome);
},
image: _imageSeedKeys,
aspectRatioImage: _aspectRatioImage,
titleColor: Palette.lightViolet,
color: Palette.lightViolet,
title: S.of(context).restore_title_from_seed_keys,
description: S.of(context).restore_description_from_seed_keys,
textButton: S.of(context).restore_next,
),
),
Container(
child: RestoreButton(
onPressed: () {},
image: _imageRestoreSeed,
aspectRatioImage: _aspectRatioImage,
titleColor: Palette.cakeGreen,
color: Palette.cakeGreen,
title: S.of(context).restore_title_from_backup,
description: S.of(context).restore_description_from_backup,
textButton: S.of(context).restore_next,
))
],
),
titleColor: Palette.lightViolet,
color: Palette.lightViolet,
title: S.of(context).restore_title_from_seed_keys,
description: S.of(context).restore_description_from_seed_keys,
textButton: S.of(context).restore_next,
),
secondRestoreButton: RestoreButton(
onPressed: () {},
imageWidget: ImageWidget(
image: _imageRestoreSeed,
aspectRatioImage: _aspectRatioImage,
isLargeScreen: isLargeScreen,
),
);
titleColor: Palette.cakeGreen,
color: Palette.cakeGreen,
title: S.of(context).restore_title_from_backup,
description: S.of(context).restore_description_from_backup,
textButton: S.of(context).restore_next,
),
isLargeScreen: isLargeScreen,
);
}
}

View file

@ -3,6 +3,8 @@ import 'package:flutter/cupertino.dart';
import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/palette.dart';
import 'package:cake_wallet/src/screens/restore/widgets/restore_button.dart';
import 'package:cake_wallet/src/screens/restore/widgets/image_widget.dart';
import 'package:cake_wallet/src/screens/restore/widgets/base_restore_widget.dart';
import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/stores/seed_language/seed_language_store.dart';
@ -23,46 +25,40 @@ class RestoreWalletOptionsPage extends BasePage {
@override
Widget body(BuildContext context) {
final seedLanguageStore = Provider.of<SeedLanguageStore>(context);
final isLargeScreen = MediaQuery.of(context).size.height > largeHeight;
return Container(
padding: EdgeInsets.only(
left: 20.0,
right: 20.0,
return BaseRestoreWidget(
firstRestoreButton: RestoreButton(
onPressed: () {
seedLanguageStore.setCurrentRoute(Routes.restoreWalletFromSeed);
Navigator.pushNamed(context, Routes.seedLanguage);
},
imageWidget: ImageWidget(
image: _imageSeed,
aspectRatioImage: _aspectRatioImage,
isLargeScreen: isLargeScreen),
titleColor: Palette.lightViolet,
color: Palette.lightViolet,
title: S.of(context).restore_title_from_seed,
description: S.of(context).restore_description_from_seed,
textButton: S.of(context).restore_next,
),
child: SingleChildScrollView(
child: Column(
children: <Widget>[
Container(
child: RestoreButton(
onPressed: () {
seedLanguageStore.setCurrentRoute(Routes.restoreWalletFromSeed);
Navigator.pushNamed(context, Routes.seedLanguage);
},
image: _imageSeed,
aspectRatioImage: _aspectRatioImage,
titleColor: Palette.lightViolet,
color: Palette.lightViolet,
title: S.of(context).restore_title_from_seed,
description: S.of(context).restore_description_from_seed,
textButton: S.of(context).restore_next,
)),
Container(
child: RestoreButton(
onPressed: () {
seedLanguageStore.setCurrentRoute(Routes.restoreWalletFromKeys);
Navigator.pushNamed(context, Routes.seedLanguage);
},
image: _imageKeys,
aspectRatioImage: _aspectRatioImage,
titleColor: Palette.cakeGreen,
color: Palette.cakeGreen,
title: S.of(context).restore_title_from_keys,
description: S.of(context).restore_description_from_keys,
textButton: S.of(context).restore_next,
))
],
),
secondRestoreButton: RestoreButton(
onPressed: () {
seedLanguageStore.setCurrentRoute(Routes.restoreWalletFromKeys);
Navigator.pushNamed(context, Routes.seedLanguage);
},
imageWidget: ImageWidget(
image: _imageKeys,
aspectRatioImage: _aspectRatioImage,
isLargeScreen: isLargeScreen),
titleColor: Palette.cakeGreen,
color: Palette.cakeGreen,
title: S.of(context).restore_title_from_keys,
description: S.of(context).restore_description_from_keys,
textButton: S.of(context).restore_next,
),
isLargeScreen: isLargeScreen,
);
}
}

View file

@ -0,0 +1,44 @@
import 'package:flutter/material.dart';
const largeHeight = 800;
class BaseRestoreWidget extends StatelessWidget {
BaseRestoreWidget({
@required this.firstRestoreButton,
@required this.secondRestoreButton,
this.isLargeScreen = false
});
final Widget firstRestoreButton;
final Widget secondRestoreButton;
final bool isLargeScreen;
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.only(
left: 20.0,
right: 20.0,
),
child: isLargeScreen
? Column(
children: <Widget>[
Flexible(
child: firstRestoreButton
),
Flexible(
child: secondRestoreButton
)
],
)
: SingleChildScrollView(
child: Column(
children: <Widget>[
firstRestoreButton,
secondRestoreButton
],
),
)
);
}
}

View file

@ -0,0 +1,29 @@
import 'package:flutter/material.dart';
class ImageWidget extends StatelessWidget {
ImageWidget({
@required this.image,
@required this.aspectRatioImage,
this.isLargeScreen = false});
final Image image;
final double aspectRatioImage;
final bool isLargeScreen;
@override
Widget build(BuildContext context) {
return isLargeScreen
? Flexible(
child: Container(
child: AspectRatio(
aspectRatio: aspectRatioImage,
child: FittedBox(
fit: BoxFit.contain,
child: image,
),
),
),
)
: image;
}
}

View file

@ -5,8 +5,7 @@ import 'package:auto_size_text/auto_size_text.dart';
class RestoreButton extends StatelessWidget {
const RestoreButton(
{@required this.onPressed,
@required this.image,
@required this.aspectRatioImage,
@required this.imageWidget,
@required this.color,
@required this.titleColor,
this.title = '',
@ -14,8 +13,7 @@ class RestoreButton extends StatelessWidget {
this.textButton = ''});
final VoidCallback onPressed;
final Image image;
final double aspectRatioImage;
final Widget imageWidget;
final Color color;
final Color titleColor;
final String title;
@ -45,7 +43,7 @@ class RestoreButton extends StatelessWidget {
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
image,
imageWidget,
Column(
children: <Widget>[
Padding(