diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 54eaa7dd9..42b86687f 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.13.1-alpha.1 + +- Remove `BuildTree.apply` (#1027) +- Restore optional second param for `HtmlStyleBuilder.enqueue` (#1027) + +## 0.13.0-alpha.5 + +- Expose core legacy in enhanced package (#1027) +- Fix border 0 is still being rendered (#1045) + ## 0.13.0-alpha.2 - Fix inline `white-space: nowrap`. (#944) diff --git a/packages/core/README.md b/packages/core/README.md index d976ba5ac..ea7db5637 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -267,7 +267,7 @@ tree.apply(callback, TextAlign.justify); tree.register(BuildOp.v1( onParsed: (tree) { // can be used to change text, inline contents, etc. - tree.append(...); + return tree..append(...); }, onRenderBlock: (tree, child) { // use this to render special widget, wrap it into something else, etc. @@ -314,7 +314,7 @@ class _SmiliesWidgetFactory extends WidgetFactory { final smilieOp = BuildOp.v1( onParsed: (tree) { final alt = tree.element.attributes['alt']; - tree.addText(kSmilies[alt] ?? alt); + return tree..addText(kSmilies[alt] ?? alt ?? ''); }, ); diff --git a/packages/core/lib/src/core_data.dart b/packages/core/lib/src/core_data.dart index 0e00c93c3..41eebc1db 100644 --- a/packages/core/lib/src/core_data.dart +++ b/packages/core/lib/src/core_data.dart @@ -42,7 +42,7 @@ typedef DefaultStyles = StylesMap Function(BuildTree tree); /// ```dart /// BuildOp.v1( /// onChild: (tree, subTree) { -/// if (!subTree.element.parent != tree.element) return; +/// if (subTree.element.parent != tree.element) return; /// subTree.doSomething(); /// }, /// ); diff --git a/packages/core/lib/src/core_legacy.dart b/packages/core/lib/src/core_legacy.dart index 70b1c89e1..ea0b39a4b 100644 --- a/packages/core/lib/src/core_legacy.dart +++ b/packages/core/lib/src/core_legacy.dart @@ -1,6 +1,5 @@ // ignore_for_file: deprecated_member_use_from_same_package -import 'package:flutter/gestures.dart'; import 'package:flutter/widgets.dart'; import 'core_data.dart'; @@ -26,6 +25,22 @@ extension LegacyWidgetFactory on WidgetFactory { @Deprecated('Use HtmlStyle instead.') typedef TextStyleHtml = HtmlStyle; +extension LegacyTextStyleHtml on TextStyleHtml { + /// The input [TextStyle]. + @Deprecated('Use .textStyle instead.') + TextStyle get style => textStyle; + + /// Gets dependency by type [T]. + @Deprecated('Use .value instead.') + T getDependency() { + final dep = value(); + if (dep != null) { + return dep; + } + throw StateError('The $T dependency could not be found'); + } +} + /// A legacy HTML styling builder. @Deprecated('Use HtmlStyleBuilder instead.') typedef TextStyleBuilder = HtmlStyleBuilder; diff --git a/packages/core/lib/src/core_widget_factory.dart b/packages/core/lib/src/core_widget_factory.dart index 52748205e..d4f56c359 100644 --- a/packages/core/lib/src/core_widget_factory.dart +++ b/packages/core/lib/src/core_widget_factory.dart @@ -609,7 +609,7 @@ class WidgetFactory extends WidgetFactoryResetter with AnchorWidgetFactory { case kTagA: if (attrs.containsKey(kAttributeAHref)) { tree - ..apply(TagA.defaultColor, null) + ..styleBuilder.enqueue(TagA.defaultColor) ..register(_tagA ??= TagA(this).buildOp); } @@ -672,14 +672,16 @@ class WidgetFactory extends WidgetFactoryResetter with AnchorWidgetFactory { case 'b': case 'strong': - tree.apply(TextStyleOps.fontWeight, FontWeight.bold); + tree.styleBuilder.enqueue(TextStyleOps.fontWeight, FontWeight.bold); break; case 'big': - tree.apply(TextStyleOps.fontSizeTerm, kCssFontSizeLarger); + tree.styleBuilder + .enqueue(TextStyleOps.fontSizeTerm, kCssFontSizeLarger); break; case 'small': - tree.apply(TextStyleOps.fontSizeTerm, kCssFontSizeSmaller); + tree.styleBuilder + .enqueue(TextStyleOps.fontSizeTerm, kCssFontSizeSmaller); break; case kTagBr: @@ -701,14 +703,14 @@ class WidgetFactory extends WidgetFactoryResetter with AnchorWidgetFactory { case 'em': case 'i': case 'var': - tree.apply(TextStyleOps.fontStyle, FontStyle.italic); + tree.styleBuilder.enqueue(TextStyleOps.fontStyle, FontStyle.italic); break; case kTagCode: case kTagKbd: case kTagSamp: case kTagTt: - tree.apply( + tree.styleBuilder.enqueue( TextStyleOps.fontFamily, const [kTagCodeFont1, kTagCodeFont2], ); @@ -985,26 +987,26 @@ class WidgetFactory extends WidgetFactoryResetter with AnchorWidgetFactory { case kCssColor: final color = tryParseColor(style.value); if (color != null) { - tree.apply(TextStyleOps.color, color); + tree.styleBuilder.enqueue(TextStyleOps.color, color); } break; case kCssDirection: final term = style.term; if (term != null) { - tree.apply(TextStyleOps.textDirection, term); + tree.styleBuilder.enqueue(TextStyleOps.textDirection, term); } break; case kCssFontFamily: final list = TextStyleOps.fontFamilyTryParse(style.values); - tree.apply(TextStyleOps.fontFamily, list); + tree.styleBuilder.enqueue(TextStyleOps.fontFamily, list); break; case kCssFontSize: final value = style.value; if (value != null) { - tree.apply(TextStyleOps.fontSize, value); + tree.styleBuilder.enqueue(TextStyleOps.fontSize, value); } break; @@ -1013,7 +1015,7 @@ class WidgetFactory extends WidgetFactoryResetter with AnchorWidgetFactory { final fontStyle = term != null ? TextStyleOps.fontStyleTryParse(term) : null; if (fontStyle != null) { - tree.apply(TextStyleOps.fontStyle, fontStyle); + tree.styleBuilder.enqueue(TextStyleOps.fontStyle, fontStyle); } break; @@ -1022,7 +1024,7 @@ class WidgetFactory extends WidgetFactoryResetter with AnchorWidgetFactory { final fontWeight = value != null ? TextStyleOps.fontWeightTryParse(value) : null; if (fontWeight != null) { - tree.apply(TextStyleOps.fontWeight, fontWeight); + tree.styleBuilder.enqueue(TextStyleOps.fontWeight, fontWeight); } break; @@ -1038,7 +1040,7 @@ class WidgetFactory extends WidgetFactoryResetter with AnchorWidgetFactory { case kCssLineHeight: final value = style.value; if (value != null) { - tree.apply( + tree.styleBuilder.enqueue( _styleBuilderLineHeight ??= TextStyleOps.lineHeight(this), value, ); @@ -1082,7 +1084,7 @@ class WidgetFactory extends WidgetFactoryResetter with AnchorWidgetFactory { final whitespace = term != null ? TextStyleOps.whitespaceTryParse(term) : null; if (whitespace != null) { - tree.apply(TextStyleOps.whitespace, whitespace); + tree.styleBuilder.enqueue(TextStyleOps.whitespace, whitespace); } break; } diff --git a/packages/core/lib/src/data/build_bits.dart b/packages/core/lib/src/data/build_bits.dart index bbd536a07..807e56c13 100644 --- a/packages/core/lib/src/data/build_bits.dart +++ b/packages/core/lib/src/data/build_bits.dart @@ -200,13 +200,6 @@ abstract class BuildTree extends BuildBit { @Deprecated('Use .getStyle instead.') css.Declaration? operator [](String key) => getStyle(key); - /// {@macro flutter_widget_from_html.enqueue} - void apply( - HtmlStyle Function(HtmlStyle style, T input) callback, - T input, - ) => - styleBuilder.enqueue(callback, input); - /// Appends [bit]. /// /// See also: [prepend]. diff --git a/packages/core/lib/src/data/html_style.dart b/packages/core/lib/src/data/html_style.dart index cfd57a377..0431a7396 100644 --- a/packages/core/lib/src/data/html_style.dart +++ b/packages/core/lib/src/data/html_style.dart @@ -40,10 +40,6 @@ class HtmlStyle { ); } - /// The input [TextStyle]. - @Deprecated('Use .textStyle instead.') - TextStyle get style => textStyle; - /// The text direction. TextDirection get textDirection => value()!; @@ -69,10 +65,6 @@ class HtmlStyle { ); } - /// Gets dependency by type [T]. - @Deprecated('Use .value instead.') - T? getDependency() => value(); - /// Gets value of type [T]. /// /// The initial set of values are populated by [WidgetFactory.getDependencies]. @@ -97,17 +89,15 @@ class HtmlStyleBuilder { HtmlStyleBuilder([this.parent, this._queue]); - /// {@template flutter_widget_from_html.enqueue} /// Enqueues an HTML styling callback. /// /// The callback will receive the current [HtmlStyle] being built. /// As a special case, declare `T=BuildContext?` to receive the [BuildContext]. - /// {@endtemplate} void enqueue( - HtmlStyle Function(HtmlStyle style, T input) callback, - T input, - ) { - final item = _HtmlStyleCallback(callback, input); + HtmlStyle Function(HtmlStyle style, T input) callback, [ + T? input, + ]) { + final item = _HtmlStyleCallback(callback, input as T); final queue = _queue ??= []; queue.add(item); } diff --git a/packages/core/lib/src/internal/ops/style_background.dart b/packages/core/lib/src/internal/ops/style_background.dart index 3e7f0a6ea..d79c8a752 100644 --- a/packages/core/lib/src/internal/ops/style_background.dart +++ b/packages/core/lib/src/internal/ops/style_background.dart @@ -27,7 +27,7 @@ class StyleBackground { return; } - tree.apply(_color, color); + tree.styleBuilder.enqueue(_color, color); }, priority: BoxModel.background, ); diff --git a/packages/core/lib/src/internal/ops/style_text_align.dart b/packages/core/lib/src/internal/ops/style_text_align.dart index 1ed635a1c..57c1ecd71 100644 --- a/packages/core/lib/src/internal/ops/style_text_align.dart +++ b/packages/core/lib/src/internal/ops/style_text_align.dart @@ -29,7 +29,7 @@ extension StyleTextAlign on WidgetFactory { static BuildTree _onParsed(BuildTree tree) { final textAlign = tree.textAlignData.textAlign; if (textAlign != null) { - tree.apply(_textAlign, textAlign); + tree.styleBuilder.enqueue(_textAlign, textAlign); } return tree; } diff --git a/packages/core/lib/src/internal/ops/style_text_decoration.dart b/packages/core/lib/src/internal/ops/style_text_decoration.dart index 3eb6365ba..674f84e67 100644 --- a/packages/core/lib/src/internal/ops/style_text_decoration.dart +++ b/packages/core/lib/src/internal/ops/style_text_decoration.dart @@ -17,7 +17,7 @@ void textDecorationApply(BuildTree tree, css.Declaration style) { style.property == kCssTextDecorationLine) { final line = TextDecorationLine.tryParse(value); if (line != null) { - tree.apply(textDecorationLine, line); + tree.styleBuilder.enqueue(textDecorationLine, line); continue; } } @@ -26,7 +26,7 @@ void textDecorationApply(BuildTree tree, css.Declaration style) { style.property == kCssTextDecorationStyle) { final tds = tryParseTextDecorationStyle(value); if (tds != null) { - tree.apply(textDecorationStyle, tds); + tree.styleBuilder.enqueue(textDecorationStyle, tds); continue; } } @@ -35,7 +35,7 @@ void textDecorationApply(BuildTree tree, css.Declaration style) { style.property == kCssTextDecorationColor) { final color = tryParseColor(value); if (color != null) { - tree.apply(textDecorationColor, color); + tree.styleBuilder.enqueue(textDecorationColor, color); continue; } } @@ -45,7 +45,8 @@ void textDecorationApply(BuildTree tree, css.Declaration style) { style.property == kCssTextDecorationWidth) { final length = tryParseCssLength(value); if (length != null && length.unit == CssLengthUnit.percentage) { - tree.apply(textDecorationThickness, length.number / 100.0); + tree.styleBuilder + .enqueue(textDecorationThickness, length.number / 100.0); continue; } } diff --git a/packages/core/lib/src/internal/ops/tag_a.dart b/packages/core/lib/src/internal/ops/tag_a.dart index a75ffff1a..13de06dc2 100644 --- a/packages/core/lib/src/internal/ops/tag_a.dart +++ b/packages/core/lib/src/internal/ops/tag_a.dart @@ -27,7 +27,7 @@ class TagA { return tree; } - return tree..apply(_builder, recognizer); + return tree..styleBuilder.enqueue(_builder, recognizer); }, priority: Priority.tagA, ); diff --git a/packages/core/lib/src/internal/ops/tag_li.dart b/packages/core/lib/src/internal/ops/tag_li.dart index 88b8539f4..50fe6ecd1 100644 --- a/packages/core/lib/src/internal/ops/tag_li.dart +++ b/packages/core/lib/src/internal/ops/tag_li.dart @@ -71,7 +71,7 @@ class TagLi { ) { final tree = itemTree.sub() ..maxLines = 1 - ..apply(TextStyleOps.whitespace, CssWhitespace.nowrap); + ..styleBuilder.enqueue(TextStyleOps.whitespace, CssWhitespace.nowrap); final listData = listTree.listData; final listStyleType = itemTree.itemStyleType ?? listTree.listStyleType; final index = listData.markerReversed diff --git a/packages/core/lib/src/internal/ops/tag_ruby.dart b/packages/core/lib/src/internal/ops/tag_ruby.dart index 607dc997c..e0849ce62 100644 --- a/packages/core/lib/src/internal/ops/tag_ruby.dart +++ b/packages/core/lib/src/internal/ops/tag_ruby.dart @@ -32,7 +32,7 @@ extension TagRuby on WidgetFactory { ); break; case kTagRt: - subTree.apply(TextStyleOps.fontSizeEm, .5); + subTree.styleBuilder.enqueue(TextStyleOps.fontSizeEm, .5); break; } } diff --git a/packages/core/pubspec.yaml b/packages/core/pubspec.yaml index 1d5f1d36d..b2428e9ff 100644 --- a/packages/core/pubspec.yaml +++ b/packages/core/pubspec.yaml @@ -1,5 +1,5 @@ name: flutter_widget_from_html_core -version: 0.13.0-alpha.2 +version: 0.13.1-alpha.1 description: Flutter package to render html as widgets that focuses on correctness and extensibility. homepage: https://github.com/daohoangson/flutter_widget_from_html/tree/master/packages/core diff --git a/packages/core/test/core_test.dart b/packages/core/test/core_test.dart index ae193f06b..c26d3cec2 100644 --- a/packages/core/test/core_test.dart +++ b/packages/core/test/core_test.dart @@ -955,7 +955,7 @@ Future main() async { expect(e, equals('[CssBlock:child=[RichText:(:1 [RichText:(:2)])]]')); }); - testWidgets('#646: renders onRenderBlock inline', (tester) async { + testWidgets('renders onRenderBlock inline', (tester) async { // https://github.com/daohoangson/flutter_widget_from_html/issues/646 const html = 'Foo'; final explained = await explain( @@ -971,7 +971,7 @@ Future main() async { expect(explained, equals('[Text:Bar]')); }); - testWidgets('#799: inline block with bg, v-align', (tester) async { + testWidgets('inline block with bg, v-align', (tester) async { // https://github.com/daohoangson/flutter_widget_from_html/issues/799 const html = 'Foo'; diff --git a/packages/core/test/src/core_legacy_test.dart b/packages/core/test/src/core_legacy_test.dart index 3fd7bedd9..07ca99f8e 100644 --- a/packages/core/test/src/core_legacy_test.dart +++ b/packages/core/test/src/core_legacy_test.dart @@ -411,6 +411,33 @@ void main() { }); }); + group('TextStyleHtml', () { + group('getDependency', () { + final dep1 = _LegacyTextStyleHtmlDep1(); + final style = HtmlStyle.root( + [ + const TextScaleFactor(1.0), + TextDirection.ltr, + const TextStyle(inherit: false), + dep1, + ], + null, + ); + + test('returns value', () { + final dep = style.getDependency<_LegacyTextStyleHtmlDep1>(); + expect(dep, equals(dep1)); + }); + + test('throws value', () { + expect( + () => style.getDependency<_LegacyTextStyleHtmlDep2>(), + throwsStateError, + ); + }); + }); + }); + group('WidgetFactory', () { group('gestureTapCallback', () { test('calls onTapUrl', () { @@ -589,6 +616,10 @@ class _BuildOpWidgetFactory extends WidgetFactory { } } +class _LegacyTextStyleHtmlDep1 {} + +class _LegacyTextStyleHtmlDep2 {} + class _LoggerApp extends StatefulWidget { final Widget child; final List records; diff --git a/packages/core/test/src/data/build_bits_test.dart b/packages/core/test/src/data/build_bits_test.dart index e34ef0446..c3c90654a 100644 --- a/packages/core/test/src/data/build_bits_test.dart +++ b/packages/core/test/src/data/build_bits_test.dart @@ -316,7 +316,7 @@ class _BuildBitWidgetFactory extends WidgetFactory { } if (classes.contains('custom')) { - tree.apply((style, _) => style.copyWith(), null); + tree.styleBuilder.enqueue((style, _) => style.copyWith(), null); } super.parse(tree); diff --git a/packages/core/test/src/data/text_style_test.dart b/packages/core/test/src/data/text_style_test.dart index b3a61ce5d..a65ed055d 100644 --- a/packages/core/test/src/data/text_style_test.dart +++ b/packages/core/test/src/data/text_style_test.dart @@ -21,12 +21,6 @@ void main() { expect(dep, equals(dep1)); }); - test('returns dependency', () { - // ignore: deprecated_member_use_from_same_package - final dep = style.getDependency<_Dep1>(); - expect(dep, equals(dep1)); - }); - test('returns null', () { expect(style.value<_Dep2>(), isNull); }); diff --git a/packages/core/test/style_border_test.dart b/packages/core/test/style_border_test.dart index 854ac3422..5ef678196 100644 --- a/packages/core/test/style_border_test.dart +++ b/packages/core/test/style_border_test.dart @@ -763,7 +763,7 @@ void main() { ); }); - testWidgets('#909: ignore radius if border is not uniform', (t) async { + testWidgets('ignore radius if border is not uniform', (t) async { // https://github.com/daohoangson/flutter_widget_from_html/issues/909 const html = '
Foo
'; @@ -1193,7 +1193,8 @@ void main() { expect(explained, equals('[RichText:(:Foo)]')); }); - testWidgets('#1044: border zero', (WidgetTester tester) async { + testWidgets('border zero', (WidgetTester tester) async { + // https://github.com/daohoangson/flutter_widget_from_html/issues/1044 const html = 'Foo'; final explained = await explain(tester, html); expect(explained, equals('[RichText:(:Foo)]')); diff --git a/packages/core/test/style_padding_test.dart b/packages/core/test/style_padding_test.dart index d629d2959..b6a0d62e9 100644 --- a/packages/core/test/style_padding_test.dart +++ b/packages/core/test/style_padding_test.dart @@ -252,7 +252,7 @@ void main() { ); }); - testWidgets('#812: renders padding around empty string', (tester) async { + testWidgets('renders padding around empty string', (tester) async { // https://github.com/daohoangson/flutter_widget_from_html/issues/812 const html = '

'; final explained = await explain(tester, html); diff --git a/packages/core/test/style_text_align_test.dart b/packages/core/test/style_text_align_test.dart index a218338c2..4a70b57b9 100644 --- a/packages/core/test/style_text_align_test.dart +++ b/packages/core/test/style_text_align_test.dart @@ -367,7 +367,7 @@ void main() { }); }); - testWidgets('#10: renders styling from outside', (WidgetTester tester) async { + testWidgets('renders styling from outside', (WidgetTester tester) async { // https://github.com/daohoangson/flutter_widget_from_html/issues/10 const html = '' '
right
'; diff --git a/packages/core/test/tag_a_test.dart b/packages/core/test/tag_a_test.dart index 55e6ea0cf..1f97c8f30 100644 --- a/packages/core/test/tag_a_test.dart +++ b/packages/core/test/tag_a_test.dart @@ -253,7 +253,7 @@ void main() { }); }); - group('#676: skips decoration', () { + group('skips decoration', () { // https://github.com/daohoangson/flutter_widget_from_html/issues/676 testWidgets('renders a filled href', (tester) async { const html = 'test'; diff --git a/packages/core/test/tag_li_test.dart b/packages/core/test/tag_li_test.dart index 005258fff..3965d81e5 100644 --- a/packages/core/test/tag_li_test.dart +++ b/packages/core/test/tag_li_test.dart @@ -691,7 +691,7 @@ Future main() async { ); }); - testWidgets('#112: LI has empty A', (WidgetTester tester) async { + testWidgets('LI has empty A', (WidgetTester tester) async { // https://github.com/daohoangson/flutter_widget_from_html/issues/112 const html = '''
    diff --git a/packages/core/test/tag_table_test.dart b/packages/core/test/tag_table_test.dart index 90db6956c..16d2f60fe 100644 --- a/packages/core/test/tag_table_test.dart +++ b/packages/core/test/tag_table_test.dart @@ -552,7 +552,7 @@ Future main() async { }); group('background', () { - testWidgets('#171: cell color', (WidgetTester tester) async { + testWidgets('cell color', (WidgetTester tester) async { // https://github.com/daohoangson/flutter_widget_from_html/issues/171 const html = '' '' @@ -572,7 +572,7 @@ Future main() async { ); }); - testWidgets('#1028: row color', (WidgetTester tester) async { + testWidgets('row color', (WidgetTester tester) async { // https://github.com/daohoangson/flutter_widget_from_html/issues/1028 const html = '
    Foo
    ' '' diff --git a/packages/enhanced/CHANGELOG.md b/packages/enhanced/CHANGELOG.md index 52085c37f..10d73951e 100644 --- a/packages/enhanced/CHANGELOG.md +++ b/packages/enhanced/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.13.1-alpha.1 + +- Remove `BuildTree.apply` (#1027) +- Restore optional second param for `HtmlStyleBuilder.enqueue` (#1027) + +## 0.13.0-alpha.5 + +- Expose core legacy in enhanced package (#1027) +- Fix border 0 is still being rendered (#1045) + ## 0.13.0-alpha.2 - Fix inline `white-space: nowrap`. (#944) diff --git a/packages/enhanced/lib/flutter_widget_from_html.dart b/packages/enhanced/lib/flutter_widget_from_html.dart index 9dbdbe097..111e1edae 100644 --- a/packages/enhanced/lib/flutter_widget_from_html.dart +++ b/packages/enhanced/lib/flutter_widget_from_html.dart @@ -1,4 +1,5 @@ export 'src/data.dart'; export 'src/helpers.dart'; export 'src/html_widget.dart'; +export 'src/legacy.dart'; export 'src/widget_factory.dart'; diff --git a/packages/enhanced/lib/src/legacy.dart b/packages/enhanced/lib/src/legacy.dart new file mode 100644 index 000000000..16027faec --- /dev/null +++ b/packages/enhanced/lib/src/legacy.dart @@ -0,0 +1 @@ +export 'package:flutter_widget_from_html_core/src/core_legacy.dart'; diff --git a/packages/enhanced/pubspec.yaml b/packages/enhanced/pubspec.yaml index 0c7c6549b..653ff6cd0 100644 --- a/packages/enhanced/pubspec.yaml +++ b/packages/enhanced/pubspec.yaml @@ -1,5 +1,5 @@ name: flutter_widget_from_html -version: 0.13.0-alpha.2 +version: 0.13.1-alpha.1 description: Flutter package to render html as widgets that supports hyperlink, image, audio, video, iframe and many other tags. homepage: https://github.com/daohoangson/flutter_widget_from_html @@ -10,7 +10,7 @@ environment: dependencies: flutter: sdk: flutter - flutter_widget_from_html_core: ^0.13.0-alpha.2 + flutter_widget_from_html_core: ^0.13.1-alpha.1 fwfh_cached_network_image: ^0.13.0-alpha.1 fwfh_chewie: ^0.13.0-alpha.1 fwfh_just_audio: ^0.13.0-alpha.1 diff --git a/packages/enhanced/test/config_test.dart b/packages/enhanced/test/config_test.dart index 0d623ab9c..8510455f4 100644 --- a/packages/enhanced/test/config_test.dart +++ b/packages/enhanced/test/config_test.dart @@ -1,5 +1,3 @@ -// ignore_for_file: deprecated_member_use_from_same_package - import 'dart:async'; import 'package:flutter/foundation.dart';
    FooBar