flutter_html_renderer 0.1.2

  • Readme
  • Changelog
  • Example
  • Installing
  • 77

flutter_html_renderer #

Simple HTML renderer for flutter. Converts HTML into Widgets.

Warning: This is alpha version! It is not recommended to use in production projects as API may still change!

Why #

Pub now offers variety of HTML parsing plugins. In time of creation of this plugin, there was no available solution that had all of the following points:

  • Simple and understandable codebase
  • Optimized rendering
  • Extensibility
  • Robust HTML implementation

Installation #

To use this plugin, add flutter_html_renderer as a dependency in your pubspec.yaml file.

Example #

// IMPORT PACKAGE
import 'package:flutter_html_renderer/flutter_html_renderer.dart';

// INITIALIZE FROM HTML STRING.
Widget widget = HtmlRenderer(
    initialHtmlString: htmlString,
),

// INITIALIZE FROM HTML DOM NODES.
import 'package:html/parser.dart' as htmlParser;
HtmlRenderer(
    initialNodes: htmlParser.parse(htmlString).nodes, //you may have NodeList from other custom logic
),

// ENABLE WIDGET CACHE.
Widget widget = HtmlRenderer(
    initialHtmlString: htmlString,
    keepAlive: true
),

// ADD CUSTOM LINK CLICK HANDLER
HtmlRenderer(
    initialHtmlString: htmlString,
    linkHandler: (String url) async {
      print("Custom link handling");
      return true;
  },
),

// CUSTOM RENDERING FOR DIV
class DivDescriptor extends ElementDescriptor {
      const DivDescriptor()
      : super(
        name: 'div',
        supported: true,
        isBlock: true,
      );
    
      @override
      Future<Widget> render(
          dom.Element element,
          BuildContext context,
          WidgetsFactory widgetsFactory,
          LinkHandler linkHandler,
          RenderingContext renderingContext) async {
            if(element.attributes['id'] == 'someSpecialFeature'){
                return Text('To use this feature visit our website!');
            }
            return null; // use default rendering
        );
      }
    
}

// REPLACE DEFAULT DESCRIPTOR WITH CUSTOM
WidgetsFactory.allElements['div'] = DivDescriptor(); 
// INITIALIZE RENDERER NORMALY
HtmlRenderer(
    initialHtmlString: htmlString,
    keepAlive: true,
    linkHandler: (String url) async {
      print("Custom link handling");
      return true;
  },
),

List of currently supported elements #

  • Block level

    • body
    • html
    • address
    • article
    • aside
    • blockquote
    • details
    • dialog
    • div
    • dl
    • dt
    • fieldset
    • figcaption
    • figure
    • footer
    • h1, h2, h3, h4, h5, h6
    • header
    • hgroup
    • main
    • nav
    • p
    • section
    • iframe (partial support: only iframes embeding YouTube videos)
  • Inline

    • abbr
    • acronym
    • cite
    • img
    • label
    • span

Roadmap #

  • v 0.2.0 - support for formating elements (b, i, strong, ...)
  • v 0.3.0 - support for ul, ol, li
  • v 0.4.0 - support for tables
  • v 0.5.0 - polishing of default rendering of all element supported so far

Support for other tags will have to analyzed first. Roadmap may change depending on reported bugs and/or feature requests.

  • Elements that have planned support, but are not yet in roadmap
    • iframe
    • video
    • audio

Form elements are currently not planned before first stable release.

CSS and advanced styling support is not planned before first stable release

TODOs #

  • Add tests

Contribution and Support #

  • Contributions are welcome!
  • If you want to contribute code please create a PR
  • If you find a bug or want a feature, please fill an issue

[0.1.2] #

  • Upgraded dependencies

[0.1.1] #

  • Fixed wrapping issues
  • Implemented health suggestions on pub analysis

[0.1.0] #

  • Support for iframes embeding YouTube videos

[0.0.3] #

  • Changed default example readme

[0.0.2] #

  • Added example
  • Minor improvement of p tag rendering

