ImageCache should handle images that fail to decode (#4118)
This commit is contained in:
parent
f012a0fdfb
commit
d97df402b8
@ -4,10 +4,11 @@
|
|||||||
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:collection';
|
import 'dart:collection';
|
||||||
import 'dart:ui' show hashValues;
|
import 'dart:ui' show hashValues, Image;
|
||||||
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/http.dart' as http;
|
import 'package:flutter/http.dart' as http;
|
||||||
|
import 'package:mojo/core.dart' as mojo;
|
||||||
|
|
||||||
import 'image_decoder.dart';
|
import 'image_decoder.dart';
|
||||||
import 'image_resource.dart';
|
import 'image_resource.dart';
|
||||||
@ -53,10 +54,14 @@ class _UrlFetcher implements ImageProvider {
|
|||||||
@override
|
@override
|
||||||
Future<ImageInfo> loadImage() async {
|
Future<ImageInfo> loadImage() async {
|
||||||
try {
|
try {
|
||||||
return new ImageInfo(
|
final Uri resolvedUrl = Uri.base.resolve(_url);
|
||||||
image: await decodeImageFromDataPipe(await http.readDataPipe(Uri.base.resolve(_url))),
|
final mojo.MojoDataPipeConsumer dataPipe = await http.readDataPipe(resolvedUrl);
|
||||||
scale: _scale
|
if (dataPipe == null)
|
||||||
);
|
throw 'Unable to read data from: $resolvedUrl';
|
||||||
|
final Image image = await decodeImageFromDataPipe(dataPipe);
|
||||||
|
if (image == null)
|
||||||
|
throw 'Unable to decode image data from: $resolvedUrl';
|
||||||
|
return new ImageInfo(image: image, scale: _scale);
|
||||||
} catch (exception, stack) {
|
} catch (exception, stack) {
|
||||||
FlutterError.reportError(new FlutterErrorDetails(
|
FlutterError.reportError(new FlutterErrorDetails(
|
||||||
exception: exception,
|
exception: exception,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user