Skip to content

Commit b676a69

Browse files
authored
Fix legacy implementations (#1027)
* Expose core legacy in enhanced package * Implement `LegacyTextStyleHtml` * Remove `BuildTree.apply` * Restore optional second param for `HtmlStyleBuilder.enqueue` * [core] v0.13.1-alpha.1 * [enhanced] v0.13.1-alpha.1
1 parent 2b48b5d commit b676a69

29 files changed

+117
-70
lines changed

packages/core/CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
## 0.13.1-alpha.1
2+
3+
- Remove `BuildTree.apply` (#1027)
4+
- Restore optional second param for `HtmlStyleBuilder.enqueue` (#1027)
5+
6+
## 0.13.0-alpha.5
7+
8+
- Expose core legacy in enhanced package (#1027)
9+
- Fix border 0 is still being rendered (#1045)
10+
111
## 0.13.0-alpha.2
212

313
- Fix inline `white-space: nowrap`. (#944)

packages/core/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ tree.apply(callback, TextAlign.justify);
267267
tree.register(BuildOp.v1(
268268
onParsed: (tree) {
269269
// can be used to change text, inline contents, etc.
270-
tree.append(...);
270+
return tree..append(...);
271271
},
272272
onRenderBlock: (tree, child) {
273273
// use this to render special widget, wrap it into something else, etc.
@@ -314,7 +314,7 @@ class _SmiliesWidgetFactory extends WidgetFactory {
314314
final smilieOp = BuildOp.v1(
315315
onParsed: (tree) {
316316
final alt = tree.element.attributes['alt'];
317-
tree.addText(kSmilies[alt] ?? alt);
317+
return tree..addText(kSmilies[alt] ?? alt ?? '');
318318
},
319319
);
320320

packages/core/lib/src/core_data.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ typedef DefaultStyles = StylesMap Function(BuildTree tree);
4242
/// ```dart
4343
/// BuildOp.v1(
4444
/// onChild: (tree, subTree) {
45-
/// if (!subTree.element.parent != tree.element) return;
45+
/// if (subTree.element.parent != tree.element) return;
4646
/// subTree.doSomething();
4747
/// },
4848
/// );

packages/core/lib/src/core_legacy.dart

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
// ignore_for_file: deprecated_member_use_from_same_package
22

3-
import 'package:flutter/gestures.dart';
43
import 'package:flutter/widgets.dart';
54

65
import 'core_data.dart';
@@ -26,6 +25,22 @@ extension LegacyWidgetFactory on WidgetFactory {
2625
@Deprecated('Use HtmlStyle instead.')
2726
typedef TextStyleHtml = HtmlStyle;
2827

28+
extension LegacyTextStyleHtml on TextStyleHtml {
29+
/// The input [TextStyle].
30+
@Deprecated('Use .textStyle instead.')
31+
TextStyle get style => textStyle;
32+
33+
/// Gets dependency by type [T].
34+
@Deprecated('Use .value instead.')
35+
T getDependency<T>() {
36+
final dep = value<T>();
37+
if (dep != null) {
38+
return dep;
39+
}
40+
throw StateError('The $T dependency could not be found');
41+
}
42+
}
43+
2944
/// A legacy HTML styling builder.
3045
@Deprecated('Use HtmlStyleBuilder instead.')
3146
typedef TextStyleBuilder<T> = HtmlStyleBuilder;

packages/core/lib/src/core_widget_factory.dart

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -609,7 +609,7 @@ class WidgetFactory extends WidgetFactoryResetter with AnchorWidgetFactory {
609609
case kTagA:
610610
if (attrs.containsKey(kAttributeAHref)) {
611611
tree
612-
..apply<BuildContext?>(TagA.defaultColor, null)
612+
..styleBuilder.enqueue<BuildContext?>(TagA.defaultColor)
613613
..register(_tagA ??= TagA(this).buildOp);
614614
}
615615

@@ -672,14 +672,16 @@ class WidgetFactory extends WidgetFactoryResetter with AnchorWidgetFactory {
672672

673673
case 'b':
674674
case 'strong':
675-
tree.apply(TextStyleOps.fontWeight, FontWeight.bold);
675+
tree.styleBuilder.enqueue(TextStyleOps.fontWeight, FontWeight.bold);
676676
break;
677677

678678
case 'big':
679-
tree.apply(TextStyleOps.fontSizeTerm, kCssFontSizeLarger);
679+
tree.styleBuilder
680+
.enqueue(TextStyleOps.fontSizeTerm, kCssFontSizeLarger);
680681
break;
681682
case 'small':
682-
tree.apply(TextStyleOps.fontSizeTerm, kCssFontSizeSmaller);
683+
tree.styleBuilder
684+
.enqueue(TextStyleOps.fontSizeTerm, kCssFontSizeSmaller);
683685
break;
684686

685687
case kTagBr:
@@ -701,14 +703,14 @@ class WidgetFactory extends WidgetFactoryResetter with AnchorWidgetFactory {
701703
case 'em':
702704
case 'i':
703705
case 'var':
704-
tree.apply(TextStyleOps.fontStyle, FontStyle.italic);
706+
tree.styleBuilder.enqueue(TextStyleOps.fontStyle, FontStyle.italic);
705707
break;
706708

707709
case kTagCode:
708710
case kTagKbd:
709711
case kTagSamp:
710712
case kTagTt:
711-
tree.apply(
713+
tree.styleBuilder.enqueue(
712714
TextStyleOps.fontFamily,
713715
const [kTagCodeFont1, kTagCodeFont2],
714716
);
@@ -985,26 +987,26 @@ class WidgetFactory extends WidgetFactoryResetter with AnchorWidgetFactory {
985987
case kCssColor:
986988
final color = tryParseColor(style.value);
987989
if (color != null) {
988-
tree.apply(TextStyleOps.color, color);
990+
tree.styleBuilder.enqueue(TextStyleOps.color, color);
989991
}
990992
break;
991993

992994
case kCssDirection:
993995
final term = style.term;
994996
if (term != null) {
995-
tree.apply(TextStyleOps.textDirection, term);
997+
tree.styleBuilder.enqueue(TextStyleOps.textDirection, term);
996998
}
997999
break;
9981000

9991001
case kCssFontFamily:
10001002
final list = TextStyleOps.fontFamilyTryParse(style.values);
1001-
tree.apply(TextStyleOps.fontFamily, list);
1003+
tree.styleBuilder.enqueue(TextStyleOps.fontFamily, list);
10021004
break;
10031005

10041006
case kCssFontSize:
10051007
final value = style.value;
10061008
if (value != null) {
1007-
tree.apply(TextStyleOps.fontSize, value);
1009+
tree.styleBuilder.enqueue(TextStyleOps.fontSize, value);
10081010
}
10091011
break;
10101012

@@ -1013,7 +1015,7 @@ class WidgetFactory extends WidgetFactoryResetter with AnchorWidgetFactory {
10131015
final fontStyle =
10141016
term != null ? TextStyleOps.fontStyleTryParse(term) : null;
10151017
if (fontStyle != null) {
1016-
tree.apply(TextStyleOps.fontStyle, fontStyle);
1018+
tree.styleBuilder.enqueue(TextStyleOps.fontStyle, fontStyle);
10171019
}
10181020
break;
10191021

@@ -1022,7 +1024,7 @@ class WidgetFactory extends WidgetFactoryResetter with AnchorWidgetFactory {
10221024
final fontWeight =
10231025
value != null ? TextStyleOps.fontWeightTryParse(value) : null;
10241026
if (fontWeight != null) {
1025-
tree.apply(TextStyleOps.fontWeight, fontWeight);
1027+
tree.styleBuilder.enqueue(TextStyleOps.fontWeight, fontWeight);
10261028
}
10271029
break;
10281030

@@ -1038,7 +1040,7 @@ class WidgetFactory extends WidgetFactoryResetter with AnchorWidgetFactory {
10381040
case kCssLineHeight:
10391041
final value = style.value;
10401042
if (value != null) {
1041-
tree.apply(
1043+
tree.styleBuilder.enqueue(
10421044
_styleBuilderLineHeight ??= TextStyleOps.lineHeight(this),
10431045
value,
10441046
);
@@ -1082,7 +1084,7 @@ class WidgetFactory extends WidgetFactoryResetter with AnchorWidgetFactory {
10821084
final whitespace =
10831085
term != null ? TextStyleOps.whitespaceTryParse(term) : null;
10841086
if (whitespace != null) {
1085-
tree.apply(TextStyleOps.whitespace, whitespace);
1087+
tree.styleBuilder.enqueue(TextStyleOps.whitespace, whitespace);
10861088
}
10871089
break;
10881090
}

packages/core/lib/src/data/build_bits.dart

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -200,13 +200,6 @@ abstract class BuildTree extends BuildBit {
200200
@Deprecated('Use .getStyle instead.')
201201
css.Declaration? operator [](String key) => getStyle(key);
202202

203-
/// {@macro flutter_widget_from_html.enqueue}
204-
void apply<T>(
205-
HtmlStyle Function(HtmlStyle style, T input) callback,
206-
T input,
207-
) =>
208-
styleBuilder.enqueue(callback, input);
209-
210203
/// Appends [bit].
211204
///
212205
/// See also: [prepend].

packages/core/lib/src/data/html_style.dart

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,6 @@ class HtmlStyle {
4040
);
4141
}
4242

43-
/// The input [TextStyle].
44-
@Deprecated('Use .textStyle instead.')
45-
TextStyle get style => textStyle;
46-
4743
/// The text direction.
4844
TextDirection get textDirection => value()!;
4945

@@ -69,10 +65,6 @@ class HtmlStyle {
6965
);
7066
}
7167

72-
/// Gets dependency by type [T].
73-
@Deprecated('Use .value instead.')
74-
T? getDependency<T>() => value<T>();
75-
7668
/// Gets value of type [T].
7769
///
7870
/// The initial set of values are populated by [WidgetFactory.getDependencies].
@@ -97,17 +89,15 @@ class HtmlStyleBuilder {
9789

9890
HtmlStyleBuilder([this.parent, this._queue]);
9991

100-
/// {@template flutter_widget_from_html.enqueue}
10192
/// Enqueues an HTML styling callback.
10293
///
10394
/// The callback will receive the current [HtmlStyle] being built.
10495
/// As a special case, declare `T=BuildContext?` to receive the [BuildContext].
105-
/// {@endtemplate}
10696
void enqueue<T>(
107-
HtmlStyle Function(HtmlStyle style, T input) callback,
108-
T input,
109-
) {
110-
final item = _HtmlStyleCallback(callback, input);
97+
HtmlStyle Function(HtmlStyle style, T input) callback, [
98+
T? input,
99+
]) {
100+
final item = _HtmlStyleCallback(callback, input as T);
111101
final queue = _queue ??= [];
112102
queue.add(item);
113103
}

packages/core/lib/src/internal/ops/style_background.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class StyleBackground {
2727
return;
2828
}
2929

30-
tree.apply(_color, color);
30+
tree.styleBuilder.enqueue(_color, color);
3131
},
3232
priority: BoxModel.background,
3333
);

packages/core/lib/src/internal/ops/style_text_align.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ extension StyleTextAlign on WidgetFactory {
2929
static BuildTree _onParsed(BuildTree tree) {
3030
final textAlign = tree.textAlignData.textAlign;
3131
if (textAlign != null) {
32-
tree.apply(_textAlign, textAlign);
32+
tree.styleBuilder.enqueue(_textAlign, textAlign);
3333
}
3434
return tree;
3535
}

packages/core/lib/src/internal/ops/style_text_decoration.dart

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ void textDecorationApply(BuildTree tree, css.Declaration style) {
1717
style.property == kCssTextDecorationLine) {
1818
final line = TextDecorationLine.tryParse(value);
1919
if (line != null) {
20-
tree.apply(textDecorationLine, line);
20+
tree.styleBuilder.enqueue(textDecorationLine, line);
2121
continue;
2222
}
2323
}
@@ -26,7 +26,7 @@ void textDecorationApply(BuildTree tree, css.Declaration style) {
2626
style.property == kCssTextDecorationStyle) {
2727
final tds = tryParseTextDecorationStyle(value);
2828
if (tds != null) {
29-
tree.apply(textDecorationStyle, tds);
29+
tree.styleBuilder.enqueue(textDecorationStyle, tds);
3030
continue;
3131
}
3232
}
@@ -35,7 +35,7 @@ void textDecorationApply(BuildTree tree, css.Declaration style) {
3535
style.property == kCssTextDecorationColor) {
3636
final color = tryParseColor(value);
3737
if (color != null) {
38-
tree.apply(textDecorationColor, color);
38+
tree.styleBuilder.enqueue(textDecorationColor, color);
3939
continue;
4040
}
4141
}
@@ -45,7 +45,8 @@ void textDecorationApply(BuildTree tree, css.Declaration style) {
4545
style.property == kCssTextDecorationWidth) {
4646
final length = tryParseCssLength(value);
4747
if (length != null && length.unit == CssLengthUnit.percentage) {
48-
tree.apply(textDecorationThickness, length.number / 100.0);
48+
tree.styleBuilder
49+
.enqueue(textDecorationThickness, length.number / 100.0);
4950
continue;
5051
}
5152
}

0 commit comments

Comments
 (0)