widgetmediaGallery function
GalleryWidgetBundle
widgetmediaGallery(
{ - required ARMOYUServices service,
- required dynamic context,
- int? userID,
- String? username,
- List<Media>? cachedmediaList,
- dynamic onmediaUpdated(
- List<Media> updatedMedia
)?,
- bool storyShare = false,
- bool allowuploadmedia = false,
})
Implementation
GalleryWidgetBundle widgetmediaGallery({
required ARMOYUServices service,
required context,
int? userID,
String? username,
List<Media>? cachedmediaList,
Function(List<Media> updatedMedia)? onmediaUpdated,
bool storyShare = false,
bool allowuploadmedia = false,
}) {
final controller = Get.put(
MediagalleryController(
service: service,
userID: userID,
username: username,
cachedmediaList: cachedmediaList,
onMediaUpdated: onmediaUpdated,
),
tag: "mediagallery-$userID");
Widget widget = Obx(
() => Column(
children: [
allowuploadmedia == false
? SizedBox.shrink()
: GalleryWidget(service)
.mediaList(
context,
onMediaUpdated: (onMediaUpdated) {},
)
.widget
.value!,
controller.filteredMediaList.value == null
? const Center(
child: CupertinoActivityIndicator(),
)
: GridView(
shrinkWrap: true,
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3,
crossAxisSpacing: 4.0,
mainAxisSpacing: 4.0,
),
padding: EdgeInsets.zero,
physics: const ClampingScrollPhysics(),
children: List.generate(
controller.filteredMediaList.value!.length,
(index) {
return GestureDetector(
onTap: () {
if (storyShare) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => StorypublishView(
service: service,
imageID: 1,
imageURL: controller.filteredMediaList
.value![index].mediaURL.bigURL.value,
),
),
);
return;
}
Get.dialog(
PhotoviewerView(
service: service,
media: controller.filteredMediaList.value!,
initialIndex: index,
),
barrierDismissible: true,
).whenComplete(() {
log('Photo viewer dialog closed.');
});
},
onLongPress: () {
if (controller
.currentUserAccounts.value.user.value.userID !=
controller
.filteredMediaList.value![index].ownerID!) {
return;
}
controller.onlongPress(context,
controller.filteredMediaList.value!, index);
},
child: CachedNetworkImage(
imageUrl: controller.filteredMediaList.value![index]
.mediaURL.minURL.value,
fit: BoxFit.cover,
placeholder: (context, url) =>
const CupertinoActivityIndicator(),
errorWidget: (context, url, error) =>
const Icon(Icons.error),
),
);
},
),
),
],
),
);
return GalleryWidgetBundle(
widget: Rxn(widget),
refresh: () async => await controller.refreshAllMedia(),
loadMore: () async => await controller.loadMoreMedia(),
popupGallery: () async => await showModalBottomSheet(
context: context,
builder: (context) {
return widget;
}),
);
}