diff --git a/.gitignore b/.gitignore index f9b6660..d2e7a80 100644 --- a/.gitignore +++ b/.gitignore @@ -34,4 +34,5 @@ lib/generated_plugin_registrant.dart # Exceptions to above rules. -!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages \ No newline at end of file +!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages +example/android/app/.cxx/Debug diff --git a/example/lib/demos/markdown_latex_plugin_demo.dart b/example/lib/demos/markdown_latex_plugin_demo.dart new file mode 100644 index 0000000..4515fc3 --- /dev/null +++ b/example/lib/demos/markdown_latex_plugin_demo.dart @@ -0,0 +1,88 @@ +// 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 4543dad..edf1f68 100644 --- a/example/lib/screens/home_screen.dart +++ b/example/lib/screens/home_screen.dart @@ -8,6 +8,7 @@ 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'; @@ -32,6 +33,7 @@ class HomeScreen extends StatelessWidget { const CenteredHeaderDemo(), const MarkdownBodyShrinkWrapDemo(), const CustomBulletListDemo(), + const MarkdownLatexPluginDemo(), ]; @override diff --git a/example/pubspec.lock b/example/pubspec.lock index bba23ee..6c674fd 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -65,15 +65,56 @@ packages: flutter_markdown_plus: dependency: "direct main" description: - path: ".." - relative: true - source: path + name: flutter_markdown_plus + sha256: "20bcb404e5ba9bc949320b6b314f2bf6a60df048106f1bc09c8310086eac004b" + url: "https://pub.dev" + source: hosted version: "1.0.2" + flutter_markdown_plus_latex: + dependency: "direct main" + description: + name: flutter_markdown_plus_latex + sha256: "39ed8ddccc7e3e71bf812e74ca4541c4aa994e47dbc6c265acb49f42728721f1" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + flutter_math_fork: + dependency: transitive + description: + name: flutter_math_fork + sha256: "284bab89b2fbf1bc3a0baf13d011c1dd324d004e35d177626b77f2fc056366ac" + url: "https://pub.dev" + source: hosted + version: "0.7.3" + flutter_svg: + dependency: transitive + description: + name: flutter_svg + sha256: c200fd79c918a40c5cd50ea0877fa13f81bdaf6f0a5d3dbcc2a13e3285d6aa1b + url: "https://pub.dev" + source: hosted + version: "2.0.17" 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: @@ -130,6 +171,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.15.0" + nested: + dependency: transitive + description: + name: nested + sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" + url: "https://pub.dev" + source: hosted + version: "1.0.0" path: dependency: transitive description: @@ -138,6 +187,30 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.0" + 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 @@ -191,6 +264,46 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.3" + 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: @@ -207,6 +320,22 @@ packages: url: "https://pub.dev" source: hosted version: "14.3.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.4.0 <4.0.0" + dart: ">=3.5.0 <4.0.0" flutter: ">=3.27.1" diff --git a/example/pubspec.yaml b/example/pubspec.yaml index e8a3d05..11598e8 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -9,9 +9,11 @@ environment: dependencies: flutter: sdk: flutter - flutter_markdown_plus: - path: ../ - markdown: ^7.0.0 + + flutter_markdown_plus: ^1.0.2 + flutter_markdown_plus_latex: ^1.0.0 + markdown: ^7.3.0 + dev_dependencies: flutter_test: diff --git a/pubspec.yaml b/pubspec.yaml index 0cd9ac8..f70619c 100644 --- a/pubspec.yaml +++ b/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/foresightmobile/flutter_markdown_plus issue_tracker: https://github.com/foresightmobile/flutter_markdown_plus/issues -version: 1.0.2 +version: 1.0.3 environment: sdk: ^3.4.0 @@ -13,9 +13,9 @@ environment: dependencies: flutter: sdk: flutter - markdown: ^7.1.1 - meta: ^1.3.0 - path: ^1.8.0 + markdown: ^7.3.0 + meta: ^1.15.0 + path: ^1.9.0 dev_dependencies: flutter_test: