Skip to content

Commit 35a6a27

Browse files
committed
Improved image comment dialog and fullscreen hero animation
1 parent 971a39b commit 35a6a27

1 file changed

Lines changed: 0 additions & 136 deletions

File tree

lib/views/image/image_view_page.dart

Lines changed: 0 additions & 136 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import 'package:piwigo_ng/services/preferences_service.dart';
1818
import 'package:piwigo_ng/utils/image_actions.dart';
1919
import 'package:piwigo_ng/utils/localizations.dart';
2020
import 'package:piwigo_ng/utils/resources.dart';
21-
import 'package:piwigo_ng/utils/settings.dart';
2221
import 'package:piwigo_ng/views/image/video_player_page.dart';
2322

2423
/// Media Full Screen page
@@ -635,138 +634,3 @@ class _ImageViewPageState extends State<ImageViewPage> {
635634
return widget.isAdmin ? adminActions : userActions;
636635
}
637636
}
638-
639-
// todo: create component file "image_comment_dialog.dart"
640-
class ImageCommentDialog extends StatefulWidget {
641-
const ImageCommentDialog({Key? key, required this.image}) : super(key: key);
642-
643-
final ImageModel image;
644-
645-
@override
646-
State<ImageCommentDialog> createState() => _ImageCommentDialogState();
647-
}
648-
649-
class _ImageCommentDialogState extends State<ImageCommentDialog> {
650-
final ScrollController _controller = ScrollController();
651-
652-
@override
653-
void initState() {
654-
_controller.addListener(() => setState(() {}));
655-
super.initState();
656-
}
657-
658-
@override
659-
void dispose() {
660-
_controller.dispose();
661-
super.dispose();
662-
}
663-
664-
@override
665-
Widget build(BuildContext context) {
666-
bool isScrolled = false;
667-
bool isNameHidden = false;
668-
if (_controller.positions.isNotEmpty) {
669-
isScrolled = _controller.offset > 0.0;
670-
isNameHidden = _controller.offset > kToolbarHeight / 2;
671-
}
672-
return AlertDialog(
673-
backgroundColor: Theme.of(context).scaffoldBackgroundColor,
674-
contentPadding: EdgeInsets.zero,
675-
insetPadding: EdgeInsets.symmetric(vertical: 32.0, horizontal: 16.0),
676-
titlePadding: EdgeInsets.zero,
677-
title: AppBar(
678-
shape: RoundedRectangleBorder(
679-
borderRadius: BorderRadius.vertical(top: Radius.circular(30.0)),
680-
),
681-
primary: false,
682-
elevation: isScrolled ? 5.0 : 0.0,
683-
leading: IconButton(
684-
onPressed: () => Navigator.of(context).pop(),
685-
icon: Icon(Icons.close),
686-
),
687-
title: AnimatedOpacity(
688-
duration: const Duration(milliseconds: 300),
689-
curve: Curves.ease,
690-
opacity: isNameHidden ? 1.0 : 0.0,
691-
child: Text(
692-
widget.image.name,
693-
maxLines: 1,
694-
overflow: TextOverflow.ellipsis,
695-
style: Theme.of(context).textTheme.titleMedium,
696-
),
697-
),
698-
),
699-
content: ConstrainedBox(
700-
constraints: BoxConstraints(
701-
maxWidth: Settings.modalMaxWidth,
702-
),
703-
child: SingleChildScrollView(
704-
controller: _controller,
705-
padding: EdgeInsets.symmetric(
706-
vertical: 16.0,
707-
horizontal: 16.0,
708-
),
709-
child: Column(
710-
crossAxisAlignment: CrossAxisAlignment.stretch,
711-
children: [
712-
Text(
713-
widget.image.name,
714-
textAlign: TextAlign.center,
715-
style: Theme.of(context).textTheme.titleMedium,
716-
),
717-
Divider(
718-
color: Theme.of(context).disabledColor,
719-
),
720-
Text(
721-
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas tempor, eros eget ultrices tincidunt, lacus quam tempor neque, eu venenatis tellus nulla sit amet lectus. Praesent lacus orci, fermentum a elit vitae, cursus iaculis sapien. Sed ac ipsum ante. In efficitur urna sed pulvinar accumsan. Aliquam et condimentum ex. Quisque eleifend ipsum vitae magna gravida, eget maximus nisi posuere. Maecenas a dui et est posuere sollicitudin ac eget tellus. In quis est purus. Cras eget vestibulum justo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Sed vel elit in sapien bibendum porta. In eget felis auctor, tincidunt lectus sed, placerat lectus. Vivamus ac mauris sit amet turpis mollis tempor.Donec metus nunc, ultricies id lobortis sed, accumsan varius nunc. Duis et posuere ex. Donec ante urna, ornare non elit ac, egestas condimentum ex. Curabitur aliquam nec purus a hendrerit. Nam metus massa, aliquam eu ligula a, pretium maximus orci. Morbi eros arcu, egestas et lorem et, mattis posuere ex. In at lacus erat. Mauris aliquam lectus eget dui pretium faucibus. Ut mollis elit at orci tempor rutrum. Fusce tincidunt libero nisi, nec efficitur odio laoreet in. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aliquam consequat massa feugiat, rutrum eros sed, blandit nunc. Duis ac eleifend turpis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Etiam malesuada scelerisque purus vitae auctor. Etiam ut rhoncus eros.Pellentesque eget velit vel massa ultricies vestibulum quis in orci. Vivamus porttitor libero at elit dignissim, ut iaculis lorem placerat. Vivamus sed nisl turpis. Sed dictum enim a rhoncus lacinia. Pellentesque non finibus massa. Aenean leo diam, elementum et turpis a, placerat laoreet libero. Proin eu euismod felis, at laoreet augue. Vestibulum lobortis sapien ac scelerisque hendrerit.Etiam lacinia tempus erat, sed semper turpis ultrices ut. Aliquam erat volutpat. Aenean semper venenatis rhoncus. Cras sollicitudin ullamcorper ante, id placerat lacus facilisis id. Donec a metus consequat, accumsan ipsum a, tincidunt mi. Donec ullamcorper rhoncus augue, sed dapibus urna. Ut sed interdum arcu. Aliquam sagittis pulvinar feugiat. Maecenas sed auctor lectus, quis dapibus nisi. Etiam ac ullamcorper nulla, eget porttitor eros. Mauris varius lorem magna, eget ultrices lacus vestibulum in. Sed magna nulla, bibendum et orci et, placerat ultricies orci. Morbi consequat arcu odio, eget tristique purus porttitor non. Mauris ac egestas dolor. Nulla nec aliquam quam. Suspendisse consectetur ex non elementum maximus.Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Maecenas accumsan ante mattis nisi maximus, in feugiat metus pretium. Nam at porttitor purus, a cursus dolor. Etiam luctus eleifend hendrerit. Phasellus at mauris vulputate, volutpat neque vitae, laoreet massa. Nullam feugiat felis nec mi feugiat mollis. Phasellus consequat luctus dictum. Aliquam erat volutpat. In hac habitasse platea dictumst. Donec fringilla eleifend lorem. Aliquam erat volutpat. Pellentesque in elit vitae arcu maximus viverra. Donec accumsan lectus non bibendum pretium.",
722-
// image.comment!,
723-
style: Theme.of(context).textTheme.bodyMedium,
724-
),
725-
],
726-
),
727-
),
728-
),
729-
);
730-
return Center(
731-
child: ConstrainedBox(
732-
constraints: BoxConstraints(
733-
maxWidth: Settings.modalMaxWidth,
734-
),
735-
child: GestureDetector(
736-
onTap: () => Navigator.of(context).pop(),
737-
child: SingleChildScrollView(
738-
physics: const BouncingScrollPhysics(),
739-
padding: EdgeInsets.symmetric(
740-
vertical: 32.0,
741-
horizontal: 32.0,
742-
),
743-
child: Column(
744-
crossAxisAlignment: CrossAxisAlignment.stretch,
745-
children: [
746-
Text(
747-
widget.image.name,
748-
textAlign: TextAlign.center,
749-
style: TextStyle(
750-
fontSize: 24,
751-
color: Colors.white,
752-
),
753-
),
754-
Divider(
755-
color: Colors.white,
756-
),
757-
Text(
758-
// "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas tempor, eros eget ultrices tincidunt, lacus quam tempor neque, eu venenatis tellus nulla sit amet lectus. Praesent lacus orci, fermentum a elit vitae, cursus iaculis sapien. Sed ac ipsum ante. In efficitur urna sed pulvinar accumsan. Aliquam et condimentum ex. Quisque eleifend ipsum vitae magna gravida, eget maximus nisi posuere. Maecenas a dui et est posuere sollicitudin ac eget tellus. In quis est purus. Cras eget vestibulum justo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Sed vel elit in sapien bibendum porta. In eget felis auctor, tincidunt lectus sed, placerat lectus. Vivamus ac mauris sit amet turpis mollis tempor.Donec metus nunc, ultricies id lobortis sed, accumsan varius nunc. Duis et posuere ex. Donec ante urna, ornare non elit ac, egestas condimentum ex. Curabitur aliquam nec purus a hendrerit. Nam metus massa, aliquam eu ligula a, pretium maximus orci. Morbi eros arcu, egestas et lorem et, mattis posuere ex. In at lacus erat. Mauris aliquam lectus eget dui pretium faucibus. Ut mollis elit at orci tempor rutrum. Fusce tincidunt libero nisi, nec efficitur odio laoreet in. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aliquam consequat massa feugiat, rutrum eros sed, blandit nunc. Duis ac eleifend turpis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Etiam malesuada scelerisque purus vitae auctor. Etiam ut rhoncus eros.Pellentesque eget velit vel massa ultricies vestibulum quis in orci. Vivamus porttitor libero at elit dignissim, ut iaculis lorem placerat. Vivamus sed nisl turpis. Sed dictum enim a rhoncus lacinia. Pellentesque non finibus massa. Aenean leo diam, elementum et turpis a, placerat laoreet libero. Proin eu euismod felis, at laoreet augue. Vestibulum lobortis sapien ac scelerisque hendrerit.Etiam lacinia tempus erat, sed semper turpis ultrices ut. Aliquam erat volutpat. Aenean semper venenatis rhoncus. Cras sollicitudin ullamcorper ante, id placerat lacus facilisis id. Donec a metus consequat, accumsan ipsum a, tincidunt mi. Donec ullamcorper rhoncus augue, sed dapibus urna. Ut sed interdum arcu. Aliquam sagittis pulvinar feugiat. Maecenas sed auctor lectus, quis dapibus nisi. Etiam ac ullamcorper nulla, eget porttitor eros. Mauris varius lorem magna, eget ultrices lacus vestibulum in. Sed magna nulla, bibendum et orci et, placerat ultricies orci. Morbi consequat arcu odio, eget tristique purus porttitor non. Mauris ac egestas dolor. Nulla nec aliquam quam. Suspendisse consectetur ex non elementum maximus.Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Maecenas accumsan ante mattis nisi maximus, in feugiat metus pretium. Nam at porttitor purus, a cursus dolor. Etiam luctus eleifend hendrerit. Phasellus at mauris vulputate, volutpat neque vitae, laoreet massa. Nullam feugiat felis nec mi feugiat mollis. Phasellus consequat luctus dictum. Aliquam erat volutpat. In hac habitasse platea dictumst. Donec fringilla eleifend lorem. Aliquam erat volutpat. Pellentesque in elit vitae arcu maximus viverra. Donec accumsan lectus non bibendum pretium.",
759-
widget.image.comment!,
760-
style: TextStyle(
761-
fontSize: 14,
762-
color: Colors.white,
763-
),
764-
),
765-
],
766-
),
767-
),
768-
),
769-
),
770-
);
771-
}
772-
}

0 commit comments

Comments
 (0)