Skip to content

Instantly share code, notes, and snippets.

@jonahwilliams
Created January 12, 2023 21:56
Show Gist options
  • Save jonahwilliams/5d02438e6b2d1686a9a8401164689dd6 to your computer and use it in GitHub Desktop.
Save jonahwilliams/5d02438e6b2d1686a9a8401164689dd6 to your computer and use it in GitHub Desktop.
Load a ui.Image from an asset
import 'dart:async';
import 'dart:ui' as ui;
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
Future<ui.Image> loadImageFromAsset(String assetName) async {
if (kIsWeb) {
WidgetsFlutterBinding.ensureInitialized();
var image = AssetImage(assetName);
var key = await image.obtainKey(ImageConfiguration.empty);
var stream = image.loadBuffer(
key, PaintingBinding.instance.instantiateImageCodecFromBuffer);
var completer = Completer<ui.Image>();
stream.addListener(ImageStreamListener((image, synchronousCall) {
completer.complete(image.image);
}));
return completer.future;
}
var buffer = await ImmutableBuffer.fromAsset(assetName);
var codec = await ui.instantiateImageCodecFromBuffer(buffer);
var frame = await codec.getNextFrame();
return frame.image;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment