From 4b61a5b7bce450f11e34c25039c15516c69b48c4 Mon Sep 17 00:00:00 2001 From: mark-nicepants <62654433+mark-nicepants@users.noreply.github.com> Date: Thu, 25 Sep 2025 10:17:22 +0200 Subject: [PATCH 1/3] Fix null pointer that triggers when adding custom builders --- lib/src/builder.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/src/builder.dart b/lib/src/builder.dart index 5ed63b4..bc69094 100644 --- a/lib/src/builder.dart +++ b/lib/src/builder.dart @@ -278,10 +278,10 @@ class MarkdownBuilder implements md.NodeVisitor { element.children!.add(md.Text('')); } - final TextStyle parentStyle = _inlines.last.style!; + final TextStyle? parentStyle = _inlines.last.style; _inlines.add(_InlineElement( tag, - style: parentStyle.merge(styleSheet.styles[tag]), + style: parentStyle?.merge(styleSheet.styles[tag]), )); } @@ -697,7 +697,7 @@ class MarkdownBuilder implements md.NodeVisitor { if (_inlines.isEmpty) { _inlines.add(_InlineElement( tag, - style: styleSheet.styles[tag!], + style: tag != null ? styleSheet.styles[tag] : null, )); } } From ed0526a807a03b96e526a0be825f0b34b3e0dee8 Mon Sep 17 00:00:00 2001 From: Mark Mooibroek Date: Fri, 14 Nov 2025 14:17:01 +0100 Subject: [PATCH 2/3] Remove MarkdownLaTeX demo and update dependencies in pubspec files --- .../lib/demos/markdown_latex_plugin_demo.dart | 88 ------- example/lib/screens/home_screen.dart | 3 +- example/pubspec.lock | 133 +--------- example/pubspec.yaml | 1 - lib/src/builder.dart | 12 +- pubspec.lock | 242 +++--------------- 6 files changed, 45 insertions(+), 434 deletions(-) delete mode 100644 example/lib/demos/markdown_latex_plugin_demo.dart diff --git a/example/lib/demos/markdown_latex_plugin_demo.dart b/example/lib/demos/markdown_latex_plugin_demo.dart deleted file mode 100644 index 4515fc3..0000000 --- a/example/lib/demos/markdown_latex_plugin_demo.dart +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// TODO(goderbauer): Restructure the examples to avoid this ignore, https://github.com/flutter/flutter/issues/110208. -// ignore_for_file: avoid_implementing_value_types - -import 'package:flutter/material.dart'; -import 'package:flutter_markdown_plus/flutter_markdown_plus.dart'; -import 'package:flutter_markdown_plus_latex/flutter_markdown_plus_latex.dart'; -import 'package:markdown/markdown.dart' as md; - -import '../shared/markdown_demo_widget.dart'; - -// ignore_for_file: public_member_api_docs - -const String _markdownData = r""" -This is inline latex: $f(x) = \sum_{i=0}^{n} \frac{a_i}{1+x}$ - -This is block level latex: - -$$ -c = \pm\sqrt{a^2 + b^2} -$$ - -This is inline latex with displayMode: $$f(x) = \sum_{i=0}^{n} \frac{a_i}{1+x}$$ and here is a very long text that should be in the same line. - -The relationship between the height and the side length of an equilateral triangle is: - -\[ \text{Height} = \frac{\sqrt{3}}{2} \times \text{Side Length} \] - -\[ \text{X} = \frac{1}{2} \times \text{Y} \times \text{Z} = \frac{1}{2} \times 9 \times \frac{\sqrt{3}}{2} \times 9 = \frac{81\sqrt{3}}{4} \] - -The basic form of the Taylor series is: - -\[f(x) = f(a) + f'(a)(x-a) + \frac{f''(a)}{2!}(x-a)^2 + \frac{f'''(a)}{3!}(x-a)^3 + \cdots\] - -where \(f(x)\) is the function to be expanded, \(a\) is the expansion point, \(f'(a)\), \(f''(a)\), \(f'''(a)\), etc., are the first, second, third, and so on derivatives of the function at point \(a\), and \(n!\) denotes the factorial of \(n\). - -In particular, when \(a=0\), this expansion is called the Maclaurin series. - -"""; - -const String _notes = ''' -# Latex & ChatGPT Response Demo ---- - -## Overview - -... -'''; - -class MarkdownLatexPluginDemo extends StatelessWidget implements MarkdownDemoWidget { - const MarkdownLatexPluginDemo({super.key}); - - static const String _title = 'Latex & ChatGPT Response Demo'; - - @override - String get title => MarkdownLatexPluginDemo._title; - - @override - String get description => 'Shows the functionality of the LaTeX plugin with a ChatGPT response.'; - - @override - Future get data => Future.value(_markdownData); - - @override - Future get notes => Future.value(_notes); - - static LatexElementBuilder builder = LatexElementBuilder(); - - @override - Widget build(BuildContext context) { - return Scaffold( - body: SafeArea( - child: Markdown( - data: _markdownData, - selectable: true, - builders: {'latex': builder}, - extensionSet: md.ExtensionSet( - [LatexBlockSyntax()], - [LatexInlineSyntax()], - ), - ), - ), - ); - } -} diff --git a/example/lib/screens/home_screen.dart b/example/lib/screens/home_screen.dart index edf1f68..427b46f 100644 --- a/example/lib/screens/home_screen.dart +++ b/example/lib/screens/home_screen.dart @@ -3,12 +3,12 @@ // found in the LICENSE file. import 'package:flutter/material.dart'; + import '../demos/basic_markdown_demo.dart'; import '../demos/centered_header_demo.dart'; import '../demos/custom_bullet_list_demo.dart'; import '../demos/extended_emoji_demo.dart'; import '../demos/markdown_body_shrink_wrap_demo.dart'; -import '../demos/markdown_latex_plugin_demo.dart'; import '../demos/minimal_markdown_demo.dart'; import '../demos/original_demo.dart'; import '../demos/subscript_syntax_demo.dart'; @@ -33,7 +33,6 @@ class HomeScreen extends StatelessWidget { const CenteredHeaderDemo(), const MarkdownBodyShrinkWrapDemo(), const CustomBulletListDemo(), - const MarkdownLatexPluginDemo(), ]; @override diff --git a/example/pubspec.lock b/example/pubspec.lock index 29c31a8..04cf61e 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -5,10 +5,10 @@ packages: dependency: transitive description: name: args - sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6 + sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 url: "https://pub.dev" source: hosted - version: "2.6.0" + version: "2.7.0" async: dependency: transitive description: @@ -68,51 +68,12 @@ packages: path: ".." relative: true source: path - version: "1.0.3" - flutter_markdown_plus_latex: - dependency: "direct main" - description: - path: "../../flutter_markdown_plus_latex" - relative: true - source: path - version: "1.0.1" - flutter_math_fork: - dependency: transitive - description: - name: flutter_math_fork - sha256: "6d5f2f1aa57ae539ffb0a04bb39d2da67af74601d685a161aff7ce5bda5fa407" - url: "https://pub.dev" - source: hosted - version: "0.7.4" - flutter_svg: - dependency: transitive - description: - name: flutter_svg - sha256: c200fd79c918a40c5cd50ea0877fa13f81bdaf6f0a5d3dbcc2a13e3285d6aa1b - url: "https://pub.dev" - source: hosted - version: "2.0.17" + version: "1.0.5" flutter_test: dependency: "direct dev" description: flutter source: sdk version: "0.0.0" - http: - dependency: transitive - description: - name: http - sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f - url: "https://pub.dev" - source: hosted - version: "1.3.0" - http_parser: - dependency: transitive - description: - name: http_parser - sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" - url: "https://pub.dev" - source: hosted - version: "4.1.2" leak_tracker: dependency: transitive description: @@ -169,14 +130,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.16.0" - nested: - dependency: transitive - description: - name: nested - sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" - url: "https://pub.dev" - source: hosted - version: "1.0.0" path: dependency: transitive description: @@ -185,30 +138,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.1" - path_parsing: - dependency: transitive - description: - name: path_parsing - sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca" - url: "https://pub.dev" - source: hosted - version: "1.1.0" - petitparser: - dependency: transitive - description: - name: petitparser - sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 - url: "https://pub.dev" - source: hosted - version: "6.0.2" - provider: - dependency: transitive - description: - name: provider - sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c - url: "https://pub.dev" - source: hosted - version: "6.1.2" sky_engine: dependency: transitive description: flutter @@ -262,46 +191,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.4" - tuple: - dependency: transitive - description: - name: tuple - sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151 - url: "https://pub.dev" - source: hosted - version: "2.0.2" - typed_data: - dependency: transitive - description: - name: typed_data - sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 - url: "https://pub.dev" - source: hosted - version: "1.4.0" - vector_graphics: - dependency: transitive - description: - name: vector_graphics - sha256: "44cc7104ff32563122a929e4620cf3efd584194eec6d1d913eb5ba593dbcf6de" - url: "https://pub.dev" - source: hosted - version: "1.1.18" - vector_graphics_codec: - dependency: transitive - description: - name: vector_graphics_codec - sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146" - url: "https://pub.dev" - source: hosted - version: "1.1.13" - vector_graphics_compiler: - dependency: transitive - description: - name: vector_graphics_compiler - sha256: "1b4b9e706a10294258727674a340ae0d6e64a7231980f9f9a3d12e4b42407aad" - url: "https://pub.dev" - source: hosted - version: "1.1.16" vector_math: dependency: transitive description: @@ -318,22 +207,6 @@ packages: url: "https://pub.dev" source: hosted version: "15.0.0" - web: - dependency: transitive - description: - name: web - sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - xml: - dependency: transitive - description: - name: xml - sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 - url: "https://pub.dev" - source: hosted - version: "6.5.0" sdks: dart: ">=3.7.0-0 <4.0.0" flutter: ">=3.27.1" diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 41fe04c..71bf8dc 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -11,7 +11,6 @@ dependencies: sdk: flutter # flutter_markdown_plus: ^1.0.3 - flutter_markdown_plus_latex: ^1.0.2 flutter_markdown_plus: path: ../ diff --git a/lib/src/builder.dart b/lib/src/builder.dart index bc69094..f254fc4 100644 --- a/lib/src/builder.dart +++ b/lib/src/builder.dart @@ -202,6 +202,8 @@ class MarkdownBuilder implements md.NodeVisitor { node.accept(this); } + _addAnonymousBlockIfNeeded(); + assert(_tables.isEmpty); assert(_inlines.isEmpty); assert(!_isInBlockquote); @@ -223,7 +225,8 @@ class MarkdownBuilder implements md.NodeVisitor { } int? start; - if (_isBlockTag(tag)) { + final bool isBlock = _isBlockTag(tag) || (builders.containsKey(tag) && builders[tag]!.isBlockElement()); + if (isBlock) { _addAnonymousBlockIfNeeded(); if (_isListTag(tag)) { _listIndents.add(tag); @@ -370,7 +373,8 @@ class MarkdownBuilder implements md.NodeVisitor { void visitElementAfter(md.Element element) { final String tag = element.tag; - if (_isBlockTag(tag)) { + final bool isBlock = _isBlockTag(tag) || (builders.containsKey(tag) && builders[tag]!.isBlockElement()); + if (isBlock) { _addAnonymousBlockIfNeeded(); final _BlockElement current = _blocks.removeLast(); @@ -747,9 +751,9 @@ class MarkdownBuilder implements md.NodeVisitor { final Padding padding = Padding(padding: textPadding, child: wrap); _addBlockChild(padding); } - - _inlines.clear(); } + + _inlines.clear(); } /// Extracts all spans from an inline element and merges them into a single list diff --git a/pubspec.lock b/pubspec.lock index 3d98089..eee7d18 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,18 +5,18 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: da0d9209ca76bde579f2da330aeb9df62b6319c834fa7baae052021b0462401f + sha256: f0bb5d1648339c8308cc0b9838d8456b3cfe5c91f9dc1a735b4d003269e5da9a url: "https://pub.dev" source: hosted - version: "85.0.0" + version: "88.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: "974859dc0ff5f37bc4313244b3218c791810d03ab3470a579580279ba971a48d" + sha256: "0b7b9c329d2879f8f05d6c05b32ee9ec025f39b077864bdb5ac9a7b63418a98f" url: "https://pub.dev" source: hosted - version: "7.7.1" + version: "8.1.1" args: dependency: transitive description: @@ -45,50 +45,10 @@ packages: dependency: transitive description: name: build - sha256: "6439a9c71a4e6eca8d9490c1b380a25b02675aa688137dfbe66d2062884a23ac" + sha256: dfb67ccc9a78c642193e0c2d94cb9e48c2c818b3178a86097d644acdcde6a8d9 url: "https://pub.dev" source: hosted - version: "3.0.2" - build_config: - dependency: transitive - description: - name: build_config - sha256: "4f64382b97504dc2fcdf487d5aae33418e08b4703fc21249e4db6d804a4d0187" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - build_daemon: - dependency: transitive - description: - name: build_daemon - sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa" - url: "https://pub.dev" - source: hosted - version: "4.0.4" - build_resolvers: - dependency: transitive - description: - name: build_resolvers - sha256: "2b21a125d66a86b9511cc3fb6c668c42e9a1185083922bf60e46d483a81a9712" - url: "https://pub.dev" - source: hosted - version: "3.0.2" - build_runner: - dependency: transitive - description: - name: build_runner - sha256: fd3c09f4bbff7fa6e8d8ef688a0b2e8a6384e6483a25af0dac75fef362bcfe6f - url: "https://pub.dev" - source: hosted - version: "2.7.0" - build_runner_core: - dependency: transitive - description: - name: build_runner_core - sha256: ab27e46c8aa233e610cf6084ee6d8a22c6f873a0a9929241d8855b7a72978ae7 - url: "https://pub.dev" - source: hosted - version: "9.3.0" + version: "4.0.2" built_collection: dependency: transitive description: @@ -101,10 +61,10 @@ packages: dependency: transitive description: name: built_value - sha256: ba95c961bafcd8686d1cf63be864eb59447e795e124d98d6a27d91fcd13602fb + sha256: a30f0a0e38671e89a492c44d005b5545b830a961575bbd8336d42869ff71066d url: "https://pub.dev" source: hosted - version: "8.11.1" + version: "8.12.0" characters: dependency: transitive description: @@ -113,14 +73,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.0" - checked_yaml: - dependency: transitive - description: - name: checked_yaml - sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" - url: "https://pub.dev" - source: hosted - version: "2.0.4" clock: dependency: transitive description: @@ -133,10 +85,10 @@ packages: dependency: transitive description: name: code_builder - sha256: "0ec10bf4a89e4c613960bf1e8b42c64127021740fb21640c29c909826a5eea3e" + sha256: "11654819532ba94c34de52ff5feb52bd81cba1de00ef2ed622fd50295f9d4243" url: "https://pub.dev" source: hosted - version: "4.10.1" + version: "4.11.0" collection: dependency: transitive description: @@ -157,18 +109,18 @@ packages: dependency: transitive description: name: crypto - sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.0.7" dart_style: dependency: transitive description: name: dart_style - sha256: "8a0e5fba27e8ee025d2ffb4ee820b4e6e2cf5e4246a6b1a477eb66866947e0bb" + sha256: c87dfe3d56f183ffe9106a18aebc6db431fc7c98c31a54b952a77f3d54a85697 url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.2" fake_async: dependency: transitive description: @@ -203,14 +155,6 @@ packages: description: flutter source: sdk version: "0.0.0" - frontend_server_client: - dependency: transitive - description: - name: frontend_server_client - sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 - url: "https://pub.dev" - source: hosted - version: "4.0.0" glob: dependency: transitive description: @@ -219,70 +163,30 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.3" - graphs: - dependency: transitive - description: - name: graphs - sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" - url: "https://pub.dev" - source: hosted - version: "2.3.2" - http_multi_server: - dependency: transitive - description: - name: http_multi_server - sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 - url: "https://pub.dev" - source: hosted - version: "3.2.2" - http_parser: - dependency: transitive - description: - name: http_parser - sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" - url: "https://pub.dev" - source: hosted - version: "4.1.2" - io: - dependency: transitive - description: - name: io - sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b - url: "https://pub.dev" - source: hosted - version: "1.0.5" - json_annotation: - dependency: transitive - description: - name: json_annotation - sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" - url: "https://pub.dev" - source: hosted - version: "4.9.0" leak_tracker: dependency: transitive description: name: leak_tracker - sha256: "8dcda04c3fc16c14f48a7bb586d4be1f0d1572731b6d81d51772ef47c02081e0" + sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" url: "https://pub.dev" source: hosted - version: "11.0.1" + version: "10.0.9" leak_tracker_flutter_testing: dependency: "direct dev" description: name: leak_tracker_flutter_testing - sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.10" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.1" logging: dependency: transitive description: @@ -323,22 +227,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.16.0" - mime: - dependency: transitive - description: - name: mime - sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" - url: "https://pub.dev" - source: hosted - version: "2.0.0" mockito: dependency: "direct dev" description: name: mockito - sha256: "2314cbe9165bcd16106513df9cf3c3224713087f09723b128928dc11a4379f99" + sha256: "4feb43bc4eb6c03e832f5fcd637d1abb44b98f9cfa245c58e27382f58859f8f6" url: "https://pub.dev" source: hosted - version: "5.5.0" + version: "5.5.1" package_config: dependency: transitive description: @@ -355,14 +251,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.1" - pool: - dependency: transitive - description: - name: pool - sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" - url: "https://pub.dev" - source: hosted - version: "1.5.1" pub_semver: dependency: transitive description: @@ -371,30 +259,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.0" - pubspec_parse: - dependency: transitive - description: - name: pubspec_parse - sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" - url: "https://pub.dev" - source: hosted - version: "1.5.0" - shelf: - dependency: transitive - description: - name: shelf - sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 - url: "https://pub.dev" - source: hosted - version: "1.4.2" - shelf_web_socket: - dependency: transitive - description: - name: shelf_web_socket - sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" - url: "https://pub.dev" - source: hosted - version: "3.0.0" sky_engine: dependency: transitive description: flutter @@ -404,10 +268,10 @@ packages: dependency: transitive description: name: source_gen - sha256: "7b19d6ba131c6eb98bfcbf8d56c1a7002eba438af2e7ae6f8398b2b0f4f381e3" + sha256: "9098ab86015c4f1d8af6486b547b11100e73b193e1899015033cb3e14ad20243" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "4.0.2" source_span: dependency: transitive description: @@ -440,14 +304,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" - stream_transform: - dependency: transitive - description: - name: stream_transform - sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871 - url: "https://pub.dev" - source: hosted - version: "2.1.1" string_scanner: dependency: transitive description: @@ -468,18 +324,10 @@ packages: dependency: transitive description: name: test_api - sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" - url: "https://pub.dev" - source: hosted - version: "0.7.6" - timing: - dependency: transitive - description: - name: timing - sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "0.7.4" typed_data: dependency: transitive description: @@ -492,50 +340,26 @@ packages: dependency: transitive description: name: vector_math - sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.1.4" vm_service: dependency: transitive description: name: vm_service - sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 url: "https://pub.dev" source: hosted - version: "15.0.2" + version: "15.0.0" watcher: dependency: transitive description: name: watcher - sha256: "5bf046f41320ac97a469d506261797f35254fa61c641741ef32dacda98b7d39c" - url: "https://pub.dev" - source: hosted - version: "1.1.3" - web: - dependency: transitive - description: - name: web - sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - web_socket: - dependency: transitive - description: - name: web_socket - sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" - url: "https://pub.dev" - source: hosted - version: "1.0.1" - web_socket_channel: - dependency: transitive - description: - name: web_socket_channel - sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 + sha256: "592ab6e2892f67760543fb712ff0177f4ec76c031f02f5b4ff8d3fc5eb9fb61a" url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "1.1.4" yaml: dependency: transitive description: @@ -545,5 +369,5 @@ packages: source: hosted version: "3.1.3" sdks: - dart: ">=3.8.0 <4.0.0" + dart: ">=3.7.0 <4.0.0" flutter: ">=3.27.1" From 50a85fa91bd3cb79fffef0ee2298f2a5f15b4a03 Mon Sep 17 00:00:00 2001 From: Prototype v1 Date: Wed, 26 Nov 2025 13:14:10 +0100 Subject: [PATCH 3/3] Updating builder.dart If the parent is null, we fall back to the child style. --- lib/src/builder.dart | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/src/builder.dart b/lib/src/builder.dart index f254fc4..5a02fcb 100644 --- a/lib/src/builder.dart +++ b/lib/src/builder.dart @@ -282,10 +282,8 @@ class MarkdownBuilder implements md.NodeVisitor { } final TextStyle? parentStyle = _inlines.last.style; - _inlines.add(_InlineElement( - tag, - style: parentStyle?.merge(styleSheet.styles[tag]), - )); + final TextStyle? tagStyle = styleSheet.styles[tag]; + _inlines.add(_InlineElement(tag, style: parentStyle != null ? parentStyle.merge(tagStyle) : tagStyle)); } return true;