selectedBackdrop method
Animated backdrop widget for items. 部件选中时的动画遮罩部件
Implementation
@override
Widget selectedBackdrop(BuildContext context, int index, AssetEntity asset) {
final double indicatorSize = context.mediaQuery.size.width / gridCount / 3;
return Positioned.fill(
child: GestureDetector(
onTap: isPreviewEnabled ? () => viewAsset(context, index, asset) : null,
child: Consumer<DefaultAssetPickerProvider>(
builder: (_, DefaultAssetPickerProvider p, __) {
final int index = p.selectedAssets.indexOf(asset);
final bool selected = index != -1;
return AnimatedContainer(
duration: switchingPathDuration,
padding: EdgeInsets.all(indicatorSize * .35),
color: selected
? theme.colorScheme.primary.withOpacity(.45)
: theme.colorScheme.background.withOpacity(.1),
child: selected && !isSingleAssetMode
? Align(
alignment: AlignmentDirectional.topStart,
child: SizedBox(
height: indicatorSize / 2.5,
child: FittedBox(
alignment: AlignmentDirectional.topStart,
fit: BoxFit.cover,
child: Text(
'${index + 1}',
style: TextStyle(
color: theme.textTheme.bodyLarge?.color
?.withOpacity(.75),
fontWeight: FontWeight.w600,
height: 1,
),
),
),
),
)
: const SizedBox.shrink(),
);
},
),
),
);
}