gallery_picker/lib/gallery_picker.dart

119 lines
3.8 KiB
Dart
Raw Normal View History

2022-12-25 12:30:20 +03:00
library gallery_picker;
export 'models/config.dart';
2022-12-29 08:45:28 +03:00
export 'models/media_file.dart';
export 'models/mode.dart';
export 'models/medium.dart';
export 'models/gallery_media.dart';
export 'models/gallery_album.dart';
export 'user_widgets/thumbnail_media.dart';
export 'user_widgets/album_categories_view.dart';
export 'user_widgets/album_medias.dart';
export 'user_widgets/date_category_view.dart';
2022-12-29 12:12:06 +03:00
export 'user_widgets/thumbnail_album.dart';
2022-12-29 08:45:28 +03:00
export 'user_widgets/files_stream_builder.dart';
export 'user_widgets/photo_provider.dart';
export 'user_widgets/video_provider.dart';
export 'user_widgets/media_provider.dart';
export 'views/bottom_sheet.dart';
export 'views/gallery_picker_view/gallery_picker_view.dart';
2022-12-25 12:30:20 +03:00
import 'package:flutter/material.dart';
2022-12-29 08:45:28 +03:00
import 'package:gallery_picker/models/gallery_media.dart';
2022-12-25 12:30:20 +03:00
import 'package:get/get.dart';
import '../../controller/gallery_controller.dart';
2022-12-29 08:45:28 +03:00
import 'controller/bottom_sheet_controller.dart';
import 'controller/picker_listener.dart';
2022-12-25 12:30:20 +03:00
import 'models/config.dart';
import 'models/media_file.dart';
2022-12-29 08:45:28 +03:00
import 'views/gallery_picker_view/gallery_picker_view.dart';
2022-12-25 12:30:20 +03:00
2022-12-29 08:45:28 +03:00
class GalleryPicker {
static Stream<List<MediaFile>> get listenSelectedFiles {
var controller = Get.put(PickerListener());
return controller.stream;
}
2022-12-25 12:30:20 +03:00
2022-12-29 08:45:28 +03:00
static void disposeSelectedFilesListener() {
if (GetInstance().isRegistered<PickerListener>()) {
Get.find<PickerListener>().dispose();
}
}
2022-12-25 12:30:20 +03:00
2022-12-29 08:45:28 +03:00
static void dispose() {
2022-12-25 12:30:20 +03:00
if (GetInstance().isRegistered<PhoneGalleryController>()) {
2022-12-29 08:45:28 +03:00
Get.find<PhoneGalleryController>().disposeController();
2022-12-25 12:30:20 +03:00
}
2022-12-29 08:45:28 +03:00
if (GetInstance().isRegistered<BottomSheetController>()) {
Get.find<BottomSheetController>().disposeController();
2022-12-25 12:30:20 +03:00
}
}
2022-12-29 08:45:28 +03:00
static Future<List<MediaFile>?> pickMedias(
{Config? config,
bool startWithRecent = false,
List<MediaFile>? initSelectedMedias,
required BuildContext context}) async {
List<MediaFile>? medias;
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => GalleryPickerView(
onSelect: (mediasTmp) {
medias = mediasTmp;
},
config: config,
initSelectedMedias: initSelectedMedias,
startWithRecent: startWithRecent,
)),
);
return medias;
2022-12-25 12:30:20 +03:00
}
2022-12-29 08:45:28 +03:00
static Future<void> pickMediasWithBuilder(
{Config? config,
required Widget Function(List<MediaFile> medias, BuildContext context)?
multipleMediasBuilder,
Widget Function(String tag, MediaFile media, BuildContext context)?
heroBuilder,
List<MediaFile>? initSelectedMedias,
bool startWithRecent = false,
required BuildContext context}) async {
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => GalleryPickerView(
onSelect: (medias) {},
multipleMediasBuilder: multipleMediasBuilder,
heroBuilder: heroBuilder,
config: config,
initSelectedMedias: initSelectedMedias,
startWithRecent: startWithRecent,
)),
);
2022-12-25 12:30:20 +03:00
}
2022-12-29 08:45:28 +03:00
static Future<void> openSheet() async {
if (GetInstance().isRegistered<BottomSheetController>()) {
await Get.find<BottomSheetController>().open();
2022-12-25 12:30:20 +03:00
}
}
2022-12-29 08:45:28 +03:00
static Future<void> closeSheet() async {
if (GetInstance().isRegistered<BottomSheetController>()) {
await Get.find<BottomSheetController>().close();
}
2022-12-25 12:30:20 +03:00
}
2022-12-29 08:45:28 +03:00
static bool get isSheetOpened {
if (GetInstance().isRegistered<BottomSheetController>()) {
return Get.find<BottomSheetController>().sheetController.isExpanded;
2022-12-25 12:30:20 +03:00
} else {
2022-12-29 08:45:28 +03:00
return false;
2022-12-25 12:30:20 +03:00
}
}
2022-12-29 08:45:28 +03:00
static Future<GalleryMedia?> get collectGallery async {
return await PhoneGalleryController.collectGallery;
}
2022-12-25 12:30:20 +03:00
}