diff --git a/packages/flutter/lib/src/services/image_cache.dart b/packages/flutter/lib/src/services/image_cache.dart index a29db8ed57..5cbf7c5d9e 100644 --- a/packages/flutter/lib/src/services/image_cache.dart +++ b/packages/flutter/lib/src/services/image_cache.dart @@ -6,6 +6,7 @@ import 'dart:async'; import 'dart:ui' as ui; import 'package:mojo/mojo/url_response.mojom.dart'; +import 'package:quiver/collection.dart'; import 'fetch.dart'; import 'image_decoder.dart'; @@ -35,11 +36,16 @@ class _UrlFetcher implements ImageProvider { int get hashCode => _url.hashCode; } +const int _kDefaultSize = 1000; + class _ImageCache { _ImageCache._(); - final Map _cache = - new Map(); + final LruMap _cache = + new LruMap(maximumSize: _kDefaultSize); + + int get maximumSize => _cache.maximumSize; + void set maximumSize(int value) { _cache.maximumSize = value; } ImageResource loadProvider(ImageProvider provider) { return _cache.putIfAbsent(provider, () { diff --git a/packages/flutter/pubspec.yaml b/packages/flutter/pubspec.yaml index 12ce8ba811..a6ff61e219 100644 --- a/packages/flutter/pubspec.yaml +++ b/packages/flutter/pubspec.yaml @@ -11,6 +11,7 @@ dependencies: sky_engine: 0.0.75 sky_services: 0.0.75 vector_math: '>=1.4.3 <2.0.0' + quiver: '>=0.21.4 <0.22.0' # See the comment in flutter_tools' pubspec.yaml. We have to pin it # here also because sky_services depends on mojo_sdk which depends