Skip to content

Commit e830ad4

Browse files
committed
✨ Support single asset mode.
1 parent 21fd68c commit e830ad4

File tree

1 file changed

+25
-19
lines changed

1 file changed

+25
-19
lines changed

lib/src/widget/asset_picker.dart

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,10 @@ class AssetPicker extends StatelessWidget {
131131
/// 当前平台是否苹果系列系统 (iOS & MacOS)
132132
bool get isAppleOS => Platform.isIOS || Platform.isMacOS;
133133

134+
/// Whether the picker is under the single asset mode.
135+
/// 选择器是否为单选模式
136+
bool get isSingleAssetMode => provider.maxAssets == 1;
137+
134138
/// Space between asset item widget.
135139
/// 资源部件之间的间隔
136140
double get itemSpacing => 2.0;
@@ -459,7 +463,7 @@ class AssetPicker extends StatelessWidget {
459463
highlightElevation: 0.0,
460464
hoverElevation: 0.0,
461465
child: Text(
462-
provider.isSelectedNotEmpty
466+
provider.isSelectedNotEmpty && !isSingleAssetMode
463467
? '${Constants.textDelegate.confirm}'
464468
'(${provider.selectedAssets.length}/${provider.maxAssets})'
465469
: Constants.textDelegate.confirm,
@@ -618,10 +622,7 @@ class AssetPicker extends StatelessWidget {
618622

619623
/// Indicator for asset selected status.
620624
/// 资源是否已选的指示器
621-
Widget _selectIndicator(
622-
AssetEntity asset,
623-
List<AssetEntity> selectedAssets,
624-
) {
625+
Widget _selectIndicator(AssetEntity asset) {
625626
return Selector<AssetPickerProvider, List<AssetEntity>>(
626627
selector: (BuildContext _, AssetPickerProvider provider) =>
627628
provider.selectedAssets,
@@ -636,6 +637,9 @@ class AssetPicker extends StatelessWidget {
636637
if (selected) {
637638
provider.unSelectAsset(asset);
638639
} else {
640+
if (isSingleAssetMode) {
641+
provider.selectedAssets.clear();
642+
}
639643
provider.selectAsset(asset);
640644
}
641645
},
@@ -655,15 +659,16 @@ class AssetPicker extends StatelessWidget {
655659
duration: switchingPathDuration,
656660
reverseDuration: switchingPathDuration,
657661
child: selected
658-
? Text(
659-
'${selectedAssets.indexOf(asset) + 1}',
660-
style: TextStyle(
661-
color: Colors.white,
662-
fontSize: isAppleOS ? 16.0 : 14.0,
663-
fontWeight:
664-
isAppleOS ? FontWeight.w600 : FontWeight.normal,
665-
),
666-
)
662+
? isSingleAssetMode
663+
? Icon(Icons.check, size: 18.0)
664+
: Text(
665+
'${selectedAssets.indexOf(asset) + 1}',
666+
style: TextStyle(
667+
fontSize: isAppleOS ? 16.0 : 14.0,
668+
fontWeight:
669+
isAppleOS ? FontWeight.w600 : FontWeight.bold,
670+
),
671+
)
667672
: const SizedBox.shrink(),
668673
),
669674
),
@@ -976,10 +981,11 @@ class AssetPicker extends StatelessWidget {
976981
child: Stack(
977982
children: <Widget>[
978983
Positioned.fill(child: assetsGrid(context)),
979-
PositionedDirectional(
980-
bottom: 0.0,
981-
child: bottomActionBar(context),
982-
),
984+
if (!isSingleAssetMode)
985+
PositionedDirectional(
986+
bottom: 0.0,
987+
child: bottomActionBar(context),
988+
),
983989
],
984990
),
985991
),
@@ -1032,7 +1038,7 @@ class AssetPicker extends StatelessWidget {
10321038
child: Column(
10331039
children: <Widget>[
10341040
Expanded(child: assetsGrid(context)),
1035-
bottomActionBar(context),
1041+
if (!isSingleAssetMode) bottomActionBar(context),
10361042
],
10371043
),
10381044
),

0 commit comments

Comments
 (0)