Skip to content

[CanvasKit] NetworkImage.load gets stuck if image downloading fails #65537

@vs-krasnov

Description

@vs-krasnov

Steps to Reproduce

  1. Paste the following code:
void main() {
  runApp(
    MaterialApp(
      home: Scaffold(
        body: Center(
          child: Image.network(
            "http://bad-url.com",
            loadingBuilder: (context, child, loadingProgress) {
              return Container(height: 100, width: 100, color: Colors.yellow);
            },
            errorBuilder: (context, error, stackTrace) {
              return Container(height: 100, width: 100, color: Colors.red);
            },
          ),
        ),
      ),
    ),
  );
}
  1. Run the application: flutter run -d chrome --release --dart-define=FLUTTER_WEB_USE_SKIA=true

Expected results (DomCanvas):
image

Actual results (CanvasKit):
image

In the code above I use Image.network for convenience.
However, IMHO, this issue is related to NetworkImage._loadAsyncimplementation from _network_image_web.dart.
It seems like if this future throws an error, it will never be completed, so Image.errorBuilder will never be invoked.

flutter doctor -v
[✓] Flutter (Channel master, 1.22.0-10.0.pre.121, on Mac OS X 10.15.6 19G2021, locale en-RU)
    • Flutter version 1.22.0-10.0.pre.121 at /Users/krasnov/sdk/flutter
    • Framework revision 6c1a29e54c (12 hours ago), 2020-09-09 20:05:05 -0400
    • Engine revision 564367b297
    • Dart version 2.10.0 (build 2.10.0-107.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.0)
    • Android SDK at /Users/krasnov/Library/Android/sdk
    • Platform android-30, build-tools 30.0.0
    • ANDROID_HOME = /Users/krasnov/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.7)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.7, Build version 11E801a
    • CocoaPods version 1.10.0.beta.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 49.0.2
    • Dart plugin version 193.7547
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.48.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.14.1

 
[✓] Connected device (3 available)            
    • sdk gphone x86 arm (mobile) • emulator-5554 • android-x86    • Android 11 (API 30) (emulator)
    • Web Server (web)            • web-server    • web-javascript • Flutter Tools
    • Chrome (web)                • chrome        • web-javascript • Google Chrome 85.0.4183.83

• No issues found!

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High-priority issues at the top of the work lista: imagesLoading, displaying, rendering imagesa: releaseChallenges faced when attempting to productionize an appcustomer: web10e: web_canvaskitCanvasKit (a.k.a. Skia-on-WebGL) rendering backend for Webf: material designflutter/packages/flutter/material repository.found in release: 1.22Found to occur in 1.22frameworkflutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onplatform-webWeb applications specifically

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions