Skip to content

Commit 4c586df

Browse files
authored
⚡️ Expose Key for picking (#339)
1 parent 5997d05 commit 4c586df

File tree

5 files changed

+13
-7
lines changed

5 files changed

+13
-7
lines changed

CHANGELOG.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ that can be found in the LICENSE file. -->
88

99
To know more about breaking changes, see [Migration Guide][].
1010

11-
### Improvements
11+
### New Features
1212

13-
- Introduce `PathWrapper` to improve the overall loading speed. (#338)
13+
- Introduce `PathWrapper` in delegates to improve the overall loading speed. (#338)
14+
- Allow using `Key` during picking. (#339)
1415

1516
## 7.3.2
1617

lib/src/delegates/asset_picker_delegate.dart

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import 'package:photo_manager/photo_manager.dart';
1010
import '../constants/config.dart';
1111
import '../constants/constants.dart';
1212
import '../internal/methods.dart';
13-
import '../internal/singleton.dart';
1413
import '../provider/asset_picker_provider.dart';
1514
import '../widget/asset_picker.dart';
1615
import '../widget/asset_picker_page_route.dart';
@@ -62,6 +61,7 @@ class AssetPickerDelegate {
6261
/// {@endtemplate}
6362
Future<List<AssetEntity>?> pickAssets(
6463
BuildContext context, {
64+
Key? key,
6565
AssetPickerConfig pickerConfig = const AssetPickerConfig(),
6666
bool useRootNavigator = true,
6767
AssetPickerPageRouteBuilder<List<AssetEntity>>? pageRouteBuilder,
@@ -77,7 +77,7 @@ class AssetPickerDelegate {
7777
filterOptions: pickerConfig.filterOptions,
7878
);
7979
final Widget picker = AssetPicker<AssetEntity, AssetPathEntity>(
80-
key: Singleton.pickerKey,
80+
key: key,
8181
builder: DefaultAssetPickerBuilderDelegate(
8282
provider: provider,
8383
initialPermission: ps,
@@ -130,12 +130,13 @@ class AssetPickerDelegate {
130130
PickerProvider extends AssetPickerProvider<Asset, Path>>(
131131
BuildContext context, {
132132
required AssetPickerBuilderDelegate<Asset, Path> delegate,
133+
Key? key,
133134
bool useRootNavigator = true,
134135
AssetPickerPageRouteBuilder<List<Asset>>? pageRouteBuilder,
135136
}) async {
136137
await permissionCheck();
137138
final Widget picker = AssetPicker<Asset, Path>(
138-
key: Singleton.pickerKey,
139+
key: key,
139140
builder: delegate,
140141
);
141142
final List<Asset>? result = await Navigator.of(

lib/src/internal/singleton.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ import '../delegates/sort_path_delegate.dart';
1111
class Singleton {
1212
const Singleton._();
1313

14-
static GlobalKey pickerKey = GlobalKey();
15-
1614
static AssetPickerTextDelegate textDelegate = const AssetPickerTextDelegate();
1715
static SortPathDelegate<dynamic> sortPathDelegate = SortPathDelegate.common;
1816

lib/src/widget/asset_picker.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,14 @@ class AssetPicker<Asset, Path> extends StatefulWidget {
3838
/// {@macro wechat_assets_picker.delegates.AssetPickerDelegate.pickAssets}
3939
static Future<List<AssetEntity>?> pickAssets(
4040
BuildContext context, {
41+
Key? key,
4142
AssetPickerConfig pickerConfig = const AssetPickerConfig(),
4243
bool useRootNavigator = true,
4344
AssetPickerPageRouteBuilder<List<AssetEntity>>? pageRouteBuilder,
4445
}) {
4546
return _pickerDelegate.pickAssets(
4647
context,
48+
key: key,
4749
pickerConfig: pickerConfig,
4850
useRootNavigator: useRootNavigator,
4951
pageRouteBuilder: pageRouteBuilder,
@@ -54,12 +56,14 @@ class AssetPicker<Asset, Path> extends StatefulWidget {
5456
static Future<List<Asset>?> pickAssetsWithDelegate<Asset, Path,
5557
PickerProvider extends AssetPickerProvider<Asset, Path>>(
5658
BuildContext context, {
59+
Key? key,
5760
required AssetPickerBuilderDelegate<Asset, Path> delegate,
5861
bool useRootNavigator = true,
5962
AssetPickerPageRouteBuilder<List<Asset>>? pageRouteBuilder,
6063
}) {
6164
return _pickerDelegate.pickAssetsWithDelegate<Asset, Path, PickerProvider>(
6265
context,
66+
key: key,
6367
delegate: delegate,
6468
useRootNavigator: useRootNavigator,
6569
pageRouteBuilder: pageRouteBuilder,

test/delegates/builder_delegate_test.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ class TestAssetPickerDelegate extends AssetPickerDelegate {
6767
@override
6868
Future<List<AssetEntity>?> pickAssets(
6969
BuildContext context, {
70+
Key? key,
7071
AssetPickerConfig pickerConfig = const AssetPickerConfig(),
7172
bool useRootNavigator = true,
7273
AssetPickerPageRouteBuilder<List<AssetEntity>>? pageRouteBuilder,
@@ -97,6 +98,7 @@ class TestAssetPickerDelegate extends AssetPickerDelegate {
9798
..hasAssetsToDisplay = true
9899
..totalAssetsCount = 1;
99100
final Widget picker = AssetPicker<AssetEntity, AssetPathEntity>(
101+
key: key,
100102
builder: DefaultAssetPickerBuilderDelegate(
101103
provider: provider,
102104
initialPermission: ps,

0 commit comments

Comments
 (0)