multiple hero with same id issue handled

This commit is contained in:
Furkan 2023-01-02 13:18:23 +03:00
parent 9d2ec4d6b2
commit 13fc79fb7b
10 changed files with 50 additions and 20 deletions

View File

@ -1 +1 @@
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"permission_handler_apple","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\permission_handler_apple-9.0.7\\\\","native_build":true,"dependencies":[]},{"name":"photo_gallery","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\photo_gallery-1.1.1\\\\","native_build":true,"dependencies":[]},{"name":"video_player_avfoundation","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\video_player_avfoundation-2.3.8\\\\","native_build":true,"dependencies":[]},{"name":"video_thumbnail","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\video_thumbnail-0.5.3\\\\","native_build":true,"dependencies":[]}],"android":[{"name":"permission_handler_android","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\permission_handler_android-10.2.0\\\\","native_build":true,"dependencies":[]},{"name":"photo_gallery","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\photo_gallery-1.1.1\\\\","native_build":true,"dependencies":[]},{"name":"video_player_android","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\video_player_android-2.3.10\\\\","native_build":true,"dependencies":[]},{"name":"video_thumbnail","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\video_thumbnail-0.5.3\\\\","native_build":true,"dependencies":[]}],"macos":[],"linux":[],"windows":[{"name":"permission_handler_windows","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\permission_handler_windows-0.1.2\\\\","native_build":true,"dependencies":[]}],"web":[{"name":"video_player_web","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\video_player_web-2.0.13\\\\","dependencies":[]}]},"dependencyGraph":[{"name":"permission_handler","dependencies":["permission_handler_android","permission_handler_apple","permission_handler_windows"]},{"name":"permission_handler_android","dependencies":[]},{"name":"permission_handler_apple","dependencies":[]},{"name":"permission_handler_windows","dependencies":[]},{"name":"photo_gallery","dependencies":[]},{"name":"video_player","dependencies":["video_player_android","video_player_avfoundation","video_player_web"]},{"name":"video_player_android","dependencies":[]},{"name":"video_player_avfoundation","dependencies":[]},{"name":"video_player_web","dependencies":[]},{"name":"video_thumbnail","dependencies":[]}],"date_created":"2023-01-01 20:36:53.862529","version":"3.3.10"} {"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"permission_handler_apple","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\permission_handler_apple-9.0.7\\\\","native_build":true,"dependencies":[]},{"name":"photo_gallery","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\photo_gallery-1.1.1\\\\","native_build":true,"dependencies":[]},{"name":"video_player_avfoundation","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\video_player_avfoundation-2.3.8\\\\","native_build":true,"dependencies":[]},{"name":"video_thumbnail","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\video_thumbnail-0.5.3\\\\","native_build":true,"dependencies":[]}],"android":[{"name":"permission_handler_android","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\permission_handler_android-10.2.0\\\\","native_build":true,"dependencies":[]},{"name":"photo_gallery","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\photo_gallery-1.1.1\\\\","native_build":true,"dependencies":[]},{"name":"video_player_android","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\video_player_android-2.3.10\\\\","native_build":true,"dependencies":[]},{"name":"video_thumbnail","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\video_thumbnail-0.5.3\\\\","native_build":true,"dependencies":[]}],"macos":[],"linux":[],"windows":[{"name":"permission_handler_windows","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\permission_handler_windows-0.1.2\\\\","native_build":true,"dependencies":[]}],"web":[{"name":"video_player_web","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\video_player_web-2.0.13\\\\","dependencies":[]}]},"dependencyGraph":[{"name":"permission_handler","dependencies":["permission_handler_android","permission_handler_apple","permission_handler_windows"]},{"name":"permission_handler_android","dependencies":[]},{"name":"permission_handler_apple","dependencies":[]},{"name":"permission_handler_windows","dependencies":[]},{"name":"photo_gallery","dependencies":[]},{"name":"video_player","dependencies":["video_player_android","video_player_avfoundation","video_player_web"]},{"name":"video_player_android","dependencies":[]},{"name":"video_player_avfoundation","dependencies":[]},{"name":"video_player_web","dependencies":[]},{"name":"video_thumbnail","dependencies":[]}],"date_created":"2023-01-02 13:18:01.553448","version":"3.3.10"}

View File

@ -62,3 +62,7 @@
## 0.1.5 ## 0.1.5
* changes made * changes made
## 0.1.6
* multiple hero with same id issue handled

View File

@ -141,7 +141,7 @@ packages:
path: ".." path: ".."
relative: true relative: true
source: path source: path
version: "0.1.5" version: "0.1.6"
get: get:
dependency: transitive dependency: transitive
description: description:

View File

@ -7,10 +7,12 @@ import 'selected_medias_view.dart';
class AlbumMediasView extends StatelessWidget { class AlbumMediasView extends StatelessWidget {
final PhoneGalleryController controller; final PhoneGalleryController controller;
final bool singleMedia; final bool singleMedia;
final bool isCollapsedSheet;
const AlbumMediasView( const AlbumMediasView(
{super.key, {super.key,
required this.galleryAlbum, required this.galleryAlbum,
required this.controller, required this.controller,
required this.isCollapsedSheet,
required this.singleMedia}); required this.singleMedia});
final GalleryAlbum galleryAlbum; final GalleryAlbum galleryAlbum;
@override @override
@ -24,6 +26,7 @@ class AlbumMediasView extends StatelessWidget {
category: category, category: category,
controller: controller, controller: controller,
singleMedia: singleMedia, singleMedia: singleMedia,
isCollapsedSheet: isCollapsedSheet,
), ),
], ],
), ),

