95 lines
3.3 KiB
Dart
Raw Normal View History

2022-12-25 12:30:20 +03:00
import 'package:flutter/material.dart';
2022-12-29 08:45:28 +03:00
import '../../controller/bottom_sheet_controller.dart';
2022-12-25 12:30:20 +03:00
import 'package:get/get.dart';
import '../../../controller/gallery_controller.dart';
import '../../../models/media_file.dart';
2022-12-29 12:12:06 +03:00
import '../thumbnail_media_file.dart';
2022-12-25 12:30:20 +03:00
class MediaView extends StatelessWidget {
final MediaFile file;
2022-12-30 05:18:18 +03:00
final PhoneGalleryController controller;
final bool singleMedia;
const MediaView(this.file,
2022-12-29 08:45:28 +03:00
{super.key, required this.controller, required this.singleMedia});
2022-12-25 12:30:20 +03:00
@override
Widget build(BuildContext context) {
return Stack(
fit: StackFit.expand,
children: [
GestureDetector(
onLongPress: () {
2022-12-29 08:45:28 +03:00
if (singleMedia) {
if (controller.heroBuilder != null) {
Navigator.of(context).push(
MaterialPageRoute<void>(builder: (BuildContext context) {
return controller.heroBuilder!(file.medium.id, file, context);
}));
} else {
controller.selectedFiles.add(file);
controller.onSelect(controller.selectedFiles);
controller.updatePickerListener();
if (GetInstance().isRegistered<BottomSheetController>()) {
Get.find<BottomSheetController>().close();
} else {
Navigator.pop(context);
controller.disposeController();
}
}
} else {
file.select(controller: controller);
}
2022-12-25 12:30:20 +03:00
},
onTap: () {
if (controller.pickerMode) {
2022-12-29 08:45:28 +03:00
file.isSelected(controller: controller)!
? file.unselect(controller: controller)
: file.select(controller: controller);
2022-12-25 12:30:20 +03:00
} else {
if (controller.heroBuilder != null) {
Navigator.of(context).push(
MaterialPageRoute<void>(builder: (BuildContext context) {
2022-12-29 08:45:28 +03:00
return controller.heroBuilder!(file.medium.id, file, context);
2022-12-25 12:30:20 +03:00
}));
} else {
2022-12-29 08:45:28 +03:00
controller.selectedFiles.add(file);
controller.onSelect(controller.selectedFiles);
controller.updatePickerListener();
if (GetInstance().isRegistered<BottomSheetController>()) {
Get.find<BottomSheetController>().close();
} else {
Navigator.pop(context);
controller.disposeController();
}
2022-12-25 12:30:20 +03:00
}
}
},
2022-12-29 12:12:06 +03:00
child: ThumbnailMediaFile(
2022-12-29 08:45:28 +03:00
file: file,
failIconColor: controller.config.appbarIconColor,
config: controller.config,
),
2022-12-25 12:30:20 +03:00
),
2022-12-29 08:45:28 +03:00
if (file.isSelected(controller: controller)!)
2022-12-25 12:30:20 +03:00
GestureDetector(
onTap: () {
2022-12-29 08:45:28 +03:00
file.isSelected(controller: controller)!
? file.unselect(controller: controller)
: file.select(controller: controller);
2022-12-25 12:30:20 +03:00
},
child: Opacity(
opacity: 0.5,
child: Container(
color: Colors.black,
child: const Icon(
Icons.check,
color: Colors.white,
size: 45,
),
),
),
),
],
);
}
}