| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'package:flutter/material.dart'; |
| |
| import 'markdown_raw.dart'; |
| import 'markdown_style.dart'; |
| |
| /// A [Widget] that renders markdown formatted text. It supports all standard |
| /// markdowns from the original markdown specification found here: |
| /// https://daringfireball.net/projects/markdown/ The rendered markdown is |
| /// placed in a padded scrolling view port. If you do not want the scrolling |
| /// behaviour, use the [MarkdownBody] class instead. |
| class Markdown extends MarkdownRaw { |
| |
| /// Creates a new Markdown [Widget] that renders the markdown formatted string |
| /// passed in as [data]. By default the markdown will be rendered using the |
| /// styles from the current theme, but you can optionally pass in a custom |
| /// [markdownStyle] that specifies colors and fonts to use. Code blocks are |
| /// by default not using syntax highlighting, but it's possible to pass in |
| /// a custom [syntaxHighlighter]. |
| /// |
| /// new Markdown(data: "Hello _world_!"); |
| Markdown({ |
| String data, |
| SyntaxHighlighter syntaxHighlighter, |
| MarkdownStyle markdownStyle, |
| MarkdownLinkCallback onTapLink |
| }) : super( |
| data: data, |
| syntaxHighlighter: syntaxHighlighter, |
| markdownStyle: markdownStyle, |
| onTapLink: onTapLink |
| ); |
| |
| @override |
| MarkdownBody createMarkdownBody({ |
| String data, |
| MarkdownStyle markdownStyle, |
| SyntaxHighlighter syntaxHighlighter, |
| MarkdownLinkCallback onTapLink |
| }) { |
| return new MarkdownBody( |
| data: data, |
| markdownStyle: markdownStyle, |
| syntaxHighlighter: syntaxHighlighter, |
| onTapLink: onTapLink |
| ); |
| } |
| } |
| |
| /// A [Widget] that renders markdown formatted text. It supports all standard |
| /// markdowns from the original markdown specification found here: |
| /// https://daringfireball.net/projects/markdown/ This class doesn't implement |
| /// any scrolling behavior, if you want scrolling either wrap the widget in |
| /// a [ScrollableViewport] or use the [Markdown] widget. |
| class MarkdownBody extends MarkdownBodyRaw { |
| |
| /// Creates a new Markdown [Widget] that renders the markdown formatted string |
| /// passed in as [data]. By default the markdown will be rendered using the |
| /// styles from the current theme, but you can optionally pass in a custom |
| /// [markdownStyle] that specifies colors and fonts to use. Code blocks are |
| /// by default not using syntax highlighting, but it's possible to pass in |
| /// a custom [syntaxHighlighter]. |
| /// |
| /// Typically, you may want to wrap the [MarkdownBody] widget in a [Padding] and |
| /// a [ScrollableViewport], or use the [Markdown] class |
| /// |
| /// new ScrollableViewport( |
| /// child: new Padding( |
| /// padding: new EdgeInsets.all(16.0), |
| /// child: new Markdown(data: markdownSource) |
| /// ) |
| /// ) |
| MarkdownBody({ |
| String data, |
| SyntaxHighlighter syntaxHighlighter, |
| MarkdownStyle markdownStyle, |
| MarkdownLinkCallback onTapLink |
| }) : super( |
| data: data, |
| syntaxHighlighter: syntaxHighlighter, |
| markdownStyle: markdownStyle, |
| onTapLink: onTapLink |
| ); |
| |
| @override |
| MarkdownStyle createDefaultStyle(BuildContext context) { |
| return new MarkdownStyle.defaultFromTheme(Theme.of(context)); |
| } |
| } |