markdown_style.dart 2.5 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14
// 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_style_raw.dart';

/// Style used for rendering markdown formatted text using the [MarkdownBody]
/// widget.
class MarkdownStyle extends MarkdownStyleRaw{

  /// Creates a [MarkdownStyle] from the [TextStyle]s in the provided [theme].
  MarkdownStyle.defaultFromTheme(ThemeData theme) : super(
    a: new TextStyle(color: Colors.blue[500]),
15
    p: theme.textTheme.body1,
16 17 18
    code: new TextStyle(
      color: Colors.grey[700],
      fontFamily: "monospace",
19
      fontSize: theme.textTheme.body1.fontSize * 0.85
20
    ),
21 22 23 24 25 26
    h1: theme.textTheme.headline,
    h2: theme.textTheme.title,
    h3: theme.textTheme.subhead,
    h4: theme.textTheme.body2,
    h5: theme.textTheme.body2,
    h6: theme.textTheme.body2,
27 28
    em: new TextStyle(fontStyle: FontStyle.italic),
    strong: new TextStyle(fontWeight: FontWeight.bold),
29
    blockquote: theme.textTheme.body1,
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
    blockSpacing: 8.0,
    listIndent: 32.0,
    blockquotePadding: 8.0,
    blockquoteDecoration: new BoxDecoration(
      backgroundColor: Colors.blue[100],
      borderRadius: 2.0
    ),
    codeblockPadding: 8.0,
    codeblockDecoration: new BoxDecoration(
      backgroundColor: Colors.grey[100],
      borderRadius: 2.0
    )
  );

  /// Creates a [MarkdownStyle] from the [TextStyle]s in the provided [theme].
  /// This style uses larger fonts for the headings than in
  /// [MarkdownStyle.defaultFromTheme].
  MarkdownStyle.largeFromTheme(ThemeData theme) : super (
    a: new TextStyle(color: Colors.blue[500]),
49
    p: theme.textTheme.body1,
50 51 52
    code: new TextStyle(
      color: Colors.grey[700],
      fontFamily: "monospace",
53
      fontSize: theme.textTheme.body1.fontSize * 0.85
54
    ),
55 56 57 58 59 60
    h1: theme.textTheme.display3,
    h2: theme.textTheme.display2,
    h3: theme.textTheme.display1,
    h4: theme.textTheme.headline,
    h5: theme.textTheme.title,
    h6: theme.textTheme.subhead,
61 62
    em: new TextStyle(fontStyle: FontStyle.italic),
    strong: new TextStyle(fontWeight: FontWeight.bold),
63
    blockquote: theme.textTheme.body1,
64 65 66 67 68 69 70 71 72 73 74 75 76 77
    blockSpacing: 8.0,
    listIndent: 32.0,
    blockquotePadding: 8.0,
    blockquoteDecoration: new BoxDecoration(
      backgroundColor: Colors.blue[100],
      borderRadius: 2.0
    ),
    codeblockPadding: 8.0,
    codeblockDecoration: new BoxDecoration(
      backgroundColor: Colors.grey[100],
      borderRadius: 2.0
    )
  );
}