Skip to content

Commit 92a2cfb

Browse files
committed
🚀 Improve CNP in tree
1 parent c6a3da8 commit 92a2cfb

File tree

3 files changed

+63
-37
lines changed

3 files changed

+63
-37
lines changed

example/lib/customs/pickers/multi_tabs_assets_picker.dart

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22
/// [Author] Alex (https://github.com/AlexV525)
33
/// [Date] 2022/2/10 09:57
44
///
5+
import 'dart:io';
56
import 'dart:math' as math;
67

78
import 'package:flutter/material.dart';
9+
import 'package:flutter/services.dart';
810
import 'package:provider/provider.dart';
911
import 'package:wechat_assets_picker/wechat_assets_picker.dart';
1012

@@ -529,4 +531,24 @@ class MultiTabAssetPickerBuilder extends DefaultAssetPickerBuilderDelegate {
529531
},
530532
);
531533
}
534+
535+
@override
536+
Widget build(BuildContext context) {
537+
return AnnotatedRegion<SystemUiOverlayStyle>(
538+
value: overlayStyle,
539+
child: Theme(
540+
data: theme,
541+
child: Material(
542+
color: theme.canvasColor,
543+
child: Stack(
544+
fit: StackFit.expand,
545+
children: <Widget>[
546+
if (isAppleOS) appleOSLayout(context) else androidLayout(context),
547+
if (Platform.isIOS) iOSPermissionOverlay(context),
548+
],
549+
),
550+
),
551+
),
552+
);
553+
}
532554
}

lib/src/delegates/asset_picker_builder_delegate.dart

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2092,21 +2092,29 @@ class DefaultAssetPickerBuilderDelegate
20922092
}
20932093
});
20942094
}
2095-
return AnnotatedRegion<SystemUiOverlayStyle>(
2096-
value: overlayStyle,
2097-
child: Theme(
2098-
data: theme,
2099-
child: Material(
2100-
color: theme.canvasColor,
2101-
child: Stack(
2102-
fit: StackFit.expand,
2103-
children: <Widget>[
2104-
if (isAppleOS) appleOSLayout(context) else androidLayout(context),
2105-
if (Platform.isIOS) iOSPermissionOverlay(context),
2106-
],
2095+
return CNP<DefaultAssetPickerProvider>.value(
2096+
value: provider,
2097+
builder: (BuildContext context, _) {
2098+
return AnnotatedRegion<SystemUiOverlayStyle>(
2099+
value: overlayStyle,
2100+
child: Theme(
2101+
data: theme,
2102+
child: Material(
2103+
color: theme.canvasColor,
2104+
child: Stack(
2105+
fit: StackFit.expand,
2106+
children: <Widget>[
2107+
if (isAppleOS)
2108+
appleOSLayout(context)
2109+
else
2110+
androidLayout(context),
2111+
if (Platform.isIOS) iOSPermissionOverlay(context),
2112+
],
2113+
),
2114+
),
21072115
),
2108-
),
2109-
),
2116+
);
2117+
},
21102118
);
21112119
}
21122120
}

lib/src/widget/asset_picker.dart

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import 'package:photo_manager/photo_manager.dart';
99

1010
import '../constants/config.dart';
1111
import '../constants/constants.dart';
12-
import '../constants/extensions.dart';
1312
import '../delegates/asset_picker_builder_delegate.dart';
1413
import '../internal/methods.dart';
1514
import '../internal/singleton.dart';
@@ -47,28 +46,25 @@ class AssetPicker<Asset, Path> extends StatefulWidget {
4746
sortPathDelegate: pickerConfig.sortPathDelegate,
4847
filterOptions: pickerConfig.filterOptions,
4948
);
50-
final Widget picker = CNP<DefaultAssetPickerProvider>.value(
51-
value: provider,
52-
child: AssetPicker<AssetEntity, AssetPathEntity>(
53-
key: Singleton.pickerKey,
54-
builder: DefaultAssetPickerBuilderDelegate(
55-
provider: provider,
56-
initialPermission: _ps,
57-
gridCount: pickerConfig.gridCount,
58-
pickerTheme: pickerConfig.pickerTheme,
59-
gridThumbSize: pickerConfig.gridThumbSize,
60-
previewThumbSize: pickerConfig.previewThumbSize,
61-
specialPickerType: pickerConfig.specialPickerType,
62-
specialItemPosition: pickerConfig.specialItemPosition,
63-
specialItemBuilder: pickerConfig.specialItemBuilder,
64-
loadingIndicatorBuilder: pickerConfig.loadingIndicatorBuilder,
65-
allowSpecialItemWhenEmpty: pickerConfig.allowSpecialItemWhenEmpty,
66-
selectPredicate: pickerConfig.selectPredicate,
67-
shouldRevertGrid: pickerConfig.shouldRevertGrid,
68-
textDelegate: pickerConfig.textDelegate,
69-
themeColor: pickerConfig.themeColor,
70-
locale: Localizations.maybeLocaleOf(context),
71-
),
49+
final Widget picker = AssetPicker<AssetEntity, AssetPathEntity>(
50+
key: Singleton.pickerKey,
51+
builder: DefaultAssetPickerBuilderDelegate(
52+
provider: provider,
53+
initialPermission: _ps,
54+
gridCount: pickerConfig.gridCount,
55+
pickerTheme: pickerConfig.pickerTheme,
56+
gridThumbSize: pickerConfig.gridThumbSize,
57+
previewThumbSize: pickerConfig.previewThumbSize,
58+
specialPickerType: pickerConfig.specialPickerType,
59+
specialItemPosition: pickerConfig.specialItemPosition,
60+
specialItemBuilder: pickerConfig.specialItemBuilder,
61+
loadingIndicatorBuilder: pickerConfig.loadingIndicatorBuilder,
62+
allowSpecialItemWhenEmpty: pickerConfig.allowSpecialItemWhenEmpty,
63+
selectPredicate: pickerConfig.selectPredicate,
64+
shouldRevertGrid: pickerConfig.shouldRevertGrid,
65+
textDelegate: pickerConfig.textDelegate,
66+
themeColor: pickerConfig.themeColor,
67+
locale: Localizations.maybeLocaleOf(context),
7268
),
7369
);
7470
final List<AssetEntity>? result = await Navigator.of(

0 commit comments

Comments
 (0)