View File

@ -11,11 +11,13 @@ class AlbumPage extends StatelessWidget {
final PhoneGalleryController controller; final PhoneGalleryController controller;
final BottomSheetController? bottomSheetController; final BottomSheetController? bottomSheetController;
final GalleryAlbum album; final GalleryAlbum album;
final bool isCollapsedSheet;
const AlbumPage( const AlbumPage(
{super.key, {super.key,
required this.album, required this.album,
required this.controller, required this.controller,
required this.singleMedia, required this.singleMedia,
required this.isCollapsedSheet,
required this.bottomSheetController}); required this.bottomSheetController});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -29,6 +31,7 @@ class AlbumPage extends StatelessWidget {
body: AlbumMediasView( body: AlbumMediasView(
galleryAlbum: album, galleryAlbum: album,
controller: controller, controller: controller,
isCollapsedSheet: isCollapsedSheet,
singleMedia: singleMedia, singleMedia: singleMedia,
), ),
); );

View File

@ -8,11 +8,13 @@ class DateCategoryWiew extends StatelessWidget {
final PhoneGalleryController controller; final PhoneGalleryController controller;
final bool singleMedia; final bool singleMedia;
final DateCategory category; final DateCategory category;
final bool isCollapsedSheet;
const DateCategoryWiew( const DateCategoryWiew(
{super.key, {super.key,
required this.category, required this.category,
required this.controller, required this.controller,
required this.isCollapsedSheet,
required this.singleMedia}); required this.singleMedia});
int getRowCount() { int getRowCount() {
@ -47,11 +49,10 @@ class DateCategoryWiew extends StatelessWidget {
crossAxisSpacing: 1.0, crossAxisSpacing: 1.0,
children: <Widget>[ children: <Widget>[
...category.files.map( ...category.files.map(
(medium) => MediaView( (medium) => MediaView(medium,
medium, controller: controller,
controller: controller, singleMedia: singleMedia,
singleMedia: singleMedia, isCollapsedSheet: isCollapsedSheet),
),
), ),
], ],
), ),

View File

@ -9,8 +9,12 @@ class MediaView extends StatelessWidget {
final MediaFile file; final MediaFile file;
final PhoneGalleryController controller; final PhoneGalleryController controller;
final bool singleMedia; final bool singleMedia;
final bool isCollapsedSheet;
const MediaView(this.file, const MediaView(this.file,
{super.key, required this.controller, required this.singleMedia}); {super.key,
required this.controller,
required this.singleMedia,
required this.isCollapsedSheet});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Stack( return Stack(
@ -64,10 +68,10 @@ class MediaView extends StatelessWidget {
} }
}, },
child: ThumbnailMediaFile( child: ThumbnailMediaFile(
file: file, file: file,
failIconColor: controller.config.appbarIconColor, failIconColor: controller.config.appbarIconColor,
config: controller.config, controller: controller,
), isCollapsedSheet: isCollapsedSheet),
), ),
if (file.isSelected(controller: controller)!) if (file.isSelected(controller: controller)!)
GestureDetector( GestureDetector(

View File

@ -24,6 +24,7 @@ class GalleryPickerView extends StatefulWidget {
final List<MediaFile>? initSelectedMedia; final List<MediaFile>? initSelectedMedia;
final List<MediaFile>? extraRecentMedia; final List<MediaFile>? extraRecentMedia;
final bool singleMedia; final bool singleMedia;
final bool isCollapsedSheet;
const GalleryPickerView( const GalleryPickerView(
{super.key, {super.key,
this.config, this.config,
@ -31,6 +32,7 @@ class GalleryPickerView extends StatefulWidget {
this.initSelectedMedia, this.initSelectedMedia,
this.extraRecentMedia, this.extraRecentMedia,
this.singleMedia = false, this.singleMedia = false,
this.isCollapsedSheet = false,
this.sheetController, this.sheetController,
this.heroBuilder, this.heroBuilder,
this.multipleMediaBuilder, this.multipleMediaBuilder,
@ -190,6 +192,7 @@ class _GalleryPickerState extends State<GalleryPickerView> {
? AlbumMediasView( ? AlbumMediasView(
galleryAlbum: controller.recent!, galleryAlbum: controller.recent!,
controller: controller, controller: controller,
isCollapsedSheet: widget.isCollapsedSheet,
singleMedia: widget.singleMedia) singleMedia: widget.singleMedia)
: const Center( : const Center(
child: CircularProgressIndicator( child: CircularProgressIndicator(
@ -205,6 +208,7 @@ class _GalleryPickerState extends State<GalleryPickerView> {
controller: controller, controller: controller,
album: controller.selectedAlbum!, album: controller.selectedAlbum!,
singleMedia: widget.singleMedia, singleMedia: widget.singleMedia,
isCollapsedSheet: widget.isCollapsedSheet,
bottomSheetController: bottomSheetController, bottomSheetController: bottomSheetController,
) )
: ReloadGallery( : ReloadGallery(

View File

@ -1,5 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../models/config.dart'; import '../controller/gallery_controller.dart';
import '../models/mode.dart'; import '../models/mode.dart';
import '/models/media_file.dart'; import '/models/media_file.dart';
import 'package:transparent_image/transparent_image.dart'; import 'package:transparent_image/transparent_image.dart';
@ -7,20 +7,22 @@ import 'package:transparent_image/transparent_image.dart';
class ThumbnailMediaFile extends StatelessWidget { class ThumbnailMediaFile extends StatelessWidget {
final MediaFile file; final MediaFile file;
final Color failIconColor; final Color failIconColor;
final Config config; final PhoneGalleryController controller;
final bool isCollapsedSheet;
const ThumbnailMediaFile( const ThumbnailMediaFile(
{super.key, {super.key,
required this.file, required this.file,
required this.failIconColor, required this.failIconColor,
required this.config}); required this.isCollapsedSheet,
required this.controller});
Color adjustFailedBgColor() { Color adjustFailedBgColor() {
if (config.mode == Mode.dark) { if (controller.config.mode == Mode.dark) {
return lighten( return lighten(
config.backgroundColor, controller.config.backgroundColor,
); );
} else { } else {
return darken(config.backgroundColor); return darken(controller.config.backgroundColor);
} }
} }
@ -57,7 +59,9 @@ class ThumbnailMediaFile extends StatelessWidget {
size: 50, size: 50,
color: failIconColor, color: failIconColor,
)) ))
else if (file.thumbnail != null) else if (file.thumbnail != null &&
!isCollapsedSheet &&
controller.heroBuilder != null)
Hero( Hero(
tag: file.medium.id, tag: file.medium.id,
child: FadeInImage( child: FadeInImage(
@ -67,6 +71,13 @@ class ThumbnailMediaFile extends StatelessWidget {
image: MemoryImage(file.thumbnail!), image: MemoryImage(file.thumbnail!),
), ),
) )
else if (file.thumbnail != null && controller.heroBuilder == null)
FadeInImage(
fadeInDuration: const Duration(milliseconds: 200),
fit: BoxFit.cover,
placeholder: MemoryImage(kTransparentImage),
image: MemoryImage(file.thumbnail!),
)
else else
const SizedBox(), const SizedBox(),
if (file.thumbnail != null && !file.thumbnailFailed) if (file.thumbnail != null && !file.thumbnailFailed)

View File

@ -1,6 +1,6 @@
name: gallery_picker name: gallery_picker
description: Gallery Picker is a flutter package that will allow you to pick media file(s), manage and navigate inside your gallery with modern tools and views. description: Gallery Picker is a flutter package that will allow you to pick media file(s), manage and navigate inside your gallery with modern tools and views.
version: 0.1.5 version: 0.1.6
homepage: https://github.com/FlutterWay/gallery_picker homepage: https://github.com/FlutterWay/gallery_picker
environment: environment: