Skip to content

Commit d0c2239

Browse files
authored
šŸ› Call AssetPickerProvider.dispose when disposing the builder delegate (#421)
1 parent c5e0fb9 commit d0c2239

File tree

6 files changed

+49
-2
lines changed

6 files changed

+49
-2
lines changed

ā€ŽCHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ that can be found in the LICENSE file. -->
44

55
# Changelog
66

7+
## 8.4.1
8+
9+
### Fixes
10+
11+
- Call `AssetPickerProvider.dispose` when disposing the builder delegate. (#421)
12+
713
## 8.4.0
814

915
### Breaking changes

ā€Žexample/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: wechat_assets_picker_demo
22
description: The demo project for the wechat_assets_picker package.
3-
version: 8.4.0+34
3+
version: 8.4.1+35
44
publish_to: none
55

66
environment:

ā€Žlib/src/delegates/asset_picker_builder_delegate.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -764,6 +764,7 @@ class DefaultAssetPickerBuilderDelegate
764764
if (keepScrollOffset) {
765765
return;
766766
}
767+
provider.dispose();
767768
super.dispose();
768769
}
769770

ā€Žpubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: wechat_assets_picker
2-
version: 8.4.0
2+
version: 8.4.1
33
description: |
44
An image picker (also with videos and audio)
55
for Flutter projects based on WeChat's UI,

ā€Žtest/providers_test.dart

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// Copyright 2019 The FlutterCandies author. All rights reserved.
2+
// Use of this source code is governed by an Apache license that can be found
3+
// in the LICENSE file.
4+
5+
import 'package:flutter/material.dart';
6+
import 'package:flutter_test/flutter_test.dart';
7+
import 'package:wechat_assets_picker/wechat_assets_picker.dart';
8+
9+
import 'test_utils.dart';
10+
11+
void main() async {
12+
PhotoManager.withPlugin(TestPhotoManagerPlugin());
13+
AssetPicker.setPickerDelegate(TestAssetPickerDelegate());
14+
15+
group('AssetPickerProvider', () {
16+
testWidgets('disposed correctly', (WidgetTester tester) async {
17+
await tester.pumpWidget(
18+
defaultPickerTestApp(
19+
onButtonPressed: (BuildContext context) {
20+
AssetPicker.pickAssets(context);
21+
},
22+
),
23+
);
24+
await tester.tap(defaultButtonFinder);
25+
await tester.pumpAndSettle();
26+
final Finder pickerFinder = find.byType(
27+
AssetPicker<AssetEntity, AssetPathEntity>,
28+
);
29+
final AssetPicker<AssetEntity, AssetPathEntity> picker = tester.widget(
30+
pickerFinder,
31+
);
32+
final DefaultAssetPickerProvider provider =
33+
(picker.builder as DefaultAssetPickerBuilderDelegate).provider;
34+
expect(provider, isA<DefaultAssetPickerProvider>());
35+
await tester.tap(find.widgetWithIcon(IconButton, Icons.close));
36+
await tester.pumpAndSettle();
37+
expect(() => provider.addListener(() {}), throwsA(isA<AssertionError>()));
38+
});
39+
});
40+
}

0 commit comments

Comments
Ā (0)