flutter_markdown_plus
A Markdown renderer for Flutter. Create rich text output, including text styles, tables, links, and more, from plain text data formatted with simple Markdown tags.
1.0.12
484K downloads/mo
#527 most downloaded on pub.dev
foresightmobile/flutter_markdown_plus
What this package is like to depend on
Last release 1 months ago
10 Jul 2026
Ships fairly regularly
a new release about every 5 months
Nearly every release is documented
notes for 12 of 12 stable releases
Nothing withdrawn
no release was ever pulled
1 years old
12 releases · first in 2025
7 releases in the last 12 months
see the full history below
Release timeline
12 releases · Feb 2025 to Jul 2026Releases
latest 12-
1.0.1210 Jul 2026Release notes
Open source →- Added golden render regression tests for the Markdown widgets, covering text formatting, emphasis, blockquotes, lists, tables, task lists, and code blocks. They render with real fonts and run in the local
flutter testsuite; like the existing image goldens they are platform-specific, and are skipped on CI (whose Flutterstablechannel is unpinned) to avoid flaky pixel-exact diffs when the toolchain drifts - Documentation: the 1.0.11 README overhaul documented the previously undocumented
onTapLinkandstyleSheetAPIs, resolving #123
Release notes
Open source →- Added golden render regression tests for the Markdown widgets, covering text formatting, emphasis, blockquotes, lists, tables, task lists, and code blocks. They render with real fonts and run in the local
flutter testsuite; like the existing image goldens they are platform-specific, and are skipped on CI (whose Flutterstablechannel is unpinned) to avoid flaky pixel-exact diffs when the toolchain drifts
Release notes
Open source →- Added golden render regression tests for the Markdown widgets, covering text formatting, emphasis, blockquotes, lists, tables, task lists, and code blocks. They render with real fonts and run in the local flutter test suite; like the existing image goldens they are platform-specific, and are skipped on CI (whose Flutter stable channel is unpinned) to avoid flaky pixel-exact diffs when the toolchain drifts
- Added golden render regression tests for the Markdown widgets, covering text formatting, emphasis, blockquotes, lists, tables, task lists, and code blocks. They render with real fonts and run in the local
-
1.0.1107 Jul 2026Release notes
Open source →- Overhauled the README: added a feature list, installation instructions, a widget comparison (
Markdown/MarkdownBody/MarkdownRaw), and code examples for link handling (onTapLink),MarkdownStyleSheetstyling, and custom element builders - Added screenshots to the pub.dev listing showcasing rich-text formatting, GitHub Flavored Markdown tables and task lists, and code blocks
- Pointed the
documentationlink at the generated API docs on pub.dev
Release notes
Open source →- Overhauled the README: added a feature list, installation instructions, a widget comparison (
Markdown/MarkdownBody/MarkdownRaw), and code examples for link handling (onTapLink),MarkdownStyleSheetstyling, and custom element builders — documenting the previously undocumentedonTapLinkandstyleSheetAPIs (resolves #123) - Added screenshots to the pub.dev listing showcasing rich-text formatting, GitHub Flavored Markdown tables and task lists, and code blocks
- Pointed the
documentationlink at the generated API docs on pub.dev
Release notes
Open source →-
Overhauled the README: added a feature list, installation instructions, a widget comparison ( Markdown / MarkdownBody / MarkdownRaw ), and code examples for link handling ( onTapLink ), MarkdownStyleSheet styling, and custom element builders — documenting the previously undocumented onTapLink and styleSheet APIs (resolves #123)
-
Added screenshots to the pub.dev listing showcasing rich-text formatting, GitHub Flavored Markdown tables and task lists, and code blocks
-
Pointed the documentation link at the generated API docs on pub.dev
- Overhauled the README: added a feature list, installation instructions, a widget comparison (
-
1.0.1007 Jul 2026Release notes
Open source →- Added a
contextMenuBuilderparameter toMarkdownandMarkdownBody, letting callers customise or suppress (passnull) the text-selection toolbar shown whenselectableis enabled. Defaults to the platform-adaptive Flutter selection toolbar, so existing behaviour is unchanged (#134) onSelectionChangednow reports the full selectable plain text viaTextSpan.toPlainText(). Previously, paragraphs containing rich/nested inline spans (bold, italic, code, links) reported the top-levelTextSpan.text, which wasnullfor multi-child spans; callers now receive the complete text soTextSelection.textInsideworks as expected (#134)
Thanks to our contributors:
- @momadvisor for the
contextMenuBuilderparameter and plain-text selection fix (#134)
Release notes
Open source →- Added a
contextMenuBuilderparameter toMarkdownandMarkdownBody, letting callers customise or suppress (passnull) the text-selection toolbar shown whenselectableis enabled. Defaults to the platform-adaptive Flutter selection toolbar, so existing behaviour is unchanged (#134) onSelectionChangednow reports the full selectable plain text viaTextSpan.toPlainText(). Previously, paragraphs containing rich/nested inline spans (bold, italic, code, links) reported the top-levelTextSpan.text, which wasnullfor multi-child spans; callers now receive the complete text soTextSelection.textInsideworks as expected (#134)
Thanks to our contributors:
- @momadvisor for the
contextMenuBuilderparameter and plain-text selection fix (#134)
Release notes
Open source →-
Added a contextMenuBuilder parameter to Markdown and MarkdownBody , letting callers customise or suppress (pass null ) the text-selection toolbar shown when selectable is enabled. Defaults to the platform-adaptive Flutter selection toolbar, so existing behaviour is unchanged (#134)
-
onSelectionChanged now reports the full selectable plain text via TextSpan.toPlainText() . Previously, paragraphs containing rich/nested inline spans (bold, italic, code, links) reported the top-level TextSpan.text , which was null for multi-child spans; callers now receive the complete text so TextSelection.textInside works as expected (#134)
Thanks to our contributors:
- @momadvisor for the contextMenuBuilder parameter and plain-text selection fix (#134)
- Added a
-
1.0.906 Jul 2026Release notes
Open source →- Fixed custom inline
builders(e.g.a) duplicating trailing text when the element had multiple children, such as link text containing a_or*delimiter that the parser splits into separate text nodes (#132)
Thanks to our contributors:
- @Jess-Gabia for reporting the issue and identifying the fix (#132)
- @amungi for confirming the fix in production
Release notes
Open source →- Fixed custom inline
builders(e.g.a) duplicating trailing text when the element had multiple children, such as link text containing a_or*delimiter that the parser splits into separate text nodes (#132)
Thanks to our contributors:
- @Jess-Gabia for reporting the issue and identifying the fix (#132)
- @amungi for confirming the fix in production
Release notes
Open source →- Fixed custom inline builders (e.g. a ) duplicating trailing text when the element had multiple children, such as link text containing a _ or * delimiter that the parser splits into separate text nodes (#132)
Thanks to our contributors:
-
@Jess-Gabia for reporting the issue and identifying the fix (#132)
-
@amungi for confirming the fix in production
- Fixed custom inline
-
1.0.806 Jul 2026Release notes
Open source →- Fixed custom
buildersandpaddingBuildersfor thehrtag being ignored - Fixed bold, italic, and link formatting not rendering inside blockquotes
- Forced a consistent line height within each text block so mixed font weights (e.g. bold) no longer shift line height, while headers and other blocks keep their own height
- Updated the default blockquote styling to be theme-aware (uses
surfaceContainerHighestwith a primary-coloured left border) for better light/dark mode support - Added a
noScrolloption to theMarkdownwidget to render content in a non-scrollingColumnfor use inside an existing scroll view - Added an integration test suite (
example/integration_test/) that runs on a device or emulator, covering link taps, scrolling, task-list checkboxes, text selection, and example app launch - Added
scripts/integration_test.shand a GitHub Actions job that runs the integration tests on an Android emulator - Migrated linting to
package:flutter_lints, retaining strict type analysis and required public API documentation - Updated dependencies:
markdownto^7.3.1,mockitoto^5.7.0, and pinnedleak_tracker_flutter_testing - Aligned the example app's Flutter constraint with the package and added a
documentationlink to the pubspec - Updated the example app's Android Gradle Plugin to 8.6.0 (Flutter's current minimum) and removed an unused Google Cloud Artifact Registry Gradle plugin
- Excluded the locally symlinked
flutter_markdown_plus_latexpackage from analysis and publishing
Thanks to our contributors:
- @joelbrostrom for fixing custom builders on the
hrtag (#131) - @vsaase for fixing inline formatting inside blockquotes (#128)
- @domhel for theme-aware blockquote styling (#42)
- @szuwest for the strong text line-height fix (#130)
- @senlinjun for the
noScrolloption (#38)
Release notes
Open source →- Fixed custom
buildersandpaddingBuildersfor thehrtag being ignored - Fixed bold, italic, and link formatting not rendering inside blockquotes
- Forced a consistent line height within each text block so mixed font weights (e.g. bold) no longer shift line height, while headers and other blocks keep their own height
- Updated the default blockquote styling to be theme-aware (uses
surfaceContainerHighestwith a primary-coloured left border) for better light/dark mode support - Added a
noScrolloption to theMarkdownwidget to render content in a non-scrollingColumnfor use inside an existing scroll view - Added an integration test suite (
example/integration_test/) that runs on a device or emulator, covering link taps, scrolling, task-list checkboxes, text selection, and example app launch - Added
scripts/integration_test.shand a GitHub Actions job that runs the integration tests on an Android emulator - Migrated linting to
package:flutter_lints, retaining strict type analysis and required public API documentation - Updated dependencies:
markdownto^7.3.1,mockitoto^5.7.0, and pinnedleak_tracker_flutter_testing - Aligned the example app's Flutter constraint with the package and added a
documentationlink to the pubspec - Updated the example app's Android Gradle Plugin to 8.6.0 (Flutter's current minimum) and removed an unused Google Cloud Artifact Registry Gradle plugin
- Excluded the locally symlinked
flutter_markdown_plus_latexpackage from analysis and publishing
Thanks to our contributors:
- @joelbrostrom for fixing custom builders on the
hrtag (#131) - @vsaase for fixing inline formatting inside blockquotes (#128)
- @domhel for theme-aware blockquote styling (#42)
- @szuwest for the strong text line-height fix (#130)
- @senlinjun for the
noScrolloption (#38)
Release notes
Open source →-
Fixed custom builders and paddingBuilders for the hr tag being ignored
-
Fixed bold, italic, and link formatting not rendering inside blockquotes
-
Forced a consistent line height within each text block so mixed font weights (e.g. bold) no longer shift line height, while headers and other blocks keep their own height
-
Updated the default blockquote styling to be theme-aware (uses surfaceContainerHighest with a primary-coloured left border) for better light/dark mode support
-
Added a noScroll option to the Markdown widget to render content in a non-scrolling Column for use inside an existing scroll view
-
Added an integration test suite ( example/integration_test/ ) that runs on a device or emulator, covering link taps, scrolling, task-list checkboxes, text selection, and example app launch
-
Added scripts/integration_test.sh and a GitHub Actions job that runs the integration tests on an Android emulator
-
Migrated linting to package:flutter_lints , retaining strict type analysis and required public API documentation
-
Updated dependencies: markdown to ^7.3.1 , mockito to ^5.7.0 , and pinned leak_tracker_flutter_testing
-
Aligned the example app's Flutter constraint with the package and added a documentation link to the pubspec
-
Updated the example app's Android Gradle Plugin to 8.6.0 (Flutter's current minimum) and removed an unused Google Cloud Artifact Registry Gradle plugin
-
Excluded the locally symlinked flutter_markdown_plus_latex package from analysis and publishing
Thanks to our contributors:
-
@joelbrostrom for fixing custom builders on the hr tag (#131)
-
@vsaase for fixing inline formatting inside blockquotes (#128)
-
@domhel for theme-aware blockquote styling (#42)
-
@szuwest for the strong text line-height fix (#130)
-
@senlinjun for the noScroll option (#38)
- Fixed custom
-
1.0.728 Dec 2025Release notes
Open source →- Improved pub.dev score by making example app source code available in published package
- Updated .pubignore to only exclude build artifacts and generated files instead of entire example directory
- Fixed linter warnings by removing unnecessary null default values in MarkdownStyleSheet
- Added CLAUDE.md documentation for AI-assisted development
- Enhanced README with package history and link to LaTeX support package
- Standardized formatter configuration across project
Release notes
Open source →- Improved pub.dev score by making example app source code available in published package
- Updated
.pubignoreto only exclude build artifacts and generated files instead of entire example directory - Fixed linter warnings by removing unnecessary null default values in
MarkdownStyleSheet - Added
CLAUDE.mddocumentation for AI-assisted development - Enhanced README with package history and link to LaTeX support package
- Standardized formatter configuration across project
Release notes
Open source →-
Improved pub.dev score by making example app source code available in published package
-
Updated .pubignore to only exclude build artifacts and generated files instead of entire example directory
-
Fixed linter warnings by removing unnecessary null default values in MarkdownStyleSheet
-
Added CLAUDE.md documentation for AI-assisted development
-
Enhanced README with package history and link to LaTeX support package
-
Standardized formatter configuration across project
-
1.0.623 Dec 2025Release notes
Open source →Fix cursor behavior when using custom builder for anchor tags. The code now only manages _linkHandlers when there is no custom builder for anchor tags, preventing conflicts between the default link recognizer and custom builder widgets.
New properties introduced to MarkdownStyleSheet: tableHeadCellsPadding and tableHeadCelssDecoration.
Implemented automatic table content clipping to respect rounded borders when tableBorder specifies a border radius.Many thanks to our contributors:
@mark-nicepants for fixing null pointer issues with custom builders
@jlandon for adding table header cell customisation features
@4rthurmonteiro for the link builder fixRelease notes
Open source →- Fix cursor behavior when using custom builder for anchor tags. The code now only manages
_linkHandlerswhen there is no custom builder for anchor tags, preventing conflicts between the default link recognizer and custom builder widgets. - New properties introduced to
MarkdownStyleSheet:tableHeadCellsPaddingandtableHeadCelssDecoration. - Implemented automatic table content clipping to respect rounded borders when
tableBorderspecifies a border radius.
Thanks to our contributors:
- @mark-nicepants for fixing null pointer issues with custom builders
- @jlandon for adding table header cell customization features
- @4rthurmonteiro for the link builder fix
Release notes
Open source →-
Fix cursor behavior when using custom builder for anchor tags. The code now only manages _linkHandlers when there is no custom builder for anchor tags, preventing conflicts between the default link recognizer and custom builder widgets.
-
New properties introduced to MarkdownStyleSheet : tableHeadCellsPadding and tableHeadCelssDecoration .
-
Implemented automatic table content clipping to respect rounded borders when tableBorder specifies a border radius.
Thanks to our contributors:
-
@mark-nicepants for fixing null pointer issues with custom builders
-
@jlandon for adding table header cell customization features
-
@4rthurmonteiro for the link builder fix
- Fix cursor behavior when using custom builder for anchor tags. The code now only manages
-
1.0.528 Aug 2025 -
1.0.310 Mar 2025 -
1.0.204 Mar 2025 -
1.0.1+103 Mar 2025Release notes
Open source →What's Changed
- Renaming the package. Initial scripts and settings. by @kravoleksii in #1
- Fix blockquote text style by @kravoleksii in #2
- Issue tracker URL by @kravoleksii in #3
- Release action by @kravoleksii in #4
- Release v1.0.1+1 by @kravoleksii in #5
- Flutter version bump by @kravoleksii in #6
- Assets tests fix by @kravoleksii in #7
- Update validate.sh script by @kravoleksii in #8
- Publish.yaml script fix by @kravoleksii in #9
- Publish.yaml fix by @kravoleksii in #10
- Publish.yaml script fixes by @kravoleksii in #11
- -publish.yaml script fix; by @kravoleksii in #12
New Contributors
- @kravoleksii made their first contribution in #1
Full Changelog: https://github.com/foresightmobile/flutter_markdown_plus/commits/1.0.1
-
1.0.0+124 Feb 2025Release notes
Open source →- Initial commit of the flutter_markdown_plus plugin as published on https://pub.dev/packages/flutter_markdown_plus
Release notes
Open source →- Initial commit of the flutter_markdown_plus plugin as published on https://pub.dev/packages/flutter_markdown_plus