[flutter_markdown] Remove TaskListSyntax and rely on markdown native checkbox support - Fixes https://github.com/flutter/flutter/issues/107871 (#2338)
diff --git a/packages/flutter_markdown/CHANGELOG.md b/packages/flutter_markdown/CHANGELOG.md index a31a13c..ebb7b04 100644 --- a/packages/flutter_markdown/CHANGELOG.md +++ b/packages/flutter_markdown/CHANGELOG.md
@@ -1,3 +1,9 @@ +## 0.6.11 + +* Deprecates and removes use of `TaskListSyntax` as new markdown package supports checkboxes natively. + Consider using `OrderedListWithCheckBoxSyntax` or `UnorderedListWithCheckBoxSyntax` as a replacement. +* Changes `_buildCheckbox()` to inspect state of checkbox input element by existence of `'checked'` attribute. + ## 0.6.10+6 * Removes print logged when not handling hr for alignment.
diff --git a/packages/flutter_markdown/example/pubspec.yaml b/packages/flutter_markdown/example/pubspec.yaml index a335dba..8e21f40 100644 --- a/packages/flutter_markdown/example/pubspec.yaml +++ b/packages/flutter_markdown/example/pubspec.yaml
@@ -11,7 +11,7 @@ sdk: flutter flutter_markdown: path: ../ - markdown: 5.0.0 + markdown: ^6.0.0 dev_dependencies: flutter_test:
diff --git a/packages/flutter_markdown/lib/src/builder.dart b/packages/flutter_markdown/lib/src/builder.dart index 115f289..20809eb 100644 --- a/packages/flutter_markdown/lib/src/builder.dart +++ b/packages/flutter_markdown/lib/src/builder.dart
@@ -386,7 +386,7 @@ Widget bullet; final dynamic el = element.children![0]; if (el is md.Element && el.attributes['type'] == 'checkbox') { - final bool val = el.attributes['checked'] != 'false'; + final bool val = el.attributes.containsKey('checked'); bullet = _buildCheckbox(val); } else { bullet = _buildBullet(_listIndents.last);
diff --git a/packages/flutter_markdown/lib/src/widget.dart b/packages/flutter_markdown/lib/src/widget.dart index 17f7406..bfdce31 100644 --- a/packages/flutter_markdown/lib/src/widget.dart +++ b/packages/flutter_markdown/lib/src/widget.dart
@@ -310,8 +310,7 @@ final md.Document document = md.Document( blockSyntaxes: widget.blockSyntaxes, - inlineSyntaxes: (widget.inlineSyntaxes ?? <md.InlineSyntax>[]) - ..add(TaskListSyntax()), + inlineSyntaxes: widget.inlineSyntaxes, extensionSet: widget.extensionSet ?? md.ExtensionSet.gitHubFlavored, encodeHtml: false, ); @@ -548,11 +547,16 @@ } /// Parse [task list items](https://github.github.com/gfm/#task-list-items-extension-). +/// +/// This class is no longer used as Markdown now supports checkbox syntax natively. +@Deprecated( + 'Use [OrderedListWithCheckBoxSyntax] or [UnorderedListWithCheckBoxSyntax]') class TaskListSyntax extends md.InlineSyntax { - /// Cretaes a new instance. + /// Creates a new instance. + @Deprecated( + 'Use [OrderedListWithCheckBoxSyntax] or [UnorderedListWithCheckBoxSyntax]') TaskListSyntax() : super(_pattern); - // FIXME: Waiting for dart-lang/markdown#269 to land static const String _pattern = r'^ *\[([ xX])\] +'; @override
diff --git a/packages/flutter_markdown/pubspec.yaml b/packages/flutter_markdown/pubspec.yaml index 59f33ba..19a678f 100644 --- a/packages/flutter_markdown/pubspec.yaml +++ b/packages/flutter_markdown/pubspec.yaml
@@ -4,7 +4,7 @@ formatted with simple Markdown tags. repository: https://github.com/flutter/packages/tree/main/packages/flutter_markdown issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+flutter_markdown%22 -version: 0.6.10+6 +version: 0.6.11 environment: sdk: ">=2.12.0 <3.0.0" @@ -13,7 +13,7 @@ dependencies: flutter: sdk: flutter - markdown: ^5.0.0 + markdown: ^6.0.0 meta: ^1.3.0 path: ^1.8.0
diff --git a/packages/flutter_markdown/test/list_test.dart b/packages/flutter_markdown/test/list_test.dart index 4aca6f4..f3f8aa7 100644 --- a/packages/flutter_markdown/test/list_test.dart +++ b/packages/flutter_markdown/test/list_test.dart
@@ -5,6 +5,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_markdown/flutter_markdown.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:markdown/markdown.dart' + show indicatorForCheckedCheckBox, indicatorForUncheckedCheckBox; import 'utils.dart'; void main() => defineTests(); @@ -129,9 +131,9 @@ expectTextStrings(widgets, <String>[ String.fromCharCode(Icons.check_box.codePoint), - 'Item 1', + '${indicatorForCheckedCheckBox}Item 1', String.fromCharCode(Icons.check_box_outline_blank.codePoint), - 'Item 2', + '${indicatorForUncheckedCheckBox}Item 2', ]); }, ); @@ -177,9 +179,9 @@ expectTextStrings(widgets, <String>[ 'true', - 'Item 1', + '${indicatorForCheckedCheckBox}Item 1', 'false', - 'Item 2', + '${indicatorForUncheckedCheckBox}Item 2', ]); }, );