[0.0.1] #

  • Initial alpha release of library.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_html_renderer/flutter_html_renderer.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'flutter_html_renderer demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  static const String htmlDemo = '''
  <h2>YouTube embed code</h2>
  <iframe src="https://www.youtube.com/embed/b_sQ9bMltGU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
  <h2>Image</h2>
  <img src="https://via.placeholder.com/150">
  <h2>Text</h2>
  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum nec egestas erat, gravida tempus ipsum. Suspendisse ac pharetra quam. Ut pellentesque interdum est non sodales. Nunc nec lacus in neque dapibus cursus id eget neque. Curabitur luctus ante id orci eleifend, nec consequat arcu ullamcorper. Pellentesque quis mi ex. In mattis sollicitudin metus at molestie. Cras maximus felis eget leo lacinia egestas. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Maecenas ipsum ligula, sodales quis auctor in, vestibulum nec ligula. Pellentesque aliquet justo in faucibus bibendum. Praesent risus arcu, interdum eget elit id, dictum mollis ex. Pellentesque in sodales diam.</p>
  <p>Praesent quis augue vitae quam consectetur aliquet. Fusce sit amet orci quis leo porttitor vestibulum quis nec justo. Donec gravida in leo at rhoncus. Pellentesque faucibus porttitor sapien, sit amet interdum lacus lacinia at. Duis sagittis dolor massa, ut aliquet orci egestas a. Aenean orci metus, malesuada quis sapien in, dignissim ultrices elit. Nullam tincidunt dictum gravida. Mauris cursus libero enim, ultrices posuere sapien sodales ut. Suspendisse lacinia odio id fringilla pharetra. Aliquam iaculis augue ac enim porta, pulvinar hendrerit nibh rutrum. Donec quis lorem eget augue interdum malesuada. Etiam tincidunt sed diam et lacinia. Fusce nec lacus tellus. Vestibulum odio magna, molestie et orci sit amet, porta ullamcorper nisl. Donec porta quam in molestie laoreet.</p>
  <p>Duis pretium suscipit euismod. Donec sodales risus ut felis porttitor rhoncus. Cras ullamcorper egestas lacus id euismod. Maecenas aliquet tellus odio, eget vulputate orci consequat quis. Duis interdum, ipsum eget rutrum scelerisque, dolor justo malesuada enim, eget tempus purus magna vitae lorem. Maecenas quis neque a purus tempor scelerisque vel ut libero. Suspendisse posuere nisl ut varius molestie.</p>
 ''';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(title: Text("flutter_html_renderer demo")),
        body: ListView(
          padding: EdgeInsets.symmetric(horizontal: 8),
          children: [
            HtmlRenderer(
              initialHtmlString: htmlDemo,
            ),
          ],
        ));
  }
}

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  flutter_html_renderer: ^0.1.2

2. Install it

You can install packages from the command line:

with Flutter:


$ flutter pub get

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:flutter_html_renderer/flutter_html_renderer.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
66
Health:
Code health derived from static analysis. [more]
100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
70
Overall:
Weighted score of the above. [more]
77
Learn more about scoring.

We analyzed this package on Apr 8, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.7.1
  • pana: 0.13.6
  • Flutter: 1.12.13+hotfix.8

Health suggestions

Format lib/flutter_html_renderer.dart.

Run flutter format to format lib/flutter_html_renderer.dart.

Format lib/widgets_factory.dart.

Run flutter format to format lib/widgets_factory.dart.

Maintenance issues and suggestions

Make sure dartdoc successfully runs on your package's source files. (-10 points)

exitCode: 255 stdout: parsing /tmp/pub-dartlang-dartdocICWUDC/pkg/lib/widgets_factory.dart... parsing /tmp/pub-dartlang-dartdocICWUDC/pkg/lib/flutter_html_renderer.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/collection/collection.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/developer/developer.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/internal/internal.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/_interceptors/interceptors.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/io/io.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/isolate/isolate.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/convert/convert.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/async/async.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/typed_data/typed_data.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/_empty.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/js_util/js_util_dart2js.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/html/html_dart2js.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/math/math.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/core/core.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/_http/http.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/ui/ui.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/js/js_dart2js.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/ffi/ffi.dart... [...] parsing /tmp/pub-cache-dirRZZLZC/hosted/pub.dartlang.org/http-0.12.0+4/lib/src/browser_client.dart... parsing /tmp/pub-cache-dirRZZLZC/hosted/pub.dartlang.org/pedantic-1.9.0/lib/pedantic.dart... parsing /tmp/pub-cache-dirRZZLZC/hosted/pub.dartlang.org/flutter_svg-0.13.1/lib/src/avd/xml_parsers.dart... parsing /tmp/pub-cache-dirRZZLZC/hosted/pub.dartlang.org/flutter_svg-0.13.1/lib/src/avd_parser.dart... parsing /tmp/pub-cache-dirRZZLZC/hosted/pub.dartlang.org/petitparser-3.0.2/lib/src/reflection/iterable.dart... parsing /tmp/pub-cache-dirRZZLZC/hosted/pub.dartlang.org/petitparser-3.0.2/lib/src/reflection/optimize.dart... parsing /tmp/pub-cache-dirRZZLZC/hosted/pub.dartlang.org/petitparser-3.0.2/lib/src/reflection/transform.dart... parsing /tmp/pub-cache-dirRZZLZC/hosted/pub.dartlang.org/petitparser-3.0.2/lib/src/debug/profile.dart... parsing /tmp/pub-cache-dirRZZLZC/hosted/pub.dartlang.org/petitparser-3.0.2/lib/src/debug/output.dart... parsing /tmp/pub-cache-dirRZZLZC/hosted/pub.dartlang.org/petitparser-3.0.2/lib/src/debug/progress.dart... parsing /tmp/pub-cache-dirRZZLZC/hosted/pub.dartlang.org/petitparser-3.0.2/lib/src/debug/trace.dart... parsing /tmp/pub-cache-dirRZZLZC/hosted/pub.dartlang.org/sqflite_common-1.0.0+1/lib/src/mixin/import_mixin.dart... parsing /tmp/pub-cache-dirRZZLZC/hosted/pub.dartlang.org/sqflite_common-1.0.0+1/lib/src/mixin/constant.dart... parsing /tmp/pub-cache-dirRZZLZC/hosted/pub.dartlang.org/synchronized-2.2.0/lib/src/extension_impl.dart... Initialized dartdoc with 920 libraries in 132.9 seconds documenting flutter_html_renderer Generating docs for library flutter_html_renderer from package:flutter_html_renderer/widgets_factory.dart... Generating docs for library flutter_html_renderer from package:flutter_html_renderer/flutter_html_renderer.dart... Validating docs... Documented 2 public libraries in 10.6 seconds stderr: Documenting flutter_html_renderer... warning: private API of package:Dart is reexported by libraries in other packages: from E: (file:///flutter/bin/cache/pkg/sky_engine/lib/collection/collections.dart:13:28) referred to by collection: (file:///tmp/pub-cache-dirRZZLZC/hosted/pub.dartlang.org/collection-1.14.11/lib/collection.dart:1:1) referred to by dart.pkg.collection.wrappers: (file:///tmp/pub-cache-dirRZZLZC/hosted/pub.dartlang.org/collection-1.14.11/lib/wrappers.dart:7:9) warning: private API of package:Dart is reexported by libraries in other packages: from K: (file:///flutter/bin/cache/pkg/sky_engine/lib/collection/maps.dart:374:27) referred to by collection: (file:///tmp/pub-cache-dirRZZLZC/hosted/pub.dartlang.org/collection-1.14.11/lib/collection.dart:1:1) referred to by dart.pkg.collection.wrappers: (file:///tmp/pub-cache-dirRZZLZC/hosted/pub.dartlang.org/collection-1.14.11/lib/wrappers.dart:7:9) warning: private API of package:Dart is reexported by libraries in other packages: from V: (file:///flutter/bin/cache/pkg/sky_engine/lib/collection/maps.dart:374:30) referred to by collection: (file:///tmp/pub-cache-dirRZZLZC/hosted/pub.dartlang.org/collection-1.14.11/lib/collection.dart:1:1) referred to by dart.pkg.collection.wrappers: (file:///tmp/pub-cache-dirRZZLZC/hosted/pub.dartlang.org/collection-1.14.11/lib/wrappers.dart:7:9) warning: ambiguous reexport of dart-ui.hashList, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.hashList: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/hash_codes.dart:114:5) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) Use {@canonicalFor dart:ui.hashList} in the desired library's documentation to resolve the ambiguity and/or override dartdoc's decision, or structure your package so the reexport is less ambiguous. The symbol will still be referenced in all candidates -- this only controls the location where it will be written and which library will be displayed in navigation for the relevant pages. The flag --ambiguous-reexport-scorer-min-confidence allows you to set the threshold at which this warning will appear. warning: ambiguous reexport of dart-ui.hashValues, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.hashValues: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/hash_codes.dart:42:5) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.VoidCallback, canonicalization candidates: (cupertino, foundation, material, painting, rendering, scheduler, widgets) -> widgets (confidence 0.000) from dart-ui.VoidCallback: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/window.dart:8:9) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) foundation: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) scheduler: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.AccessibilityFeatures, canonicalization candidates: (rendering, semantics) -> semantics (confidence 0.000) from dart-ui.AccessibilityFeatures: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/window.dart:1208:7) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) semantics: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.FontWeight, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.FontWeight: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:17:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.Locale, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.Locale: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/window.dart:248:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.Offset, canonicalization candidates: (cupertino, gestures, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.Offset: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/geometry.dart:119:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) gestures: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.Radius, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.Radius: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/geometry.dart:895:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.Rect, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.Rect: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/geometry.dart:621:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.RRect, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.RRect: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/geometry.dart:1018:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.RSTransform, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.RSTransform: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/geometry.dart:1645:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.Size, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.Size: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/geometry.dart:347:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.TextBox, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.TextBox: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:1220:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.TextDecoration, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.TextDecoration: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:358:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.TextPosition, canonicalization candidates: (cupertino, material, painting, rendering, services, widgets) -> widgets (confidence 0.000) from dart-ui.TextPosition: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:1364:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) services: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.TextRange, canonicalization candidates: (cupertino, material, painting, rendering, services, widgets) -> widgets (confidence 0.000) from dart-ui.TextRange: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:1410:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) services: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.AppLifecycleState, canonicalization candidates: (cupertino, material, scheduler, widgets) -> widgets (confidence 0.000) from dart-ui.AppLifecycleState: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/window.dart:154:6) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) scheduler: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.Brightness, canonicalization candidates: (cupertino, material, services) -> services (confidence 0.000) from dart-ui.Brightness: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/window.dart:1272:6) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) services: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.FontStyle, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.FontStyle: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:8:6) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.PlaceholderAlignment, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.PlaceholderAlignment: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:1619:6) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.TextAffinity, canonicalization candidates: (cupertino, material, painting, rendering, services, widgets) -> widgets (confidence 0.000) from dart-ui.TextAffinity: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:1322:6) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) services: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.TextAlign, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.TextAlign: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:317:6) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.TextBaseline, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.TextBaseline: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:349:6) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.TextDecorationStyle, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.TextDecorationStyle: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:417:6) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.TextDirection, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.TextDirection: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:1208:6) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: flutter_html_renderer has no library level documentation comments, from flutter_html_renderer: (file:///tmp/pub-dartlang-dartdocICWUDC/pkg/lib/widgets_factory.dart:1:9) warning: unresolved doc reference [TransitionToImage], from flutter_html_renderer.WidgetsFactory: (file:///tmp/pub-dartlang-dartdocICWUDC/pkg/lib/widgets_factory.dart:63:7) warning: unresolved doc reference [AdvancedNetworkImage], from flutter_html_renderer.WidgetsFactory: (file:///tmp/pub-dartlang-dartdocICWUDC/pkg/lib/widgets_factory.dart:63:7) warning: no canonical library found for flutter_html_renderer.AnchorDescriptor.hashCode, not linking, from flutter_html_renderer.AnchorDescriptor.hashCode: (file:///flutter/bin/cache/pkg/sky_engine/lib/core/object.dart:94:20) warning: no canonical library found for flutter_html_renderer.AnchorDescriptor.runtimeType, not linking, from flutter_html_renderer.AnchorDescriptor.runtimeType: (file:///flutter/bin/cache/pkg/sky_engine/lib/core/object.dart:116:21) warning: no canonical library found for flutter_html_renderer.AnchorDescriptor.noSuchMethod, not linking, from flutter_html_renderer.AnchorDescriptor.noSuchMethod: (file:///flutter/bin/cache/pkg/sky_engine/lib/core/object.dart:111:20) warning: no canonical library found for flutter_html_renderer.AnchorDescriptor.toString, not linking, from flutter_html_renderer.AnchorDescriptor.toString: (file:///flutter/bin/cache/pkg/sky_engine/lib/core/object.dart:99:19) warning: no canonical library found for flutter_html_renderer.AnchorDescriptor.==, not linking, from flutter_html_renderer.AnchorDescriptor.==: (file:///flutter/bin/cache/pkg/sky_engine/lib/core/object.dart:62:26) warning: flutter_html_renderer has no library level documentation comments, from flutter_html_renderer: (file:///tmp/pub-dartlang-dartdocICWUDC/pkg/lib/flutter_html_renderer.dart:1:9) error: failed to write file at: flutter_html_renderer/flutter_html_renderer-library.html for symbol flutter_html_renderer: (file:///tmp/pub-dartlang-dartdocICWUDC/pkg/lib/flutter_html_renderer.dart:1:9) conflicting with file already generated by flutter_html_renderer: (file:///tmp/pub-dartlang-dartdocICWUDC/pkg/lib/widgets_factory.dart:1:9) Dartdoc generates a path and filename to write to for each symbol. flutter_html_renderer conflicts with another symbol in the generated path, and therefore can not be written out. Changing the name, library name, or class name (if appropriate) of one of the conflicting items can resolve the conflict. Alternatively, use the @nodoc tag in one symbol's documentation comments to hide it. warning: no canonical library found for flutter_html_renderer.HtmlRenderer.key, not linking, from flutter_html_renderer.HtmlRenderer.key: (file:///flutter/packages/flutter/lib/src/widgets/framework.dart:414:13) warning: no canonical library found for flutter_html_renderer.HtmlRenderer.createElement, not linking, from flutter_html_renderer.HtmlRenderer.createElement: (file:///flutter/packages/flutter/lib/src/widgets/framework.dart:809:19) warning: no canonical library found for flutter_html_renderer.HtmlRenderer.debugDescribeChildren, not linking, from flutter_html_renderer.HtmlRenderer.debugDescribeChildren: (file:///flutter/packages/flutter/lib/src/foundation/diagnostics.dart:3439:25) warning: no canonical library found for flutter_html_renderer.HtmlRenderer.debugFillProperties, not linking, from flutter_html_renderer.HtmlRenderer.debugFillProperties: (file:///flutter/packages/flutter/lib/src/widgets/framework.dart:433:8) warning: no canonical library found for flutter_html_renderer.HtmlRenderer.toDiagnosticsNode, not linking, from flutter_html_renderer.HtmlRenderer.toDiagnosticsNode: (file:///flutter/packages/flutter/lib/src/foundation/diagnostics.dart:3413:19) warning: no canonical library found for flutter_html_renderer.HtmlRenderer.toString, not linking, from flutter_html_renderer.HtmlRenderer.toString: (file:///flutter/packages/flutter/lib/src/foundation/diagnostics.dart:3092:10) warning: no canonical library found for flutter_html_renderer.HtmlRenderer.toStringDeep, not linking, from flutter_html_renderer.HtmlRenderer.toStringDeep: (file:///flutter/packages/flutter/lib/src/foundation/diagnostics.dart:3401:10) warning: no canonical library found for flutter_html_renderer.HtmlRenderer.toStringShallow, not linking, from flutter_html_renderer.HtmlRenderer.toStringShallow: (file:///flutter/packages/flutter/lib/src/foundation/diagnostics.dart:3365:10) warning: no canonical library found for flutter_html_renderer.HtmlRenderer.toStringShort, not linking, from flutter_html_renderer.HtmlRenderer.toStringShort: (file:///flutter/packages/flutter/lib/src/widgets/framework.dart:428:10) warning: no canonical library found for flutter_html_renderer.HtmlRendererState.context, not linking, from flutter_html_renderer.HtmlRendererState.context: (file:///flutter/packages/flutter/lib/src/widgets/framework.dart:977:20) warning: no canonical library found for flutter_html_renderer.HtmlRendererState.mounted, not linking, from flutter_html_renderer.HtmlRendererState.mounted: (file:///flutter/packages/flutter/lib/src/widgets/framework.dart:989:12) warning: no canonical library found for flutter_html_renderer.HtmlRendererState.widget, not linking, from flutter_html_renderer.HtmlRendererState.widget: (file:///flutter/packages/flutter/lib/src/widgets/framework.dart:954:9) warning: unresolved doc reference [InheritedWidget] from flutter_html_renderer.HtmlRendererState.build: (file:///tmp/pub-dartlang-dartdocICWUDC/pkg/lib/flutter_html_renderer.dart:66:10) in documentation inherited from framework.State.build: (file:///flutter/packages/flutter/lib/src/widgets/framework.dart:1324:10) warning: unresolved doc reference [AnimatedWidget] from flutter_html_renderer.HtmlRendererState.build: (file:///tmp/pub-dartlang-dartdocICWUDC/pkg/lib/flutter_html_renderer.dart:66:10) in documentation inherited from framework.State.build: (file:///flutter/packages/flutter/lib/src/widgets/framework.dart:1324:10) warning: no canonical library found for flutter_html_renderer.HtmlRendererState.deactivate, not linking, from flutter_html_renderer.HtmlRendererState.deactivate: (file:///flutter/packages/flutter/lib/src/widgets/automatic_keep_alive.dart:386:8) warning: no canonical library found for flutter_html_renderer.HtmlRendererState.debugFillProperties, not linking, from flutter_html_renderer.HtmlRendererState.debugFillProperties: (file:///flutter/packages/flutter/lib/src/widgets/framework.dart:1345:8) warning: no canonical library found for flutter_html_renderer.HtmlRendererState.didChangeDependencies, not linking, from flutter_html_renderer.HtmlRendererState.didChangeDependencies: (file:///flutter/packages/flutter/lib/src/widgets/framework.dart:1342:8) warning: no canonical library found for flutter_html_renderer.HtmlRendererState.didUpdateWidget, not linking, from flutter_html_renderer.HtmlRendererState.didUpdateWidget: (file:///flutter/packages/flutter/lib/src/widgets/framework.dart:1048:8) warning: no canonical library found for flutter_html_renderer.HtmlRendererState.dispose, not linking, from flutter_html_renderer.HtmlRendererState.dispose: (file:///flutter/packages/flutter/lib/src/widgets/framework.dart:1216:8) warning: no canonical library found for flutter_html_renderer.HtmlRendererState.reassemble, not linking, from flutter_html_renderer.HtmlRendererState.reassemble: (file:///flutter/packages/flutter/lib/src/widgets/framework.dart:1063:8) warning: no canonical library found for flutter_html_renderer.HtmlRendererState.setState, not linking, from flutter_html_renderer.HtmlRendererState.setState: (file:///flutter/packages/flutter/lib/src/widgets/framework.dart:1108:8) warning: no canonical library found for flutter_html_renderer.HtmlRendererState.toDiagnosticsNode, not linking, from flutter_html_renderer.HtmlRendererState.toDiagnosticsNode: (file:///flutter/packages/flutter/lib/src/foundation/diagnostics.dart:3110:19) warning: no canonical library found for flutter_html_renderer.HtmlRendererState.toStringShort, not linking, from flutter_html_renderer.HtmlRendererState.toStringShort: (file:///flutter/packages/flutter/lib/src/foundation/diagnostics.dart:3089:10) warning: no canonical library found for flutter_html_renderer.HtmlRendererState.updateKeepAlive, not linking, from flutter_html_renderer.HtmlRendererState.updateKeepAlive: (file:///flutter/packages/flutter/lib/src/widgets/automatic_keep_alive.dart:368:8) found 61 warnings and 1 error Unhandled exception: dartdoc encountered 1 errors while processing. #0 Dartdoc.generateDocs (package:dartdoc/dartdoc.dart:202:7)

Support latest dependencies. (-20 points)

The version constraint in pubspec.yaml does not support the latest published versions for 2 dependencies (flutter_advanced_networkimage, youtube_player_flutter).

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.1.0 <3.0.0
flutter 0.0.0
flutter_advanced_networkimage ^0.5.0 0.5.0 0.7.0
html ^0.14.0 0.14.0+3
url_launcher ^5.1.2 5.4.2
youtube_player_flutter ^4.1.0 4.1.0 6.1.0+4
Transitive dependencies
async 2.4.1
cached_network_image 1.1.3 2.0.0
charcode 1.1.3
collection 1.14.11 1.14.12
convert 2.1.1
crypto 2.1.4
csslib 0.16.1
flutter_cache_manager 1.1.3
flutter_svg 0.13.1 0.17.4
flutter_web_plugins 0.0.0
http 0.12.0+4
http_parser 3.1.4
meta 1.1.8
path 1.6.4
path_drawing 0.4.1
path_parsing 0.1.4
path_provider 1.6.5
path_provider_macos 0.0.4
path_provider_platform_interface 1.0.1
pedantic 1.9.0
petitparser 3.0.2
platform 2.2.1
plugin_platform_interface 1.0.2
sky_engine 0.0.99
source_span 1.7.0
sqflite 1.3.0
sqflite_common 1.0.0+1
string_scanner 1.0.5
synchronized 2.2.0
term_glyph 1.1.0
typed_data 1.1.6
url_launcher_macos 0.0.1+4
url_launcher_platform_interface 1.0.6
url_launcher_web 0.1.1+1
uuid 2.0.4
vector_math 2.0.8
webview_flutter 0.3.19+9
xml 3.7.0 4.1.0
Dev dependencies
flutter_test