Skip to content

ui.Image.toByteData can't use the default rawRgba format if it's later used for Image.memory #37423

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
liyuqian opened this issue Aug 1, 2019 · 6 comments
Labels
a: images Loading, displaying, rendering images engine flutter/engine repository. See also e: labels. found in release: 3.3 Found to occur in 3.3 found in release: 3.7 Found to occur in 3.7 has reproducible steps The issue has been confirmed reproducible and is ready to work on P2 Important issues not at the top of the work list r: invalid Issue is closed as not valid team-engine Owned by Engine team triaged-engine Triaged by Engine team

Comments

@liyuqian
Copy link
Contributor

liyuqian commented Aug 1, 2019

To reproduce, run the app in https://gist.github.com/liyuqian/560c3edefe2bce147147a49db0ec4e98 and remove its PNG encoding specification (search for !!!).

My Flutter version is c8be195 when this issue is reproduced locally. This issue may have been there for a while. For example, cl/260167188 was using PNG because of this.

@liyuqian liyuqian added engine flutter/engine repository. See also e: labels. a: images Loading, displaying, rendering images labels Aug 1, 2019
@liyuqian liyuqian changed the title toImage can't use the default rawRgba format if it's later used for Image.memory ui.Image.toByteData can't use the default rawRgba format if it's later used for Image.memory Aug 1, 2019
@jason-simmons
Copy link
Member

Image.memory and MemoryImage call the instantiateImageCodec engine API, which only accepts compressed image formats.

The app could provide an implementation of ImageProvider that calls decodeImageFromPixels for an uncompressed image.

Example:

class PixelMemoryImage extends ImageProvider<PixelMemoryImage> {
  PixelMemoryImage(this.bytes, this.width, this.height, this.format);

  final Uint8List bytes;
  final int width;
  final int height;
  final ui.PixelFormat format;

  @override
  Future<PixelMemoryImage> obtainKey(ImageConfiguration configuration) {
    return SynchronousFuture<PixelMemoryImage>(this);
  }

  @override
  ImageStreamCompleter load(PixelMemoryImage key) {
    Completer<ui.Image> completer = Completer<ui.Image>();
    ui.decodeImageFromPixels(bytes, width, height, format, completer.complete);
    return OneFrameImageStreamCompleter(
      completer.future.then((ui.Image image) => ImageInfo(image: image)));
  }
}

@liyuqian
Copy link
Contributor Author

liyuqian commented Aug 1, 2019

Thanks! Considering its frequent uses, I wonder if it's worth to add a new constructor Image.memoryRawRgba to wrap the code above, and provide similar functions as Image.memory? CC @Hixie

@Hixie
Copy link
Contributor

Hixie commented Aug 2, 2019

seems like something we could put in a package

liyuqian added a commit to liyuqian/flutter that referenced this issue Aug 7, 2019
liyuqian added a commit that referenced this issue Aug 7, 2019

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
See #37423
@darshankawar
Copy link
Member

Using the code listed here https://gist.github.com/liyuqian/560c3edefe2bce147147a49db0ec4e98 and running on latest stable using Android device and by removing the png encoding throws below exception:

