| // Copyright 2014 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| |
| import 'dart:typed_data'; |
| import 'dart:ui' as ui show Codec, FrameInfo, Image; |
| |
| import 'binding.dart'; |
| |
| /// Creates an image from a list of bytes. |
| /// |
| /// This function attempts to interpret the given bytes an image. If successful, |
| /// the returned [Future] resolves to the decoded image. Otherwise, the [Future] |
| /// resolves to null. |
| /// |
| /// If the image is animated, this returns the first frame. Consider |
| /// [instantiateImageCodec] if support for animated images is necessary. |
| /// |
| /// This function differs from [ui.decodeImageFromList] in that it defers to |
| /// [PaintingBinding.instantiateImageCodec], and therefore can be mocked in |
| /// tests. |
| Future<ui.Image> decodeImageFromList(Uint8List bytes) async { |
| final ui.Codec codec = await PaintingBinding.instance!.instantiateImageCodec(bytes); |
| final ui.FrameInfo frameInfo = await codec.getNextFrame(); |
| return frameInfo.image; |
| } |