Flutter_html: Getting '<Unexpected Null Value>' using with Flutter Web

Created on 22 May 2020  ยท  11Comments  ยท  Source: Sub6Resources/flutter_html

Just by using this simple script:

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

class TestScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Html(
        data: '<p>Test</p>',
      ),
    );
  }
}

And trying it on web I get the following error:

โ•โ•โ•ก EXCEPTION CAUGHT BY RENDERING LIBRARY โ•žโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
The following NoSuchMethodError was thrown during performLayout():
'<Unexpected Null Value>'
method not found
Receiver: null
Arguments: []

The relevant error-causing widget was:
  Text
  file:///Users/jan/.pub-cache/hosted/pub.dartlang.org/flutter_html-1.0.0/lib/html_parser.dart:719:19

When the exception was thrown, this was the stack:
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 216:49      throw_
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 58:3        throwNullValueError
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 488:39  _notNull
packages/flutter/src/widgets/widget_span.dart 108:37                              build
packages/flutter/src/painting/text_span.dart 211:14                               build
packages/flutter/src/painting/text_span.dart 211:14                               build
packages/flutter/src/painting/text_painter.dart 558:13                            layout
packages/flutter/src/rendering/paragraph.dart 490:18                              [_layoutText]
packages/flutter/src/rendering/paragraph.dart 513:5                               [_layoutTextWithConstraints]
packages/flutter/src/rendering/paragraph.dart 581:5                               performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 266:13                              performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/shifted_box.dart 394:13                            performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:13                              performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/shifted_box.dart 207:11                            performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/paragraph.dart 530:12                              [_layoutChildren]
packages/flutter/src/rendering/paragraph.dart 580:5                               performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 266:13                              performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/shifted_box.dart 394:13                            performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:13                              performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/paragraph.dart 530:12                              [_layoutChildren]
packages/flutter/src/rendering/paragraph.dart 580:5                               performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 266:13                              performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 266:13                              performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/custom_layout.dart 171:10                          layoutChild
packages/flutter/src/material/scaffold.dart 480:7                                 performLayout
packages/flutter/src/rendering/custom_layout.dart 240:7                           [_callPerformLayout]
packages/flutter/src/rendering/custom_layout.dart 399:14                          performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:13                              performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:13                              performLayout
packages/flutter/src/rendering/proxy_box.dart 1265:11                             performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:13                              performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:13                              performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:13                              performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:13                              performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:13                              performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:13                              performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:13                              performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:13                              performLayout
packages/flutter/src/rendering/proxy_box.dart 3242:13                             performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/widgets/overlay.dart 700:14                                  performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:13                              performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:13                              performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:13                              performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:13                              performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:13                              performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/proxy_box.dart 111:13                              performLayout
packages/flutter/src/rendering/object.dart 1767:7                                 layout
packages/flutter/src/rendering/view.dart 167:48                                   performLayout
packages/flutter/src/rendering/object.dart 1630:7                                 [_layoutWithoutResize]
packages/flutter/src/rendering/object.dart 887:17                                 flushLayout
packages/flutter/src/rendering/binding.dart 402:19                                drawFrame
packages/flutter/src/widgets/binding.dart 865:13                                  drawFrame
packages/flutter/src/rendering/binding.dart 284:5                                 [_handlePersistentFrameCallback]
packages/flutter/src/scheduler/binding.dart 1074:15                               [_invokeFrameCallback]
packages/flutter/src/scheduler/binding.dart 1013:9                                handleDrawFrame
packages/flutter/src/scheduler/binding.dart 822:7                                 <fn>
dart-sdk/lib/_internal/js_dev_runtime/private/isolate_helper.dart 50:19           internalCallback

The following RenderObject was being processed when the exception was fired: RenderParagraph#ab787 relayoutBoundary=up12 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE:
  creator: RichText โ† Text โ† SizedBox โ† StyledText โ† Align โ† DecoratedBox โ† Padding โ† Container โ†
    ContainerSpan โ† RichText โ† Text โ† SizedBox โ† โ‹ฏ
  parentData: <none> (can use size)
  constraints: BoxConstraints(w=1645.0, 0.0<=h<=Infinity)
  size: MISSING
  textAlign: start
  textDirection: ltr
  softWrap: wrapping at box width
  overflow: clip
  locale: en_US
  maxLines: unlimited
