dispose image when cache clear (#76600)

This commit is contained in:
Kinarobin 2021-03-05 04:19:02 +08:00 committed by GitHub
parent c8c681f68e
commit 6b500fa7f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 7 deletions

View File

@ -188,6 +188,9 @@ class ImageCache {
}, },
); );
} }
for (final _CachedImage image in _cache.values) {
image.dispose();
}
_cache.clear(); _cache.clear();
_pendingImages.clear(); _pendingImages.clear();
_currentSizeBytes = 0; _currentSizeBytes = 0;

View File

@ -34,7 +34,7 @@ void main() {
await tester.pumpWidget(TestWidget(key)); await tester.pumpWidget(TestWidget(key));
final DisposableBuildContext context = DisposableBuildContext(key.currentState!); final DisposableBuildContext context = DisposableBuildContext(key.currentState!);
final TestImageProvider testImageProvider = TestImageProvider(testImage); final TestImageProvider testImageProvider = TestImageProvider(testImage.clone());
final ScrollAwareImageProvider<TestImageProvider> imageProvider = ScrollAwareImageProvider<TestImageProvider>( final ScrollAwareImageProvider<TestImageProvider> imageProvider = ScrollAwareImageProvider<TestImageProvider>(
context: context, context: context,
imageProvider: testImageProvider, imageProvider: testImageProvider,
@ -69,7 +69,7 @@ void main() {
)); ));
final DisposableBuildContext context = DisposableBuildContext(key.currentState!); final DisposableBuildContext context = DisposableBuildContext(key.currentState!);
final TestImageProvider testImageProvider = TestImageProvider(testImage); final TestImageProvider testImageProvider = TestImageProvider(testImage.clone());
final ScrollAwareImageProvider<TestImageProvider> imageProvider = ScrollAwareImageProvider<TestImageProvider>( final ScrollAwareImageProvider<TestImageProvider> imageProvider = ScrollAwareImageProvider<TestImageProvider>(
context: context, context: context,
imageProvider: testImageProvider, imageProvider: testImageProvider,
@ -109,7 +109,7 @@ void main() {
)); ));
final DisposableBuildContext context = DisposableBuildContext(keys.last.currentState!); final DisposableBuildContext context = DisposableBuildContext(keys.last.currentState!);
final TestImageProvider testImageProvider = TestImageProvider(testImage); final TestImageProvider testImageProvider = TestImageProvider(testImage.clone());
final ScrollAwareImageProvider<TestImageProvider> imageProvider = ScrollAwareImageProvider<TestImageProvider>( final ScrollAwareImageProvider<TestImageProvider> imageProvider = ScrollAwareImageProvider<TestImageProvider>(
context: context, context: context,
imageProvider: testImageProvider, imageProvider: testImageProvider,
@ -166,7 +166,7 @@ void main() {
)); ));
final DisposableBuildContext context = DisposableBuildContext(keys.last.currentState!); final DisposableBuildContext context = DisposableBuildContext(keys.last.currentState!);
final TestImageProvider testImageProvider = TestImageProvider(testImage); final TestImageProvider testImageProvider = TestImageProvider(testImage.clone());
final ScrollAwareImageProvider<TestImageProvider> imageProvider = ScrollAwareImageProvider<TestImageProvider>( final ScrollAwareImageProvider<TestImageProvider> imageProvider = ScrollAwareImageProvider<TestImageProvider>(
context: context, context: context,
imageProvider: testImageProvider, imageProvider: testImageProvider,
@ -233,7 +233,7 @@ void main() {
)); ));
final DisposableBuildContext context = DisposableBuildContext(keys.last.currentState!); final DisposableBuildContext context = DisposableBuildContext(keys.last.currentState!);
final TestImageProvider testImageProvider = TestImageProvider(testImage); final TestImageProvider testImageProvider = TestImageProvider(testImage.clone());
final ScrollAwareImageProvider<TestImageProvider> imageProvider = ScrollAwareImageProvider<TestImageProvider>( final ScrollAwareImageProvider<TestImageProvider> imageProvider = ScrollAwareImageProvider<TestImageProvider>(
context: context, context: context,
imageProvider: testImageProvider, imageProvider: testImageProvider,
@ -298,7 +298,7 @@ void main() {
)); ));
final DisposableBuildContext context = DisposableBuildContext(key.currentState!); final DisposableBuildContext context = DisposableBuildContext(key.currentState!);
final TestImageProvider testImageProvider = TestImageProvider(testImage); final TestImageProvider testImageProvider = TestImageProvider(testImage.clone());
final ScrollAwareImageProvider<TestImageProvider> imageProvider = ScrollAwareImageProvider<TestImageProvider>( final ScrollAwareImageProvider<TestImageProvider> imageProvider = ScrollAwareImageProvider<TestImageProvider>(
context: context, context: context,
imageProvider: testImageProvider, imageProvider: testImageProvider,
@ -349,7 +349,7 @@ void main() {
)); ));
final DisposableBuildContext context = DisposableBuildContext(key.currentState!); final DisposableBuildContext context = DisposableBuildContext(key.currentState!);
final TestImageProvider testImageProvider = TestImageProvider(testImage); final TestImageProvider testImageProvider = TestImageProvider(testImage.clone());
final ScrollAwareImageProvider<TestImageProvider> imageProvider = ScrollAwareImageProvider<TestImageProvider>( final ScrollAwareImageProvider<TestImageProvider> imageProvider = ScrollAwareImageProvider<TestImageProvider>(
context: context, context: context,
imageProvider: testImageProvider, imageProvider: testImageProvider,