gallery_picker/lib/views/album_view/selected_medias_view.dart

84 lines
3.0 KiB
Dart
Raw Normal View History

2023-01-20 09:58:21 +03:00
import 'package:bottom_sheet_scaffold/bottom_sheet_scaffold.dart';
2022-12-25 12:30:20 +03:00
import 'package:flutter/material.dart';
2023-01-20 09:58:21 +03:00
import 'package:gallery_picker/views/thumbnail_media_file.dart';
2022-12-25 12:30:20 +03:00
import '../../controller/gallery_controller.dart';
import '../../models/config.dart';
2022-12-29 08:45:28 +03:00
class SelectedMediasView extends StatelessWidget {
2022-12-30 05:18:18 +03:00
final PhoneGalleryController controller;
final Config config;
2023-01-20 09:58:21 +03:00
final bool isBottomSheet;
SelectedMediasView(
{super.key, required this.controller, required this.isBottomSheet})
2022-12-30 05:18:18 +03:00
: config = controller.config;
2022-12-25 12:30:20 +03:00
@override
Widget build(BuildContext context) {
double width = MediaQuery.of(context).size.width;
return Container(
color: config.bottomSheetColor,
width: width,
height: 65,
child: Padding(
padding: const EdgeInsets.only(left: 8.0),
child: Row(
children: [
SizedBox(
width: width * 0.8,
height: 55,
child: ListView(
scrollDirection: Axis.horizontal,
children: [
2023-01-20 09:58:21 +03:00
for (var mediaFile in controller.selectedFiles)
2022-12-25 12:30:20 +03:00
Padding(
padding: const EdgeInsets.only(
top: 3.0, bottom: 3.0, right: 2),
2023-01-20 09:58:21 +03:00
child: ThumbnailMediaFile(
file: mediaFile,
width: 50,
height: 55,
radius: 5,
noIcon: true,
noSelectedIcon: true,
failIconColor: controller.config.appbarIconColor,
controller: controller),
2022-12-25 12:30:20 +03:00
),
],
),
),
TextButton(
onPressed: () {
2022-12-29 08:45:28 +03:00
if (controller.selectedFiles.length == 1 &&
controller.heroBuilder != null) {
2022-12-25 12:30:20 +03:00
Navigator.of(context).push(
MaterialPageRoute<void>(builder: (BuildContext context) {
2022-12-29 08:45:28 +03:00
return controller.heroBuilder!(
2023-01-20 09:58:21 +03:00
controller.selectedFiles[0].id,
2022-12-29 08:45:28 +03:00
controller.selectedFiles[0],
context);
2022-12-25 12:30:20 +03:00
}));
2022-12-29 08:45:28 +03:00
} else if (controller.multipleMediasBuilder != null) {
2022-12-25 12:30:20 +03:00
Navigator.of(context).push(
MaterialPageRoute<void>(builder: (BuildContext context) {
2022-12-29 08:45:28 +03:00
return controller.multipleMediasBuilder!(
controller.selectedFiles, context);
2022-12-25 12:30:20 +03:00
}));
} else {
2022-12-29 08:45:28 +03:00
controller.onSelect(controller.selectedFiles);
2023-01-20 09:58:21 +03:00
if (isBottomSheet) {
BottomSheetPanel.close();
2022-12-29 08:45:28 +03:00
} else {
2022-12-25 12:30:20 +03:00
Navigator.pop(context);
2022-12-29 08:45:28 +03:00
controller.disposeController();
2022-12-25 12:30:20 +03:00
}
}
},
child: config.selectIcon,
)
],
),
),
);
}
}