I/flutter ( 8727): ══╡ EXCEPTION CAUGHT BY IMAGE RESOURCE SERVICE ╞════════════════════════════════════════════════════
I/flutter ( 8727): The following _Exception was thrown resolving an image codec:
I/flutter ( 8727): Exception: Invalid image data
I/flutter ( 8727): 
I/flutter ( 8727): When the exception was thrown, this was the stack:
I/flutter ( 8727): #0      _futurize (dart:ui/painting.dart:4856:5)
I/flutter ( 8727): #1      ImageDescriptor.encoded (dart:ui/painting.dart:4724:12)
I/flutter ( 8727): #2      instantiateImageCodec (dart:ui/painting.dart:1721:60)
I/flutter ( 8727): <asynchronous suspension>
I/flutter ( 8727): #3      PaintingBinding.instantiateImageCodec (package:flutter/src/painting/binding.dart:97:12)
I/flutter ( 8727): #4      MemoryImage._loadAsync (package:flutter/src/painting/image_provider.dart:954:18)
I/flutter ( 8727): #5      MemoryImage.load (package:flutter/src/painting/image_provider.dart:945:14)
I/flutter ( 8727): #6      ImageProvider.resolveStreamForKey.<anonymous closure> (package:flutter/src/painting/image_provider.dart:504:13)
I/flutter ( 8727): #7      ImageCache.putIfAbsent (package:flutter/src/painting/image_cache.dart:355:22)
I/flutter ( 8727): #8      ImageProvider.resolveStreamForKey (package:flutter/src/painting/image_provider.dart:502:83)
I/flutter ( 8727): #9      ScrollAwareImageProvider.resolveStreamForKey (package:flutter/src/widgets/scroll_aware_image_provider.dart:108:19)
I/flutter ( 8727): #10     ImageProvider.resolve.<anonymous closure> (package:flutter/src/painting/image_provider.dart:333:9)
I/flutter ( 8727): #11     ImageProvider._createErrorHandlerAndKey.<anonymous closure>.<anonymous closure> (package:flutter/src/painting/image_provider.dart:463:26)
I/flutter ( 8727): #12     SynchronousFuture.then (package:flutter/src/foundation/synchronous_future.dart:41:35)
I/flutter ( 8727): #13     ImageProvider._createErrorHandlerAndKey.<anonymous closure> (package:flutter/src/painting/image_provider.dart:460:11)
I/flutter ( 8727): #17     ImageProvider._createErrorHandlerAndKey (package:flutter/src/painting/image_provider.dart:452:16)
I/flutter ( 8727): #18     ImageProvider.resolve (package:flutter/src/painting/image_provider.dart:330:5)
I/flutter ( 8727): #19     _ImageState._resolveImage (package:flutter/src/widgets/image.dart:1156:16)
I/flutter ( 8727): #20     _ImageState.didChangeDependencies (package:flutter/src/widgets/image.dart:1109:5)
I/flutter ( 8727): #21     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4786:12)
I/flutter ( 8727): #22     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
I/flutter ( 8727): #23     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
I/flutter ( 8727): #24     Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
I/flutter ( 8727): #25     RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5705:32)
I/flutter ( 8727): #26     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6246:17)
I/flutter ( 8727): #27     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
I/flutter ( 8727): #28     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
I/flutter ( 8727): #29     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
I/flutter ( 8727): #30     Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
I/flutter ( 8727): #31     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2730:33)
I/flutter ( 8727): #32     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:913:20)
I/flutter ( 8727): #33     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:302:5)
I/flutter ( 8727): #34     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1117:15)
I/flutter ( 8727): #35     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1055:9)
I/flutter ( 8727): #36     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:971:5)
I/flutter ( 8727): #40     _invoke (dart:ui/hooks.dart:251:10)
I/flutter ( 8727): #41     _drawFrame (dart:ui/hooks.dart:209:3)
I/flutter ( 8727): (elided 6 frames from dart:async)
I/flutter ( 8727): ════════════════════════════════════════════════════════════════════════════════════════════════════
W/libEGL  ( 8727): EGLNativeWindowType 0xc1086808 disconnect failed
W/libEGL  ( 8727): EGLNativeWindowType 0xc3be4808 disconnect failed

Selecting ui.ImageByteFormat.rawRgba also throws above exception.

flutter doctor -v
[✓] Flutter (Channel stable, 1.22.3, on Mac OS X 10.15.4 19E2269, locale en-IN)
    • Flutter version 1.22.3 at /Users/dhs/documents/Fluttersdk/flutter
    • Framework revision 8874f21e79 (11 days ago), 2020-10-29 14:14:35 -0700
    • Engine revision a1440ca392
    • Dart version 2.10.3

 
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.0)
    • Android SDK at /Users/dhs/Library/Android/sdk
    • Platform android-30, build-tools 30.0.0
    • 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 12.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.0.1, Build version 12A7300
    • CocoaPods version 1.9.3

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

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

[✓] Connected device (1 available)
    • SM G975F (mobile) • RZ8M802WY0X • android-arm64 • Android 10 (API 29)

• No issues found!


@darshankawar darshankawar added found in release: 1.22 Found to occur in 1.22 has reproducible steps The issue has been confirmed reproducible and is ready to work on labels Nov 10, 2020
@kf6gpe kf6gpe added the P2 Important issues not at the top of the work list label Dec 9, 2020
@huycozy
Copy link
Member

huycozy commented Dec 15, 2022

Running provided sample code on the latest Flutter channels and seeing that the exception persists when using default rawRgba format.

Logs
E/FlutterJNI(24007): Failed to decode image
E/FlutterJNI(24007): android.graphics.ImageDecoder$DecodeException: Failed to create image decoder with message 'unimplemented'Input contained an error.
E/FlutterJNI(24007):    at android.graphics.ImageDecoder.nCreate(Native Method)
E/FlutterJNI(24007):    at android.graphics.ImageDecoder.access$200(ImageDecoder.java:172)
E/FlutterJNI(24007):    at android.graphics.ImageDecoder$ByteBufferSource.createImageDecoder(ImageDecoder.java:242)
E/FlutterJNI(24007):    at android.graphics.ImageDecoder.decodeBitmapImpl(ImageDecoder.java:2015)
E/FlutterJNI(24007):    at android.graphics.ImageDecoder.decodeBitmap(ImageDecoder.java:2008)
E/FlutterJNI(24007):    at io.flutter.embedding.engine.FlutterJNI.decodeImage(FlutterJNI.java:524)

