mediaThumbnail method
Widget
mediaThumbnail(
{ - bool isBorderView = false,
})
Implementation
Widget mediaThumbnail({bool isBorderView = false}) {
return SizedBox(
height: 82,
width: MediaQuery.of(context).size.width,
child: ListView.builder(
scrollDirection: Axis.horizontal,
physics: const AlwaysScrollableScrollPhysics(),
itemCount: widget._controller.files.length,
itemBuilder: (context, index) {
final file = widget._controller.files.elementAt(index);
return Padding(
padding: const EdgeInsets.all(5.0),
child: GestureDetector(
onTap: widget._controller.preview
? () {
if (!showPreviewPage) {
setState(() {
showPreviewPage = true;
currentIndex = index;
});
}
Future.delayed(
const Duration(milliseconds: 100),
() => previewPageController.animateToPage(index,
duration: const Duration(milliseconds: 500),
curve: Curves.ease),
);
}
: null,
child: Container(
width: 72.0,
height: 82.0,
decoration: BoxDecoration(
color: file.getMediaType() == MediaType.video
? Colors.black.withValues(alpha: 0.3)
: Colors.transparent,
border: isBorderView
? currentIndex == index
? Border.all(color: iconColor, width: 3.0)
: Border.all(color: Colors.transparent, width: 3.0)
: Border.all(color: Colors.transparent, width: 3.0),
borderRadius: const BorderRadius.all(Radius.circular(5.0)),
),
child: ClipRRect(
borderRadius: BorderRadius.all(isBorderView
? const Radius.circular(0.0)
: const Radius.circular(5.0)),
child: kIsWeb
? DisplayMediaWeb(file: file, isThumbnail: true)
: file.getMediaType() == MediaType.image
? Image.file(
file.toFile()!,
fit: BoxFit.cover,
key: file.path == null
? null
: ValueKey(file.path),
)
: const Icon(
Icons.play_arrow,
color: Colors.white,
)),
),
),
);
},
),
);
}