photo_gallery

Creator: coderz1093

Last updated:

Add to Cart

Description:

photo gallery

Photo Gallery #

A Flutter plugin that retrieves images and videos from mobile native gallery.
Installation #
First, add photo_gallery as a dependency in your pubspec.yaml file.
iOS
Add the following keys to your Info.plist file, located in <project root>/ios/Runner/Info.plist:
NSPhotoLibraryUsageDescription - describe why your app needs permission for the photo library. This is called Privacy - Photo Library Usage Description in the visual editor.
<key>NSPhotoLibraryUsageDescription</key>
<string>Example usage description</string>
copied to clipboard
Android
Add the following permissions to your AndroidManifest.xml, located in <project root>/android/app/src/main/AndroidManifest.xml:
<manifest ...>
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<manifest/>
copied to clipboard
Usage #

Listing albums in the gallery

final List<Album> imageAlbums = await PhotoGallery.listAlbums();
final List<Album> videoAlbums = await PhotoGallery.listAlbums(
mediumType: MediumType.video,
newest: false,
hideIfEmpty: false,
);
copied to clipboard

Listing media in an album

final MediaPage imagePage = await imageAlbum.listMedia();
final MediaPage videoPage = await imageAlbum.listMedia(
skip: 5,
take: 10,
);
final List<Medium> allMedia = [
...imagePage.items,
...videoPage.items,
];
copied to clipboard

Loading more media in a album

if (!imagePage.isLast) {
final nextImagePage = await imagePage.nextPage();
// ...
}
copied to clipboard

Getting a Medium

final Medium medium = await PhotoGallery.getMedium(
mediumId: "10",
mediumType: MediumType.image
);
copied to clipboard

Getting a file

final File file = await medium.getFile();
copied to clipboard
final File file = await PhotoGallery.getFile(mediumId: mediumId);
copied to clipboard

Getting thumbnail data

final List<int> data = await medium.getThumbnail();
copied to clipboard
final List<int> data = await PhotoGallery.getThumbnail(mediumId: mediumId);
copied to clipboard
You can also specify thumbnail width and height on Android API 29 or higher; You can also specify thumbnail width, height and whether provider high quality or not on iOS:
final List<int> data = await medium.getThumbnail(
width: 128,
height: 128,
highQuality: true,
);
copied to clipboard
final List<int> data = await PhotoGallery.getThumbnail(
mediumId: mediumId,
mediumType: MediumType.image,
width: 128,
height: 128,
highQuality: true,
);
copied to clipboard

Getting album thumbnail data

final List<int> data = await album.getThumbnail();
copied to clipboard
final List<int> data = await PhotoGallery.getAlbumThumbnail(albumId: albumId);
copied to clipboard
You can also specify thumbnail width and height on Android API 29 or higher; You can also specify thumbnail width, height and whether provider high quality or not on iOS:
final List<int> data = await album.getThumbnail(
width: 128,
height: 128,
highQuality: true,
);
copied to clipboard
final List<int> data = await PhotoGallery.getAlbumThumbnail(
albumId: albumId,
mediumType: MediumType.image,
newest: false,
width: 128,
height: 128,
highQuality: true,
);
copied to clipboard

Displaying medium thumbnail

ThumbnailProvider are available to display thumbnail images (here with the help of dependency transparent_image):
FadeInImage(
fit: BoxFit.cover,
placeholder: MemoryImage(kTransparentImage),
image: ThumbnailProvider(
mediumId: mediumId,
mediumType: MediumType.image,
width: 128,
height: 128,
hightQuality: true,
),
)
copied to clipboard
Width and height is only available on Android API 29+ or iOS platform

Displaying album thumbnail

AlbumThumbnailProvider are available to display album thumbnail images (here with the help of dependency transparent_image):
FadeInImage(
fit: BoxFit.cover,
placeholder: MemoryImage(kTransparentImage),
image: AlbumThumbnailProvider(
album: album,
width: 128,
height: 128,
hightQuality: true,
),
)
copied to clipboard
Width and height is only available on Android API 29+ or iOS platform. High quality is only available on iOS platform.

Displaying a full size image

You can use PhotoProvider to display the full size image (here with the help of dependency transparent_image):
FadeInImage(
fit: BoxFit.cover,
placeholder: MemoryImage(kTransparentImage),
image: PhotoProvider(
mediumId: mediumId,
),
)
copied to clipboard

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.