══╡ EXCEPTION CAUGHT BY IMAGE RESOURCE SERVICE ╞════════════════════════════════════════════════════
The following _Exception was thrown resolving an image codec:
Exception: Invalid image data

When the exception was thrown, this was the stack:
#0      _futurize (dart:ui/painting.dart:5886:5)
#1      ImageDescriptor.encoded (dart:ui/painting.dart:5741:12)
#2      instantiateImageCodecFromBuffer (dart:ui/painting.dart:2092:60)
#3      PaintingBinding.instantiateImageCodecFromBuffer (package:flutter/src/painting/binding.dart:153:15)
#4      MemoryImage._loadAsync (package:flutter/src/painting/image_provider.dart:1090:20)
<asynchronous suspension>
════════════════════════════════════════════════════════════════════════════════════════════════════
Sample code (be compatible with the new flutter version)
import 'dart:ui' as ui;
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter/services.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      home: Scaffold(
        body: Stack(
          fit: StackFit.expand,
          children: <Widget>[
            CachedFrostedBox(
              opaqueBackground: Container(
                color: Colors.white,
                child: Text('0' * 10000),
              ),
              sigmaX: 2.0,
              sigmaY: 2.0,
              child: Container(
                alignment: Alignment.center,
                child: Text('Hello'),
              ),
            ),
            Center(
              child: Padding(
                padding: EdgeInsets.fromLTRB(0, 20, 0, 0),
                child: LinearProgressIndicator(),
              ),
            ),
          ],
        ),
      ),
      showPerformanceOverlay: true,
    );
  }
}

class Foo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Stack(
      fit: StackFit.expand,
      children: <Widget>[
        CachedFrostedBox(
          opaqueBackground: Container(
            color: Colors.white,
            child: Text('0' * 10000),
          ),
          sigmaX: 2.0,
          sigmaY: 2.0,
          child: Container(
            alignment: Alignment.center,
            child: Text('Hello'),
          ),
        ),
        Center(
          child: Padding(
            padding: EdgeInsets.fromLTRB(0, 20, 0, 0),
            child: LinearProgressIndicator(),
          ),
        ),
      ],
    );
  }
}

class CachedFrostedBox extends StatefulWidget {
  CachedFrostedBox({required this.child, this.sigmaX = 8, this.sigmaY = 8, required this.opaqueBackground})
      : this.frostBackground = Stack(
    children: <Widget>[
      opaqueBackground,
      ClipRect(
          child: BackdropFilter(
            filter: ui.ImageFilter.blur(sigmaX: sigmaX, sigmaY: sigmaY),
            child: new Container(
                decoration: new BoxDecoration(
                  color: Colors.white.withOpacity(0.1),
                )
            ),
          )
      ),
    ],
  );

  final Widget child;
  final double sigmaY;
  final double sigmaX;

  /// This must be opaque so the backdrop filter won't access any colors beneath this background.
  final Widget opaqueBackground;

  /// Blur applied to the opaqueBackground. See the constructor.
  final Widget frostBackground;

  @override
  State<StatefulWidget> createState() {
    return CachedFrostedBoxState();
  }
}

class CachedFrostedBoxState extends State<CachedFrostedBox> {
  final GlobalKey _snapshotKey = GlobalKey();

  Image? _backgroundSnapshot;
  bool _snapshotLoaded = false;
  bool _skipSnapshot = false;

  void _snapshot(Duration _) async {
    final RenderRepaintBoundary renderBackground = _snapshotKey.currentContext?.findRenderObject() as RenderRepaintBoundary;
    final ui.Image image = await renderBackground.toImage(
      pixelRatio: WidgetsBinding.instance.window.devicePixelRatio,
    );
    // !!! The default encoding rawRgba will throw exceptions. This bug is introducing a lot
    // of encoding/decoding work.
    final ByteData? imageByteData = await image.toByteData(format: ui.ImageByteFormat.rawRgba);
    setState(() {
      _backgroundSnapshot = Image.memory(imageByteData!.buffer.asUint8List());
    });
  }