This RenderObject had the following descendants (showing up to depth 5):
    text: TextSpan
      TextSpan
        WidgetSpan#ec776
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
Another exception was thrown: Assertion failed: file:///Users/jan/flutter/packages/flutter/lib/src/rendering/box.dart:1694:12
Another exception was thrown: Assertion failed: file:///Users/jan/flutter/packages/flutter/lib/src/rendering/box.dart:1694:12
Another exception was thrown: Assertion failed: file:///Users/jan/flutter/packages/flutter/lib/src/rendering/box.dart:1694:12
Another exception was thrown: Assertion failed: file:///Users/jan/flutter/packages/flutter/lib/src/rendering/box.dart:1694:12
Another exception was thrown: Assertion failed: file:///Users/jan/flutter/packages/flutter/lib/src/rendering/box.dart:1694:12
Another exception was thrown: Assertion failed: file:///Users/jan/flutter/packages/flutter/lib/src/rendering/box.dart:1694:12
Another exception was thrown: Assertion failed: file:///Users/jan/flutter/packages/flutter/lib/src/rendering/box.dart:1694:12
Another exception was thrown: Assertion failed: file:///Users/jan/flutter/packages/flutter/lib/src/rendering/box.dart:1694:12
Another exception was thrown: Assertion failed: file:///Users/jan/flutter/packages/flutter/lib/src/rendering/box.dart:1694:12
Another exception was thrown: Assertion failed: file:///Users/jan/flutter/packages/flutter/lib/src/rendering/box.dart:1694:12
Another exception was thrown: Assertion failed: file:///Users/jan/flutter/packages/flutter/lib/src/rendering/box.dart:1694:12
Another exception was thrown: Assertion failed: file:///Users/jan/flutter/packages/flutter/lib/src/rendering/box.dart:1694:12
Another exception was thrown: NoSuchMethodError: '<Unexpected Null Value>'

This is my flutter doctor

[โœ“] Flutter (Channel beta, 1.18.0-11.1.pre, on Mac OS X 10.15.4 19E287, locale en-US)
[โœ“] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
[โœ“] Xcode - develop for iOS and macOS (Xcode 11.5)
[โœ“] Chrome - develop for the web
[โœ“] Android Studio (version 3.6)
[!] VS Code (version 1.45.1)
    โœ— Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[โœ“] Connected device (3 available)
bug

Most helpful comment

I'll take a look at this sometime this week as it looks critical. From what I understand, we don't officially Web, but if this is the only thing holding us from fully supporting Flutter Web, I don't mind supporting it

All 11 comments

Did you solve this somehow? Stuck at the same after upgrading to 1.0.0.

Any update on this?

I am getting the same issue in 1.0.0 Flutter Web

I can also confirm this issue

I'll take a look at this sometime this week as it looks critical. From what I understand, we don't officially Web, but if this is the only thing holding us from fully supporting Flutter Web, I don't mind supporting it

I can confirm that 0.11 does work on the web

After upgrading to 1.0.0 because to use tags web does not work anymore

I am getting the same issue in 1.0.0 Flutter Web
But works with flutter_html: ^0.9.6

I get a similar error but with IntrinsicHeight after I upgraded to 1.0.0, with Flutter SDK 1.17.3:

โ•โ•โ•โ•โ•โ•โ•โ• Exception caught by rendering library โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
The following NoSuchMethodError was thrown during performLayout():
'<Unexpected Null Value>'
method not found
Receiver: null
Arguments: []

The relevant error-causing widget was
    Html
lib\โ€ฆ\chat\panel_chat_entry.dart:114
When the exception was thrown, this was the stack
...

I can also confirm it was working before with version 0.11.0 still with Flutter SDK 1.17.3.

I'm having a hard time getting my build process working and I don't have too much time this weekend and have other issues that need my attention. If anyone can submit a PR to fix this it would me much appreciated and I would make it a priority to get it merged.

One thing I did notice is that the line it is complaining about is the line that holds a Text.rich constructor, so maybe there is something being deprecated within the Text class in the newer versions of Flutter, or maybe there is a slight API change. It is possible this could be a Flutter issue.

+1. I get this error (or it looks like the same) in all cases. here is the stack trace:
https://gist.github.com/OlegBrony/eb153dcc604c26e02a1cb8c20908aeef

I got code from package example:

const htmlData = """
<div>qweqwe</div>
""";

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: AppBar(
        title: Text('flutter_html Example'),
        centerTitle: true,
      ),
      body: SingleChildScrollView(
        child: Html(
          data: htmlData,
          //Optional parameters:
        ),
      ),
    );
  }
}
Was this page helpful?
0 / 5 - 0 ratings

Related issues

DrobyshevAlex picture DrobyshevAlex  ยท  3Comments

Zerocchi picture Zerocchi  ยท  5Comments

bhanuka96 picture bhanuka96  ยท  4Comments

NicoDreamzZ picture NicoDreamzZ  ยท  5Comments

raLaaaa picture raLaaaa  ยท  3Comments