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

Oleksandr Sobol committed Mar 6, 2020 at 11:01 UTC 859afef931ddcf30829389a7d056045acf8ddda7
5 files changed +144 -78
lib/src/screens/restore/restore_options_page.dart
+35 -36
@@ -3,6 +3,8 @@ import 'package:cake_wallet/palette.dart';
3 import 'package:cake_wallet/routes.dart';
4 import 'package:flutter/cupertino.dart';
5 import 'package:cake_wallet/src/screens/restore/widgets/restore_button.dart';
6 +import 'package:cake_wallet/src/screens/restore/widgets/image_widget.dart';
7 +import 'package:cake_wallet/src/screens/restore/widgets/base_restore_widget.dart';
8 import 'package:cake_wallet/src/screens/base_page.dart';
9 import 'package:cake_wallet/generated/i18n.dart';
10
@@ -19,42 +21,39 @@ class RestoreOptionsPage extends BasePage {
21 final _imageRestoreSeed = Image.asset('assets/images/restoreSeed.png');
22
23 @override
22 - Widget body(BuildContext context) => Container(
23 - padding: EdgeInsets.only(
24 - left: 20.0,
25 - right: 20.0,
24 + Widget body(BuildContext context) {
25 + final isLargeScreen = MediaQuery.of(context).size.height > largeHeight;
26 +
27 + return BaseRestoreWidget(
28 + firstRestoreButton: RestoreButton(
29 + onPressed: () =>
30 + Navigator.pushNamed(
31 + context, Routes.restoreWalletOptionsFromWelcome),
32 + imageWidget: ImageWidget(
33 + image: _imageSeedKeys,
34 + aspectRatioImage: _aspectRatioImage,
35 + isLargeScreen: isLargeScreen,
36 ),
27 - child: SingleChildScrollView(
28 - child: Column(
29 - children: <Widget>[
30 - Container(
31 - child: RestoreButton(
32 - onPressed: () {
33 - Navigator.pushNamed(
34 - context, Routes.restoreWalletOptionsFromWelcome);
35 - },
36 - image: _imageSeedKeys,
37 - aspectRatioImage: _aspectRatioImage,
38 - titleColor: Palette.lightViolet,
39 - color: Palette.lightViolet,
40 - title: S.of(context).restore_title_from_seed_keys,
41 - description: S.of(context).restore_description_from_seed_keys,
42 - textButton: S.of(context).restore_next,
43 - ),
44 - ),
45 - Container(
46 - child: RestoreButton(
47 - onPressed: () {},
48 - image: _imageRestoreSeed,
49 - aspectRatioImage: _aspectRatioImage,
50 - titleColor: Palette.cakeGreen,
51 - color: Palette.cakeGreen,
52 - title: S.of(context).restore_title_from_backup,
53 - description: S.of(context).restore_description_from_backup,
54 - textButton: S.of(context).restore_next,
55 - ))
56 - ],
57 - ),
37 + titleColor: Palette.lightViolet,
38 + color: Palette.lightViolet,
39 + title: S.of(context).restore_title_from_seed_keys,
40 + description: S.of(context).restore_description_from_seed_keys,
41 + textButton: S.of(context).restore_next,
42 + ),
43 + secondRestoreButton: RestoreButton(
44 + onPressed: () {},
45 + imageWidget: ImageWidget(
46 + image: _imageRestoreSeed,
47 + aspectRatioImage: _aspectRatioImage,
48 + isLargeScreen: isLargeScreen,
49 ),
59 - );
50 + titleColor: Palette.cakeGreen,
51 + color: Palette.cakeGreen,
52 + title: S.of(context).restore_title_from_backup,
53 + description: S.of(context).restore_description_from_backup,
54 + textButton: S.of(context).restore_next,
55 + ),
56 + isLargeScreen: isLargeScreen,
57 + );
58 + }
59 }
lib/src/screens/restore/restore_wallet_options_page.dart
+33 -37
@@ -3,6 +3,8 @@ import 'package:flutter/cupertino.dart';
3 import 'package:cake_wallet/routes.dart';
4 import 'package:cake_wallet/palette.dart';
5 import 'package:cake_wallet/src/screens/restore/widgets/restore_button.dart';
6 +import 'package:cake_wallet/src/screens/restore/widgets/image_widget.dart';
7 +import 'package:cake_wallet/src/screens/restore/widgets/base_restore_widget.dart';
8 import 'package:cake_wallet/src/screens/base_page.dart';
9 import 'package:cake_wallet/generated/i18n.dart';
10 import 'package:cake_wallet/src/stores/seed_language/seed_language_store.dart';
@@ -23,46 +25,40 @@ class RestoreWalletOptionsPage extends BasePage {
25 @override
26 Widget body(BuildContext context) {
27 final seedLanguageStore = Provider.of<SeedLanguageStore>(context);
28 + final isLargeScreen = MediaQuery.of(context).size.height > largeHeight;
29
27 - return Container(
28 - padding: EdgeInsets.only(
29 - left: 20.0,
30 - right: 20.0,
30 + return BaseRestoreWidget(
31 + firstRestoreButton: RestoreButton(
32 + onPressed: () {
33 + seedLanguageStore.setCurrentRoute(Routes.restoreWalletFromSeed);
34 + Navigator.pushNamed(context, Routes.seedLanguage);
35 + },
36 + imageWidget: ImageWidget(
37 + image: _imageSeed,
38 + aspectRatioImage: _aspectRatioImage,
39 + isLargeScreen: isLargeScreen),
40 + titleColor: Palette.lightViolet,
41 + color: Palette.lightViolet,
42 + title: S.of(context).restore_title_from_seed,
43 + description: S.of(context).restore_description_from_seed,
44 + textButton: S.of(context).restore_next,
45 ),
32 - child: SingleChildScrollView(
33 - child: Column(
34 - children: <Widget>[
35 - Container(
36 - child: RestoreButton(
37 - onPressed: () {
38 - seedLanguageStore.setCurrentRoute(Routes.restoreWalletFromSeed);
39 - Navigator.pushNamed(context, Routes.seedLanguage);
40 - },
41 - image: _imageSeed,
42 - aspectRatioImage: _aspectRatioImage,
43 - titleColor: Palette.lightViolet,
44 - color: Palette.lightViolet,
45 - title: S.of(context).restore_title_from_seed,
46 - description: S.of(context).restore_description_from_seed,
47 - textButton: S.of(context).restore_next,
48 - )),
49 - Container(
50 - child: RestoreButton(
51 - onPressed: () {
52 - seedLanguageStore.setCurrentRoute(Routes.restoreWalletFromKeys);
53 - Navigator.pushNamed(context, Routes.seedLanguage);
54 - },
55 - image: _imageKeys,
56 - aspectRatioImage: _aspectRatioImage,
57 - titleColor: Palette.cakeGreen,
58 - color: Palette.cakeGreen,
59 - title: S.of(context).restore_title_from_keys,
60 - description: S.of(context).restore_description_from_keys,
61 - textButton: S.of(context).restore_next,
62 - ))
63 - ],
64 - ),
46 + secondRestoreButton: RestoreButton(
47 + onPressed: () {
48 + seedLanguageStore.setCurrentRoute(Routes.restoreWalletFromKeys);
49 + Navigator.pushNamed(context, Routes.seedLanguage);
50 + },
51 + imageWidget: ImageWidget(
52 + image: _imageKeys,
53 + aspectRatioImage: _aspectRatioImage,
54 + isLargeScreen: isLargeScreen),
55 + titleColor: Palette.cakeGreen,
56 + color: Palette.cakeGreen,
57 + title: S.of(context).restore_title_from_keys,
58 + description: S.of(context).restore_description_from_keys,
59 + textButton: S.of(context).restore_next,
60 ),
61 + isLargeScreen: isLargeScreen,
62 );
63 }
64 }
lib/src/screens/restore/widgets/base_restore_widget.dart new
+44
@@ -0,0 +1,44 @@
1 +import 'package:flutter/material.dart';
2 +
3 +const largeHeight = 800;
4 +
5 +class BaseRestoreWidget extends StatelessWidget {
6 + BaseRestoreWidget({
7 + @required this.firstRestoreButton,
8 + @required this.secondRestoreButton,
9 + this.isLargeScreen = false
10 + });
11 +
12 + final Widget firstRestoreButton;
13 + final Widget secondRestoreButton;
14 + final bool isLargeScreen;
15 +
16 + @override
17 + Widget build(BuildContext context) {
18 + return Container(
19 + padding: EdgeInsets.only(
20 + left: 20.0,
21 + right: 20.0,
22 + ),
23 + child: isLargeScreen
24 + ? Column(
25 + children: <Widget>[
26 + Flexible(
27 + child: firstRestoreButton
28 + ),
29 + Flexible(
30 + child: secondRestoreButton
31 + )
32 + ],
33 + )
34 + : SingleChildScrollView(
35 + child: Column(
36 + children: <Widget>[
37 + firstRestoreButton,
38 + secondRestoreButton
39 + ],
40 + ),
41 + )
42 + );
43 + }
44 +}
\ No newline at end of file
lib/src/screens/restore/widgets/image_widget.dart new
+29
@@ -0,0 +1,29 @@
1 +import 'package:flutter/material.dart';
2 +
3 +class ImageWidget extends StatelessWidget {
4 + ImageWidget({
5 + @required this.image,
6 + @required this.aspectRatioImage,
7 + this.isLargeScreen = false});
8 +
9 + final Image image;
10 + final double aspectRatioImage;
11 + final bool isLargeScreen;
12 +
13 + @override
14 + Widget build(BuildContext context) {
15 + return isLargeScreen
16 + ? Flexible(
17 + child: Container(
18 + child: AspectRatio(
19 + aspectRatio: aspectRatioImage,
20 + child: FittedBox(
21 + fit: BoxFit.contain,
22 + child: image,
23 + ),
24 + ),
25 + ),
26 + )
27 + : image;
28 + }
29 +}
\ No newline at end of file
lib/src/screens/restore/widgets/restore_button.dart
+3 -5
@@ -5,8 +5,7 @@ import 'package:auto_size_text/auto_size_text.dart';
5 class RestoreButton extends StatelessWidget {
6 const RestoreButton(
7 {@required this.onPressed,
8 - @required this.image,
9 - @required this.aspectRatioImage,
8 + @required this.imageWidget,
9 @required this.color,
10 @required this.titleColor,
11 this.title = '',
@@ -14,8 +13,7 @@ class RestoreButton extends StatelessWidget {
13 this.textButton = ''});
14
15 final VoidCallback onPressed;
17 - final Image image;
18 - final double aspectRatioImage;
16 + final Widget imageWidget;
17 final Color color;
18 final Color titleColor;
19 final String title;
@@ -45,7 +43,7 @@ class RestoreButton extends StatelessWidget {
43 child: Column(
44 mainAxisAlignment: MainAxisAlignment.spaceBetween,
45 children: <Widget>[
48 - image,
46 + imageWidget,
47 Column(
48 children: <Widget>[
49 Padding(