  @override
  Widget build(BuildContext context) {
    Widget frostedBackground;
    if (_backgroundSnapshot == null || _skipSnapshot) {
      frostedBackground = RepaintBoundary(
        key: _snapshotKey,
        child: widget.frostBackground,
      );
      if (!_skipSnapshot) {
        SchedulerBinding.instance.addPostFrameCallback(_snapshot);
      }
    } else {
      // !!! We don't seem to have a way to know when IO thread
      // decoded the image.
      if (!_snapshotLoaded) {
        frostedBackground = widget.frostBackground;
        Future.delayed(Duration(seconds: 1), () {
          setState(() {
            _snapshotLoaded = true;
          });
        });
      } else {
        frostedBackground = Offstage();
      }
    }

    return Stack(
      children: <Widget>[
        frostedBackground,
        if (_backgroundSnapshot != null) _backgroundSnapshot!,
        widget.child,
        GestureDetector(
            onTap: () {
              setState(() { _skipSnapshot = !_skipSnapshot; });
            }
        ),
      ],
    );
  }
}
flutter doctor -v (stable and master)
[✓] Flutter (Channel stable, 3.3.9, on macOS 13.0 22A380 darwin-x64, locale en-VN)
    • Flutter version 3.3.9 on channel stable at /Users/huynq/Documents/GitHub/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision b8f7f1f986 (31 hours ago), 2022-11-23 06:43:51 +0900
    • Engine revision 8f2221fbef
    • Dart version 2.18.5
    • DevTools version 2.15.0

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-33, build-tools 31.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14A400
    • CocoaPods version 1.11.3

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

[✓] Android Studio (version 2021.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[✓] IntelliJ IDEA Community Edition (version 2022.2.2)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 70.0.5
    • Dart plugin version 222.4167.21

[✓] IntelliJ IDEA Community Edition (version 2022.1.1)
    • IntelliJ at /Users/huynq/Library/Application Support/JetBrains/Toolbox/apps/IDEA-C/ch-0/221.5591.52/IntelliJ IDEA CE.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

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

[✓] Connected device (3 available)
    • SM T225 (mobile) • R9JT3004VRJ • android-arm64  • Android 12 (API 31)
    • macOS (desktop)  • macos       • darwin-x64     • macOS 13.0 22A380 darwin-x64
    • Chrome (web)     • chrome      • web-javascript • Google Chrome 107.0.5304.110

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!
[!] Flutter (Channel master, 3.7.0-9.0.pre.11, on macOS 13.0.1 22A400 darwin-x64, locale en-VN)
    • Flutter version 3.7.0-9.0.pre.11 on channel master at /Users/huynq/Documents/GitHub/flutter_master
    ! Warning: `flutter` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision dbc9306380 (4 hours ago), 2022-12-14 13:53:20 -0800
    • Engine revision 0a6a4a58f4
    • Dart version 3.0.0 (build 3.0.0-21.0.dev)
    • DevTools version 2.20.0
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-33, build-tools 31.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14B47b
    • CocoaPods version 1.11.3

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

[✓] Android Studio (version 2021.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[✓] IntelliJ IDEA Community Edition (version 2022.1.1)
    • IntelliJ at /Users/huynq/Library/Application Support/JetBrains/Toolbox/apps/IDEA-C/ch-0/221.5591.52/IntelliJ IDEA CE.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

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

[✓] Connected device (4 available)
    • SM T225 (mobile) • R9JT3004VRJ                              • android-arm64  • Android 12 (API 31)
    • iPhone (mobile)  • d9a94afe2b649fef56ba0bfeb052f0f2a7dae95e • ios            • iOS 15.7.2 19H218
    • macOS (desktop)  • macos                                    • darwin-x64     • macOS 13.0.1 22A400 darwin-x64
    • Chrome (web)     • chrome                                   • web-javascript • Google Chrome 108.0.5359.98
    ! Error: iPhone is busy: Fetching debug symbols for iPhone. Xcode will continue when iPhone is finished. (code -10)

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

@huycozy huycozy added found in release: 3.3 Found to occur in 3.3 found in release: 3.7 Found to occur in 3.7 and removed found in release: 1.22 Found to occur in 1.22 labels Dec 15, 2022
@flutter-triage-bot flutter-triage-bot bot added team-engine Owned by Engine team triaged-engine Triaged by Engine team labels Jul 8, 2023
@jonahwilliams jonahwilliams closed this as not planned Won't fix, can't repro, duplicate, stale Feb 27, 2025
@darshankawar darshankawar added the r: invalid Issue is closed as not valid label Feb 28, 2025
Copy link

This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Mar 14, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
a: images Loading, displaying, rendering images engine flutter/engine repository. See also e: labels. found in release: 3.3 Found to occur in 3.3 found in release: 3.7 Found to occur in 3.7 has reproducible steps The issue has been confirmed reproducible and is ready to work on P2 Important issues not at the top of the work list r: invalid Issue is closed as not valid team-engine Owned by Engine team triaged-engine Triaged by Engine team
Projects
None yet
Development

No branches or pull requests

7 participants