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(