previewButton method
Preview button to preview selected assets. 预览已选资源的按钮
Implementation
@override
Widget previewButton(BuildContext context) {
return Selector<DefaultAssetPickerProvider, bool>(
selector: (_, DefaultAssetPickerProvider p) => p.isSelectedNotEmpty,
builder: (BuildContext c, bool isSelectedNotEmpty, Widget? child) {
return GestureDetector(
onTap: () async {
if (!isSelectedNotEmpty) {
return;
}
final List<AssetEntity> _selected;
if (isWeChatMoment) {
_selected = provider.selectedAssets
.where((AssetEntity e) => e.type == AssetType.image)
.toList();
} else {
_selected = provider.selectedAssets;
}
final List<AssetEntity>? result =
await AssetPickerViewer.pushToViewer(
context,
currentIndex: 0,
previewAssets: _selected,
previewThumbSize: previewThumbSize,
selectedAssets: _selected,
selectorProvider: provider as DefaultAssetPickerProvider,
themeData: theme,
maxAssets: provider.maxAssets,
);
if (result != null) {
Navigator.of(context).pop(result);
}
},
child: Selector<DefaultAssetPickerProvider, String>(
selector: (_, DefaultAssetPickerProvider p) =>
p.selectedDescriptions,
builder: (_, __, ___) => Padding(
padding: const EdgeInsets.symmetric(vertical: 12.0),
child: Text(
isSelectedNotEmpty
? '${Constants.textDelegate.preview}'
' (${provider.selectedAssets.length})'
: Constants.textDelegate.preview,
style: TextStyle(
color: isSelectedNotEmpty
? null
: theme.textTheme.caption?.color,
fontSize: 18.0,
),
),
),
),
);
},
);
}