diff --git a/AUTHORS b/AUTHORS index 1532b6013d..b5c914b8f1 100644 --- a/AUTHORS +++ b/AUTHORS @@ -14,3 +14,4 @@ Michael Beckler Alexandre Ardhuin Luke Freeman Vincent Le Quéméner +Mike Hoolehan diff --git a/packages/flutter_markdown/lib/src/markdown_raw.dart b/packages/flutter_markdown/lib/src/markdown_raw.dart index 3a460f0db7..fcdc50ce1a 100644 --- a/packages/flutter_markdown/lib/src/markdown_raw.dart +++ b/packages/flutter_markdown/lib/src/markdown_raw.dart @@ -219,13 +219,16 @@ class _Renderer implements md.NodeVisitor { @override void visitText(md.Text text) { - _MarkdownNodeList topList = _currentBlock.stack.last; - List<_MarkdownNode> top = topList.list; + if (_currentBlock != null) { // ignore if no corresponding block + _MarkdownNodeList topList = _currentBlock.stack.last; + List<_MarkdownNode> top = topList.list; - if (_currentBlock.tag == 'pre') - top.add(new _MarkdownNodeTextSpan(_syntaxHighlighter.format(text.text))); - else - top.add(new _MarkdownNodeString(text.text)); + if (_currentBlock.tag == 'pre') + top.add( + new _MarkdownNodeTextSpan(_syntaxHighlighter.format(text.text))); + else + top.add(new _MarkdownNodeString(text.text)); + } } @override diff --git a/packages/flutter_markdown/pubspec.yaml b/packages/flutter_markdown/pubspec.yaml index fb17122118..117d734023 100644 --- a/packages/flutter_markdown/pubspec.yaml +++ b/packages/flutter_markdown/pubspec.yaml @@ -7,7 +7,7 @@ homepage: http://flutter.io dependencies: flutter: sdk: flutter - markdown: '^0.9.0' + markdown: '^0.11.0' string_scanner: ^1.0.0 dev_dependencies: diff --git a/packages/flutter_markdown/test/flutter_markdown_test.dart b/packages/flutter_markdown/test/flutter_markdown_test.dart index 0f5be57968..7552eef6e1 100644 --- a/packages/flutter_markdown/test/flutter_markdown_test.dart +++ b/packages/flutter_markdown/test/flutter_markdown_test.dart @@ -84,6 +84,28 @@ void main() { expect(span.children[0].recognizer.runtimeType, equals(TapGestureRecognizer)); }); + testWidgets('HTML tag ignored ', (WidgetTester tester) async { + final List mdData = [ + 'Line 1\n

HTML content

\nLine 2', + 'Line 1\n<\nLine 2' + ]; + + for (String mdLine in mdData) { + await tester.pumpWidget(new MarkdownBody(data: mdLine)); + + Iterable widgets = tester.allWidgets; + _expectTextStrings(widgets, ['Line 1', 'Line 2']); + } + }); + + testWidgets('Less than', (WidgetTester tester) async { + final String mdLine = 'Line 1 <\n\nc < c c\n\n< Line 2'; + await tester.pumpWidget(new MarkdownBody(data: mdLine)); + + Iterable widgets = tester.allWidgets; + _expectTextStrings(widgets, ['Line 1 <','c < c c','< Line 2']); + }); + testWidgets('Changing config - data', (WidgetTester tester) async { await tester.pumpWidget(new Markdown(data: 'Data1')); _expectTextStrings(tester.allWidgets, ['Data1']);