Showing
3 changed files
with
267 additions
and
249 deletions
@@ -43,6 +43,7 @@ part 'widgets/progress.dart'; | @@ -43,6 +43,7 @@ part 'widgets/progress.dart'; | ||
43 | part 'widgets/stack.dart'; | 43 | part 'widgets/stack.dart'; |
44 | part 'widgets/table.dart'; | 44 | part 'widgets/table.dart'; |
45 | part 'widgets/text.dart'; | 45 | part 'widgets/text.dart'; |
46 | +part 'widgets/text_style.dart'; | ||
46 | part 'widgets/theme.dart'; | 47 | part 'widgets/theme.dart'; |
47 | part 'widgets/widget.dart'; | 48 | part 'widgets/widget.dart'; |
48 | part 'widgets/wrap.dart'; | 49 | part 'widgets/wrap.dart'; |
pdf/lib/widgets/text_style.dart
0 → 100644
1 | +/* | ||
2 | + * Copyright (C) 2017, David PHAM-VAN <dev.nfet.net@gmail.com> | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +part of widget; | ||
18 | + | ||
19 | +enum FontWeight { normal, bold } | ||
20 | + | ||
21 | +enum FontStyle { normal, italic } | ||
22 | + | ||
23 | +@immutable | ||
24 | +class TextStyle { | ||
25 | + const TextStyle({ | ||
26 | + this.inherit = true, | ||
27 | + this.color, | ||
28 | + Font font, | ||
29 | + Font fontNormal, | ||
30 | + Font fontBold, | ||
31 | + Font fontItalic, | ||
32 | + Font fontBoldItalic, | ||
33 | + this.fontSize, | ||
34 | + this.fontWeight, | ||
35 | + this.fontStyle, | ||
36 | + this.letterSpacing, | ||
37 | + this.wordSpacing, | ||
38 | + this.lineSpacing, | ||
39 | + this.height, | ||
40 | + this.background, | ||
41 | + }) : assert(inherit || color != null), | ||
42 | + assert(inherit || font != null), | ||
43 | + assert(inherit || fontSize != null), | ||
44 | + assert(inherit || fontWeight != null), | ||
45 | + assert(inherit || fontStyle != null), | ||
46 | + assert(inherit || letterSpacing != null), | ||
47 | + assert(inherit || wordSpacing != null), | ||
48 | + assert(inherit || lineSpacing != null), | ||
49 | + assert(inherit || height != null), | ||
50 | + fontNormal = fontNormal ?? | ||
51 | + (fontStyle != FontStyle.italic && fontWeight != FontWeight.bold | ||
52 | + ? font | ||
53 | + : null), | ||
54 | + fontBold = fontBold ?? | ||
55 | + (fontStyle != FontStyle.italic && fontWeight == FontWeight.bold | ||
56 | + ? font | ||
57 | + : null), | ||
58 | + fontItalic = fontItalic ?? | ||
59 | + (fontStyle == FontStyle.italic && fontWeight != FontWeight.bold | ||
60 | + ? font | ||
61 | + : null), | ||
62 | + fontBoldItalic = fontBoldItalic ?? | ||
63 | + (fontStyle == FontStyle.italic && fontWeight == FontWeight.bold | ||
64 | + ? font | ||
65 | + : null); | ||
66 | + | ||
67 | + factory TextStyle.defaultStyle() { | ||
68 | + return TextStyle( | ||
69 | + color: PdfColors.black, | ||
70 | + fontNormal: Font.helvetica(), | ||
71 | + fontBold: Font.helveticaBold(), | ||
72 | + fontItalic: Font.helveticaOblique(), | ||
73 | + fontBoldItalic: Font.helveticaBoldOblique(), | ||
74 | + fontSize: _defaultFontSize, | ||
75 | + fontWeight: FontWeight.normal, | ||
76 | + fontStyle: FontStyle.normal, | ||
77 | + letterSpacing: 1.0, | ||
78 | + wordSpacing: 1.0, | ||
79 | + lineSpacing: 0.0, | ||
80 | + height: 1.0, | ||
81 | + ); | ||
82 | + } | ||
83 | + | ||
84 | + final bool inherit; | ||
85 | + | ||
86 | + final PdfColor color; | ||
87 | + | ||
88 | + final Font fontNormal; | ||
89 | + | ||
90 | + final Font fontBold; | ||
91 | + | ||
92 | + final Font fontItalic; | ||
93 | + | ||
94 | + final Font fontBoldItalic; | ||
95 | + | ||
96 | + // font height, in pdf unit | ||
97 | + final double fontSize; | ||
98 | + | ||
99 | + /// The typeface thickness to use when painting the text (e.g., bold). | ||
100 | + final FontWeight fontWeight; | ||
101 | + | ||
102 | + /// The typeface variant to use when drawing the letters (e.g., italics). | ||
103 | + final FontStyle fontStyle; | ||
104 | + | ||
105 | + static const double _defaultFontSize = 12.0 * PdfPageFormat.point; | ||
106 | + | ||
107 | + // spacing between letters, 1.0 being natural spacing | ||
108 | + final double letterSpacing; | ||
109 | + | ||
110 | + // spacing between lines, in pdf unit | ||
111 | + final double lineSpacing; | ||
112 | + | ||
113 | + // spacing between words, 1.0 being natural spacing | ||
114 | + final double wordSpacing; | ||
115 | + | ||
116 | + final double height; | ||
117 | + | ||
118 | + final PdfColor background; | ||
119 | + | ||
120 | + TextStyle copyWith({ | ||
121 | + PdfColor color, | ||
122 | + Font font, | ||
123 | + Font fontNormal, | ||
124 | + Font fontBold, | ||
125 | + Font fontItalic, | ||
126 | + Font fontBoldItalic, | ||
127 | + double fontSize, | ||
128 | + FontWeight fontWeight, | ||
129 | + FontStyle fontStyle, | ||
130 | + double letterSpacing, | ||
131 | + double wordSpacing, | ||
132 | + double lineSpacing, | ||
133 | + double height, | ||
134 | + PdfColor background, | ||
135 | + }) { | ||
136 | + return TextStyle( | ||
137 | + inherit: inherit, | ||
138 | + color: color ?? this.color, | ||
139 | + font: font ?? this.font, | ||
140 | + fontNormal: fontNormal ?? this.fontNormal, | ||
141 | + fontBold: fontBold ?? this.fontBold, | ||
142 | + fontItalic: fontItalic ?? this.fontItalic, | ||
143 | + fontBoldItalic: fontBoldItalic ?? this.fontBoldItalic, | ||
144 | + fontSize: fontSize ?? this.fontSize, | ||
145 | + fontWeight: fontWeight ?? this.fontWeight, | ||
146 | + fontStyle: fontStyle ?? this.fontStyle, | ||
147 | + letterSpacing: letterSpacing ?? this.letterSpacing, | ||
148 | + wordSpacing: wordSpacing ?? this.wordSpacing, | ||
149 | + lineSpacing: lineSpacing ?? this.lineSpacing, | ||
150 | + height: height ?? this.height, | ||
151 | + background: background ?? this.background, | ||
152 | + ); | ||
153 | + } | ||
154 | + | ||
155 | + /// Creates a copy of this text style replacing or altering the specified | ||
156 | + /// properties. | ||
157 | + TextStyle apply({ | ||
158 | + PdfColor color, | ||
159 | + Font font, | ||
160 | + Font fontNormal, | ||
161 | + Font fontBold, | ||
162 | + Font fontItalic, | ||
163 | + Font fontBoldItalic, | ||
164 | + double fontSizeFactor = 1.0, | ||
165 | + double fontSizeDelta = 0.0, | ||
166 | + double letterSpacingFactor = 1.0, | ||
167 | + double letterSpacingDelta = 0.0, | ||
168 | + double wordSpacingFactor = 1.0, | ||
169 | + double wordSpacingDelta = 0.0, | ||
170 | + double heightFactor = 1.0, | ||
171 | + double heightDelta = 0.0, | ||
172 | + }) { | ||
173 | + assert(fontSizeFactor != null); | ||
174 | + assert(fontSizeDelta != null); | ||
175 | + assert(fontSize != null || (fontSizeFactor == 1.0 && fontSizeDelta == 0.0)); | ||
176 | + assert(letterSpacingFactor != null); | ||
177 | + assert(letterSpacingDelta != null); | ||
178 | + assert(letterSpacing != null || | ||
179 | + (letterSpacingFactor == 1.0 && letterSpacingDelta == 0.0)); | ||
180 | + assert(wordSpacingFactor != null); | ||
181 | + assert(wordSpacingDelta != null); | ||
182 | + assert(wordSpacing != null || | ||
183 | + (wordSpacingFactor == 1.0 && wordSpacingDelta == 0.0)); | ||
184 | + assert(heightFactor != null); | ||
185 | + assert(heightDelta != null); | ||
186 | + assert(heightFactor != null || (heightFactor == 1.0 && heightDelta == 0.0)); | ||
187 | + | ||
188 | + return TextStyle( | ||
189 | + inherit: inherit, | ||
190 | + color: color ?? this.color, | ||
191 | + font: font ?? this.font, | ||
192 | + fontNormal: fontNormal ?? this.fontNormal, | ||
193 | + fontBold: fontBold ?? this.fontBold, | ||
194 | + fontItalic: fontItalic ?? this.fontItalic, | ||
195 | + fontBoldItalic: fontBoldItalic ?? this.fontBoldItalic, | ||
196 | + fontSize: | ||
197 | + fontSize == null ? null : fontSize * fontSizeFactor + fontSizeDelta, | ||
198 | + fontWeight: fontWeight, | ||
199 | + fontStyle: fontStyle, | ||
200 | + letterSpacing: letterSpacing == null | ||
201 | + ? null | ||
202 | + : letterSpacing * letterSpacingFactor + letterSpacingDelta, | ||
203 | + wordSpacing: wordSpacing == null | ||
204 | + ? null | ||
205 | + : wordSpacing * wordSpacingFactor + wordSpacingDelta, | ||
206 | + height: height == null ? null : height * heightFactor + heightDelta, | ||
207 | + background: background, | ||
208 | + ); | ||
209 | + } | ||
210 | + | ||
211 | + /// Returns a new text style that is a combination of this style and the given | ||
212 | + /// [other] style. | ||
213 | + TextStyle merge(TextStyle other) { | ||
214 | + if (other == null) { | ||
215 | + return this; | ||
216 | + } | ||
217 | + | ||
218 | + if (!other.inherit) { | ||
219 | + return other; | ||
220 | + } | ||
221 | + | ||
222 | + return copyWith( | ||
223 | + color: other.color, | ||
224 | + font: other.font, | ||
225 | + fontNormal: other.fontNormal, | ||
226 | + fontBold: other.fontBold, | ||
227 | + fontItalic: other.fontItalic, | ||
228 | + fontBoldItalic: other.fontBoldItalic, | ||
229 | + fontSize: other.fontSize, | ||
230 | + fontWeight: other.fontWeight, | ||
231 | + fontStyle: other.fontStyle, | ||
232 | + letterSpacing: other.letterSpacing, | ||
233 | + wordSpacing: other.wordSpacing, | ||
234 | + lineSpacing: other.lineSpacing, | ||
235 | + height: other.height, | ||
236 | + background: other.background, | ||
237 | + ); | ||
238 | + } | ||
239 | + | ||
240 | + @Deprecated('use font instead') | ||
241 | + Font get paintFont => font; | ||
242 | + | ||
243 | + Font get font { | ||
244 | + if (fontWeight != FontWeight.bold) { | ||
245 | + if (fontStyle != FontStyle.italic) { | ||
246 | + // normal | ||
247 | + return fontNormal ?? fontBold ?? fontItalic ?? fontBoldItalic; | ||
248 | + } else { | ||
249 | + // italic | ||
250 | + return fontItalic ?? fontNormal ?? fontBold ?? fontBoldItalic; | ||
251 | + } | ||
252 | + } else { | ||
253 | + if (fontStyle != FontStyle.italic) { | ||
254 | + // bold | ||
255 | + return fontBold ?? fontNormal ?? fontItalic ?? fontBoldItalic; | ||
256 | + } else { | ||
257 | + // bold + italic | ||
258 | + return fontBoldItalic ?? fontBold ?? fontItalic ?? fontNormal; | ||
259 | + } | ||
260 | + } | ||
261 | + } | ||
262 | + | ||
263 | + @override | ||
264 | + String toString() => | ||
265 | + 'TextStyle(color:$color font:$font size:$fontSize weight:$fontWeight style:$fontStyle letterSpacing:$letterSpacing wordSpacing:$wordSpacing lineSpacing:$lineSpacing height:$height background:$background)'; | ||
266 | +} |
@@ -16,255 +16,6 @@ | @@ -16,255 +16,6 @@ | ||
16 | 16 | ||
17 | part of widget; | 17 | part of widget; |
18 | 18 | ||
19 | -enum FontWeight { normal, bold } | ||
20 | - | ||
21 | -enum FontStyle { normal, italic } | ||
22 | - | ||
23 | -@immutable | ||
24 | -class TextStyle { | ||
25 | - const TextStyle({ | ||
26 | - this.inherit = true, | ||
27 | - this.color, | ||
28 | - Font font, | ||
29 | - Font fontNormal, | ||
30 | - Font fontBold, | ||
31 | - Font fontItalic, | ||
32 | - Font fontBoldItalic, | ||
33 | - this.fontSize, | ||
34 | - this.fontWeight, | ||
35 | - this.fontStyle, | ||
36 | - this.letterSpacing, | ||
37 | - this.wordSpacing, | ||
38 | - this.lineSpacing, | ||
39 | - this.height, | ||
40 | - this.background, | ||
41 | - }) : assert(inherit || color != null), | ||
42 | - assert(inherit || font != null), | ||
43 | - assert(inherit || fontSize != null), | ||
44 | - assert(inherit || fontWeight != null), | ||
45 | - assert(inherit || fontStyle != null), | ||
46 | - assert(inherit || letterSpacing != null), | ||
47 | - assert(inherit || wordSpacing != null), | ||
48 | - assert(inherit || lineSpacing != null), | ||
49 | - assert(inherit || height != null), | ||
50 | - fontNormal = fontNormal ?? | ||
51 | - (fontStyle != FontStyle.italic && fontWeight != FontWeight.bold | ||
52 | - ? font | ||
53 | - : null), | ||
54 | - fontBold = fontBold ?? | ||
55 | - (fontStyle != FontStyle.italic && fontWeight == FontWeight.bold | ||
56 | - ? font | ||
57 | - : null), | ||
58 | - fontItalic = fontItalic ?? | ||
59 | - (fontStyle == FontStyle.italic && fontWeight != FontWeight.bold | ||
60 | - ? font | ||
61 | - : null), | ||
62 | - fontBoldItalic = fontBoldItalic ?? | ||
63 | - (fontStyle == FontStyle.italic && fontWeight == FontWeight.bold | ||
64 | - ? font | ||
65 | - : null); | ||
66 | - | ||
67 | - factory TextStyle.defaultStyle() { | ||
68 | - return TextStyle( | ||
69 | - color: PdfColors.black, | ||
70 | - fontNormal: Font.helvetica(), | ||
71 | - fontBold: Font.helveticaBold(), | ||
72 | - fontItalic: Font.helveticaOblique(), | ||
73 | - fontBoldItalic: Font.helveticaBoldOblique(), | ||
74 | - fontSize: _defaultFontSize, | ||
75 | - fontWeight: FontWeight.normal, | ||
76 | - fontStyle: FontStyle.normal, | ||
77 | - letterSpacing: 1.0, | ||
78 | - wordSpacing: 1.0, | ||
79 | - lineSpacing: 0.0, | ||
80 | - height: 1.0, | ||
81 | - ); | ||
82 | - } | ||
83 | - | ||
84 | - final bool inherit; | ||
85 | - | ||
86 | - final PdfColor color; | ||
87 | - | ||
88 | - final Font fontNormal; | ||
89 | - | ||
90 | - final Font fontBold; | ||
91 | - | ||
92 | - final Font fontItalic; | ||
93 | - | ||
94 | - final Font fontBoldItalic; | ||
95 | - | ||
96 | - // font height, in pdf unit | ||
97 | - final double fontSize; | ||
98 | - | ||
99 | - /// The typeface thickness to use when painting the text (e.g., bold). | ||
100 | - final FontWeight fontWeight; | ||
101 | - | ||
102 | - /// The typeface variant to use when drawing the letters (e.g., italics). | ||
103 | - final FontStyle fontStyle; | ||
104 | - | ||
105 | - static const double _defaultFontSize = 12.0 * PdfPageFormat.point; | ||
106 | - | ||
107 | - // spacing between letters, 1.0 being natural spacing | ||
108 | - final double letterSpacing; | ||
109 | - | ||
110 | - // spacing between lines, in pdf unit | ||
111 | - final double lineSpacing; | ||
112 | - | ||
113 | - // spacing between words, 1.0 being natural spacing | ||
114 | - final double wordSpacing; | ||
115 | - | ||
116 | - final double height; | ||
117 | - | ||
118 | - final PdfColor background; | ||
119 | - | ||
120 | - TextStyle copyWith({ | ||
121 | - PdfColor color, | ||
122 | - Font font, | ||
123 | - Font fontNormal, | ||
124 | - Font fontBold, | ||
125 | - Font fontItalic, | ||
126 | - Font fontBoldItalic, | ||
127 | - double fontSize, | ||
128 | - FontWeight fontWeight, | ||
129 | - FontStyle fontStyle, | ||
130 | - double letterSpacing, | ||
131 | - double wordSpacing, | ||
132 | - double lineSpacing, | ||
133 | - double height, | ||
134 | - PdfColor background, | ||
135 | - }) { | ||
136 | - return TextStyle( | ||
137 | - inherit: inherit, | ||
138 | - color: color ?? this.color, | ||
139 | - font: font ?? this.font, | ||
140 | - fontNormal: fontNormal ?? this.fontNormal, | ||
141 | - fontBold: fontBold ?? this.fontBold, | ||
142 | - fontItalic: fontItalic ?? this.fontItalic, | ||
143 | - fontBoldItalic: fontBoldItalic ?? this.fontBoldItalic, | ||
144 | - fontSize: fontSize ?? this.fontSize, | ||
145 | - fontWeight: fontWeight ?? this.fontWeight, | ||
146 | - fontStyle: fontStyle ?? this.fontStyle, | ||
147 | - letterSpacing: letterSpacing ?? this.letterSpacing, | ||
148 | - wordSpacing: wordSpacing ?? this.wordSpacing, | ||
149 | - lineSpacing: lineSpacing ?? this.lineSpacing, | ||
150 | - height: height ?? this.height, | ||
151 | - background: background ?? this.background, | ||
152 | - ); | ||
153 | - } | ||
154 | - | ||
155 | - /// Creates a copy of this text style replacing or altering the specified | ||
156 | - /// properties. | ||
157 | - TextStyle apply({ | ||
158 | - PdfColor color, | ||
159 | - Font font, | ||
160 | - Font fontNormal, | ||
161 | - Font fontBold, | ||
162 | - Font fontItalic, | ||
163 | - Font fontBoldItalic, | ||
164 | - double fontSizeFactor = 1.0, | ||
165 | - double fontSizeDelta = 0.0, | ||
166 | - double letterSpacingFactor = 1.0, | ||
167 | - double letterSpacingDelta = 0.0, | ||
168 | - double wordSpacingFactor = 1.0, | ||
169 | - double wordSpacingDelta = 0.0, | ||
170 | - double heightFactor = 1.0, | ||
171 | - double heightDelta = 0.0, | ||
172 | - }) { | ||
173 | - assert(fontSizeFactor != null); | ||
174 | - assert(fontSizeDelta != null); | ||
175 | - assert(fontSize != null || (fontSizeFactor == 1.0 && fontSizeDelta == 0.0)); | ||
176 | - assert(letterSpacingFactor != null); | ||
177 | - assert(letterSpacingDelta != null); | ||
178 | - assert(letterSpacing != null || | ||
179 | - (letterSpacingFactor == 1.0 && letterSpacingDelta == 0.0)); | ||
180 | - assert(wordSpacingFactor != null); | ||
181 | - assert(wordSpacingDelta != null); | ||
182 | - assert(wordSpacing != null || | ||
183 | - (wordSpacingFactor == 1.0 && wordSpacingDelta == 0.0)); | ||
184 | - assert(heightFactor != null); | ||
185 | - assert(heightDelta != null); | ||
186 | - assert(heightFactor != null || (heightFactor == 1.0 && heightDelta == 0.0)); | ||
187 | - | ||
188 | - return TextStyle( | ||
189 | - inherit: inherit, | ||
190 | - color: color ?? this.color, | ||
191 | - font: font ?? this.font, | ||
192 | - fontNormal: fontNormal ?? this.fontNormal, | ||
193 | - fontBold: fontBold ?? this.fontBold, | ||
194 | - fontItalic: fontItalic ?? this.fontItalic, | ||
195 | - fontBoldItalic: fontBoldItalic ?? this.fontBoldItalic, | ||
196 | - fontSize: | ||
197 | - fontSize == null ? null : fontSize * fontSizeFactor + fontSizeDelta, | ||
198 | - fontWeight: fontWeight, | ||
199 | - fontStyle: fontStyle, | ||
200 | - letterSpacing: letterSpacing == null | ||
201 | - ? null | ||
202 | - : letterSpacing * letterSpacingFactor + letterSpacingDelta, | ||
203 | - wordSpacing: wordSpacing == null | ||
204 | - ? null | ||
205 | - : wordSpacing * wordSpacingFactor + wordSpacingDelta, | ||
206 | - height: height == null ? null : height * heightFactor + heightDelta, | ||
207 | - background: background, | ||
208 | - ); | ||
209 | - } | ||
210 | - | ||
211 | - /// Returns a new text style that is a combination of this style and the given | ||
212 | - /// [other] style. | ||
213 | - TextStyle merge(TextStyle other) { | ||
214 | - if (other == null) { | ||
215 | - return this; | ||
216 | - } | ||
217 | - | ||
218 | - if (!other.inherit) { | ||
219 | - return other; | ||
220 | - } | ||
221 | - | ||
222 | - return copyWith( | ||
223 | - color: other.color, | ||
224 | - font: other.font, | ||
225 | - fontNormal: other.fontNormal, | ||
226 | - fontBold: other.fontBold, | ||
227 | - fontItalic: other.fontItalic, | ||
228 | - fontBoldItalic: other.fontBoldItalic, | ||
229 | - fontSize: other.fontSize, | ||
230 | - fontWeight: other.fontWeight, | ||
231 | - fontStyle: other.fontStyle, | ||
232 | - letterSpacing: other.letterSpacing, | ||
233 | - wordSpacing: other.wordSpacing, | ||
234 | - lineSpacing: other.lineSpacing, | ||
235 | - height: other.height, | ||
236 | - background: other.background, | ||
237 | - ); | ||
238 | - } | ||
239 | - | ||
240 | - @Deprecated('use font instead') | ||
241 | - Font get paintFont => font; | ||
242 | - | ||
243 | - Font get font { | ||
244 | - if (fontWeight != FontWeight.bold) { | ||
245 | - if (fontStyle != FontStyle.italic) { | ||
246 | - // normal | ||
247 | - return fontNormal ?? fontBold ?? fontItalic ?? fontBoldItalic; | ||
248 | - } else { | ||
249 | - // italic | ||
250 | - return fontItalic ?? fontNormal ?? fontBold ?? fontBoldItalic; | ||
251 | - } | ||
252 | - } else { | ||
253 | - if (fontStyle != FontStyle.italic) { | ||
254 | - // bold | ||
255 | - return fontBold ?? fontNormal ?? fontItalic ?? fontBoldItalic; | ||
256 | - } else { | ||
257 | - // bold + italic | ||
258 | - return fontBoldItalic ?? fontBold ?? fontItalic ?? fontNormal; | ||
259 | - } | ||
260 | - } | ||
261 | - } | ||
262 | - | ||
263 | - @override | ||
264 | - String toString() => | ||
265 | - 'TextStyle(color:$color font:$font size:$fontSize weight:$fontWeight style:$fontStyle letterSpacing:$letterSpacing wordSpacing:$wordSpacing lineSpacing:$lineSpacing height:$height background:$background)'; | ||
266 | -} | ||
267 | - | ||
268 | @immutable | 19 | @immutable |
269 | class Theme extends Inherited { | 20 | class Theme extends Inherited { |
270 | const Theme({ | 21 | const Theme({ |
-
Please register or login to post a comment