Line data Source code
1 : import 'package:flutter/material.dart';
2 : import 'package:pal/src/database/entity/helper/helper_entity.dart';
3 : import 'package:pal/src/database/entity/helper/helper_type.dart';
4 : import 'package:pal/src/ui/client/helpers/simple_helper/simple_helper.dart';
5 : import 'package:pal/src/ui/client/helpers/user_fullscreen_helper/user_fullscreen_helper.dart';
6 : import 'package:pal/src/ui/client/helpers/user_update_helper/user_update_helper.dart';
7 : import 'package:pal/src/ui/shared/helper_shared_factory.dart';
8 :
9 : import 'helpers/simple_helper/widget/simple_helper_layout.dart';
10 :
11 : class HelperFactory {
12 0 : static Widget build(final HelperEntity helper,
13 : {final Function(bool positiveFeedBack) onTrigger}) {
14 0 : switch (helper.type) {
15 0 : case HelperType.HELPER_FULL_SCREEN:
16 0 : return _createHelperFullScreen(helper, onTrigger);
17 0 : case HelperType.SIMPLE_HELPER:
18 0 : return _createSimpleHelper(helper, onTrigger);
19 0 : case HelperType.UPDATE_HELPER:
20 0 : return _createUpdateHelper(helper, onTrigger);
21 0 : case HelperType.ANCHORED_OVERLAYED_HELPER:
22 : break;
23 : }
24 : return null;
25 : }
26 :
27 0 : static Widget _createHelperFullScreen(
28 : final HelperEntity helper,
29 : final Function onTrigger,
30 : ) {
31 0 : return UserFullScreenHelperPage(
32 0 : titleLabel: HelperSharedFactory.parseTextLabel(
33 : FullscreenHelperKeys.TITLE_KEY,
34 0 : helper.helperTexts,
35 : ),
36 0 : headerImageViewModel: HelperSharedFactory.parseImageUrl(
37 : FullscreenHelperKeys.IMAGE_KEY,
38 0 : helper.helperImages,
39 : ),
40 0 : helperBoxViewModel: HelperSharedFactory.parseBoxBackground(
41 : FullscreenHelperKeys.BACKGROUND_KEY,
42 0 : helper.helperBoxes,
43 : ),
44 0 : positivLabel: HelperSharedFactory.parseTextLabel(
45 : FullscreenHelperKeys.POSITIV_KEY,
46 0 : helper.helperTexts,
47 : ),
48 0 : negativLabel: HelperSharedFactory.parseTextLabel(
49 : FullscreenHelperKeys.NEGATIV_KEY,
50 0 : helper.helperTexts,
51 : ),
52 0 : onPositivButtonTap: () => onTrigger(true),
53 0 : onNegativButtonTap: () => onTrigger(false),
54 : );
55 : }
56 :
57 : // static CustomLabel _parseTextLabel(
58 : // final String key,
59 : // final List<HelperTextEntity> helperTexts,
60 : // ) {
61 : // for (HelperTextEntity helperText in helperTexts) {
62 : // if (key == helperText?.key) {
63 : // return CustomLabel(
64 : // text: helperText?.value,
65 : // fontColor: HexColor.fromHex(helperText?.fontColor),
66 : // fontSize: helperText?.fontSize?.toDouble(),
67 : // fontFamily: helperText?.fontFamily,
68 : // fontWeight: FontWeightMapper.toFontWeight(helperText?.fontWeight),
69 : // );
70 : // }
71 : // }
72 : // return null;
73 : // }
74 :
75 : // static String _parseImageUrl(
76 : // final String key,
77 : // final List<HelperImageEntity> helperImages,
78 : // ) {
79 : // for (HelperImageEntity helperImage in helperImages) {
80 : // if (key == helperImage?.key) {
81 : // return helperImage?.url;
82 : // }
83 : // }
84 : // return null;
85 : // }
86 :
87 : // static Color _parseBoxBackground(
88 : // final String key,
89 : // final List<HelperBoxEntity> helperBoxes,
90 : // ) {
91 : // for (HelperBoxEntity helperBox in helperBoxes) {
92 : // if (key == helperBox?.key) {
93 : // return HexColor.fromHex(helperBox?.backgroundColor);
94 : // }
95 : // }
96 : // return null;
97 : // }
98 :
99 : // static Color _parseBorder(
100 : // final String key,
101 : // final List<HelperBorderEntity> helperBorders,
102 : // ) {
103 : // for (HelperBorderEntity helperBorder in helperBorders) {
104 : // if (key == helperBorder?.key) {
105 : // return HexColor.fromHex(helperBorder?.color);
106 : // }
107 : // }
108 : // return null;
109 : // }
110 :
111 0 : static Widget _createSimpleHelper(
112 : final HelperEntity helper,
113 : final Function onTrigger,
114 : ) {
115 0 : GlobalKey<SimpleHelperLayoutState> _simpleHelperLayoutKey = GlobalKey();
116 0 : return SimpleHelperLayout(
117 : key: _simpleHelperLayoutKey,
118 0 : toaster: SimpleHelperPage(
119 0 : descriptionLabel: HelperSharedFactory.parseTextLabel(
120 : SimpleHelperKeys.CONTENT_KEY,
121 0 : helper.helperTexts,
122 : ),
123 0 : helperBoxViewModel: HelperSharedFactory.parseBoxBackground(
124 : SimpleHelperKeys.BACKGROUND_KEY,
125 0 : helper.helperBoxes,
126 : ),
127 : ),
128 0 : onDismissed: (res) async {
129 0 : await _simpleHelperLayoutKey.currentState.reverseAnimations();
130 0 : onTrigger(res == DismissDirection.startToEnd);
131 : },
132 : );
133 : }
134 :
135 0 : static Widget _createUpdateHelper(
136 : final HelperEntity helper, final Function onTrigger) {
137 0 : return UserUpdateHelperPage(
138 0 : onPositivButtonTap: () {
139 0 : onTrigger(true);
140 : },
141 0 : helperBoxViewModel: HelperSharedFactory.parseBoxBackground(
142 : UpdatescreenHelperKeys.BACKGROUND_KEY,
143 0 : helper.helperBoxes,
144 : ),
145 0 : thanksButtonLabel: HelperSharedFactory.parseTextLabel(
146 : UpdatescreenHelperKeys.POSITIV_KEY,
147 0 : helper.helperTexts,
148 : ),
149 0 : titleLabel: HelperSharedFactory.parseTextLabel(
150 : UpdatescreenHelperKeys.TITLE_KEY,
151 0 : helper.helperTexts,
152 : ),
153 0 : changelogLabels: HelperSharedFactory.parseTextsLabel(
154 : UpdatescreenHelperKeys.LINES_KEY,
155 0 : helper.helperTexts,
156 : ),
157 0 : helperImageViewModel: HelperSharedFactory.parseImageUrl(
158 : UpdatescreenHelperKeys.IMAGE_KEY,
159 0 : helper.helperImages,
160 : ),
161 : );
162 : }
163 : }
|