import 'dart:io'; import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; class PickedImagesContainer extends StatelessWidget { final List pickedImages; final Function(String filePath)? onCrossPressedPrimary; final Function(int index, String filePath)? onCrossPressedSecondary; final int? index; final bool isReview; final Function() onAddImagePressed; const PickedImagesContainer({ Key? key, required this.pickedImages, this.onCrossPressedPrimary, this.onCrossPressedSecondary, this.index, required this.onAddImagePressed, this.isReview = false, }) : super(key: key); @override Widget build(BuildContext context) { return GridView.count( physics: const NeverScrollableScrollPhysics(), shrinkWrap: true, crossAxisCount: 4, crossAxisSpacing: 4.0, mainAxisSpacing: 8.0, children: List.generate( isReview ? pickedImages.length : pickedImages.length + 1, (index) { if (index == pickedImages.length && !isReview) { return Container( decoration: BoxDecoration( color: MyColors.greyButtonColor, border: Border.all(width: 2, color: MyColors.greyAddBorderColor)), margin: const EdgeInsets.all(8), alignment: Alignment.center, child: Container( height: 24, width: 24, decoration: const BoxDecoration(shape: BoxShape.circle, color: MyColors.darkTextColor), child: const Icon(Icons.add, color: MyColors.white), ), ).onPress(onAddImagePressed); } return Center( child: BuildImageContainer( file: pickedImages[index], onCrossPressedPrimary: onCrossPressedPrimary, onCrossPressedSecondary: onCrossPressedSecondary, index: index, isReview: isReview, ), ); }, ), ); // return Wrap( // children: pickedImages // .map((file) => BuildImageContainer( // file: file, // onCrossPressedPrimary: onCrossPressedPrimary, // onCrossPressedSecondary: onCrossPressedSecondary, // index: index, // isReview: isReview, // )) // .toList(), // ); } } class BuildImageContainer extends StatelessWidget { final File file; final Function(String filePath)? onCrossPressedPrimary; final Function(int index, String filePath)? onCrossPressedSecondary; final int? index; final bool isReview; const BuildImageContainer({ Key? key, required this.file, this.onCrossPressedPrimary, this.onCrossPressedSecondary, this.index, this.isReview = false, }) : super(key: key); @override Widget build(BuildContext context) { return Stack( children: [ Container( height: 90, width: 90, child: Stack( children: [ Image.file( file, fit: BoxFit.fill, height: 72, width: 70, ).paddingAll(8), !isReview ? Align( alignment: Alignment.topRight, child: MyAssets.closeWithOrangeBg.buildSvg( fit: BoxFit.fill, height: 30, width: 30, ), ).onPress(() { if (onCrossPressedPrimary == null) { onCrossPressedSecondary!(index!, file.path); return; } onCrossPressedPrimary!(file.path); }) : const SizedBox() ], )), ], ); } }