72 lines
2.5 KiB
Dart
72 lines
2.5 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import '../../../utils/Extensions/extensions.dart';
|
|
import '../../../utils/responsiveSize.dart';
|
|
import '../../../utils/ui_utils.dart';
|
|
import 'video_view_screen.dart';
|
|
|
|
class AllGallaryImages extends StatelessWidget {
|
|
final List images;
|
|
final String? youtubeThumbnail;
|
|
const AllGallaryImages(
|
|
{super.key, required this.images, this.youtubeThumbnail});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
backgroundColor: context.color.backgroundColor,
|
|
appBar: UiUtils.buildAppBar(
|
|
context,
|
|
showBackButton: true,
|
|
),
|
|
body: GridView.builder(
|
|
itemCount: images.length,
|
|
padding: const EdgeInsets.all(16),
|
|
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
|
|
crossAxisCount: 3, crossAxisSpacing: 5, mainAxisSpacing: 5),
|
|
itemBuilder: (context, index) {
|
|
return ClipRRect(
|
|
borderRadius: BorderRadius.circular(18),
|
|
child: GestureDetector(
|
|
onTap: () {
|
|
if (images[index].isVideo == true) {
|
|
Navigator.push(context, MaterialPageRoute(
|
|
builder: (context) {
|
|
return VideoViewScreen(videoUrl: images[index].image);
|
|
},
|
|
));
|
|
} else {
|
|
var stringImages = images.map((e) => e.imageUrl).toList();
|
|
UiUtils.imageGallaryView(
|
|
context,
|
|
images: stringImages,
|
|
initalIndex: index,
|
|
then: () {},
|
|
);
|
|
}
|
|
},
|
|
child: SizedBox(
|
|
width: 76.rw(context),
|
|
height: 76.rh(context),
|
|
child: images[index].isVideo == true
|
|
? Stack(
|
|
fit: StackFit.expand,
|
|
children: [
|
|
UiUtils.getImage(youtubeThumbnail!,
|
|
fit: BoxFit.cover),
|
|
const Icon(
|
|
Icons.play_arrow,
|
|
size: 28,
|
|
)
|
|
],
|
|
)
|
|
: UiUtils.getImage(images[index].imageUrl ?? "",
|
|
fit: BoxFit.cover),
|
|
),
|
|
));
|
|
},
|
|
),
|
|
);
|
|
}
|
|
}
|