mediaThumbnail method

Widget mediaThumbnail({
  1. 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,
                            )),
            ),
          ),
        );
      },
    ),
  );
}