previewButton method

  1. @override
Widget previewButton(
  1. BuildContext context
)
override

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).maybePop(result);
          }
        },
        child: Selector<DefaultAssetPickerProvider, String>(
          selector: (_, DefaultAssetPickerProvider p) =>
              p.selectedDescriptions,
          builder: (_, __, ___) => Padding(
            padding: const EdgeInsets.symmetric(vertical: 12),
            child: ScaleText(
              isSelectedNotEmpty
                  ? '${Constants.textDelegate.preview}'
                      ' (${provider.selectedAssets.length})'
                  : Constants.textDelegate.preview,
              style: TextStyle(
                color: isSelectedNotEmpty
                    ? null
                    : theme.textTheme.caption?.color,
                fontSize: 17,
              ),
              maxScaleFactor: 1.2,
            ),
          ),
        ),
      );
    },
  );
}