diff --git a/packages/flutter_markdown/CHANGELOG.md b/packages/flutter_markdown/CHANGELOG.md index 21a7e338e1..2db0247811 100644 --- a/packages/flutter_markdown/CHANGELOG.md +++ b/packages/flutter_markdown/CHANGELOG.md @@ -1,5 +1,6 @@ -## NEXT +## 0.6.15+1 +* Fixes 'The Scrollbar's ScrollController has no ScrollPosition attached' exception when scrolling scrollable code blocks. * Fixes stale ignore: prefer_const_constructors. * Updates minimum supported SDK version to Flutter 3.10/Dart 3.0. diff --git a/packages/flutter_markdown/lib/src/builder.dart b/packages/flutter_markdown/lib/src/builder.dart index f32ec0a19f..6a51a4a8c1 100644 --- a/packages/flutter_markdown/lib/src/builder.dart +++ b/packages/flutter_markdown/lib/src/builder.dart @@ -162,6 +162,7 @@ class MarkdownBuilder implements md.NodeVisitor { final List<_TableElement> _tables = <_TableElement>[]; final List<_InlineElement> _inlines = <_InlineElement>[]; final List _linkHandlers = []; + final ScrollController _preScrollController = ScrollController(); String? _currentBlockTag; String? _lastVisitedTag; bool _isInBlockquote = false; @@ -328,7 +329,9 @@ class MarkdownBuilder implements md.NodeVisitor { .visitText(text, styleSheet.styles[_blocks.last.tag!]); } else if (_blocks.last.tag == 'pre') { child = Scrollbar( + controller: _preScrollController, child: SingleChildScrollView( + controller: _preScrollController, scrollDirection: Axis.horizontal, padding: styleSheet.codeblockPadding, child: _buildRichText(delegate.formatText(styleSheet, text.text)), diff --git a/packages/flutter_markdown/pubspec.yaml b/packages/flutter_markdown/pubspec.yaml index 525222b9c2..83e6ccf539 100644 --- a/packages/flutter_markdown/pubspec.yaml +++ b/packages/flutter_markdown/pubspec.yaml @@ -4,7 +4,7 @@ description: A Markdown renderer for Flutter. Create rich text output, 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.15 +version: 0.6.15+1 environment: sdk: ">=3.0.0 <4.0.0" diff --git a/packages/flutter_markdown/test/scrollable_test.dart b/packages/flutter_markdown/test/scrollable_test.dart index 429f0661a5..ef8e909676 100644 --- a/packages/flutter_markdown/test/scrollable_test.dart +++ b/packages/flutter_markdown/test/scrollable_test.dart @@ -27,7 +27,10 @@ void defineTests() { ); final Iterable widgets = tester.allWidgets; - expect(widgets.whereType(), isNotEmpty); + final Iterable scrollViews = + widgets.whereType(); + expect(scrollViews, isNotEmpty); + expect(scrollViews.first.controller, isNotNull); }, );