A Flutter widget for rendering HTML5 and CSS3 as Flutter widgets

  Render, Widgets

HTML5

A Flutter widget for rendering HTML and CSS as Flutter widgets.

Table of Contents:

  • Installing
  • Currently Supported HTML Tags
  • Currently Supported CSS Attributes
  • Currently Supported Inline CSS Attributes

Installing:

Add the following to your pubspec.yaml file:

    ...
    dependencies:
      html5_api: ^0.0.1

Currently Supported HTML Tags:

aabbracronymaddressarticleasideaudiobbdibdobig
blockquotebodybrcaptioncitecodedatadddeldetailsdfn
divdldtemfigcaptionfigurefooterfonth1h2h3
h4h5h6headerhriiframeimginskbdli
mainmarknavnoscriptolppreqrprtruby
ssampsectionsmallspanstrikestrongsubsupsummarysvg
tabletbodytdtemplatetfootththeadtimetrttu
ulvarvideomath:mrowmsupmsubmovermundermsubsupmoverunder
mfracmlongdivmsqrtmrootmimnmo

Currently Supported CSS Attributes:

background-colorcolordirectiondisplayfont-familyfont-feature-settingsfont-size
font-stylefont-weightheightletter-spacingline-heightlist-style-typelist-style-position
paddingmargintext-aligntext-decorationtext-decoration-colortext-decoration-styletext-decoration-thickness
text-shadowvertical-alignwhite-spacewidthword-spacing

Currently Supported Inline CSS Attributes:

background-colorborder (including specific directions)colordirectiondisplayfont-familyfont-feature-settings
font-sizefont-stylefont-weightline-heightlist-style-typelist-style-positionpadding (including specific directions)
margin (including specific directions)text-aligntext-decorationtext-decoration-colortext-decoration-styletext-shadow

Don’t see a tag or attribute you need? File a feature request or contribute to the project!

Usage

import 'html5/html5.dart';

Widget html = Html(
    data: """
       <h1>Table support:</h1>
       <table>
       <colgroup>
       <col width="50%" />
       <col span="2" width="25%" />
       </colgroup>
       <thead>
       <tr><th>One</th><th>Two</th><th>Three</th></tr>
       </thead>
       <tbody>
       <tr>
       <td rowspan='2'>Rowspan<br>Rowspan<br>Rowspan<br>Rowspan<br>Rowspan<br>Rowspan<br>Rowspan<br>Rowspan<br>Rowspan<br>Rowspan</td><td>Data</td><td>Data</td>
       </tr>
       <tr>
       <td colspan="2"><img alt='Google' src='https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png' /></td>
       </tr>
       </tbody>
       <tfoot>
       <tr><td>fData</td><td>fData</td><td>fData</td></tr>
       </tfoot>
       </table>""",
    style: {
      // tables will have the below background color
      "table": Style(
        backgroundColor: Color.fromARGB(0x50, 0xee, 0xee, 0xee),
      ),
      // some other granular customizations are also possible
      "tr": Style(
        border: Border(bottom: BorderSide(color: Colors.grey)),
      ),
      "th": Style(
        padding: EdgeInsets.all(6),
        backgroundColor: Colors.grey,
      ),
      "td": Style(
        padding: EdgeInsets.all(6),
        alignment: Alignment.topLeft,
      ),
      // text that renders h1 elements will be red
      "h1": Style(color: Colors.red),
    }
);

Download source code on GitHub

https://github.com/rey-xi/html5