diff --git a/lib/src/views/camera/camera_preview_components/camera_preview.dart b/lib/src/views/camera/camera_preview_components/camera_preview.dart index a59d5c7..8cfb61d 100644 --- a/lib/src/views/camera/camera_preview_components/camera_preview.dart +++ b/lib/src/views/camera/camera_preview_components/camera_preview.dart @@ -20,6 +20,8 @@ class HomeViewCameraPreview extends StatelessWidget { } return Positioned.fill( child: MediaViewSizing( + requiredHeight: 90, + bottomNavigation: Container(), child: Screenshot( controller: screenshotController, child: AspectRatio( @@ -58,6 +60,8 @@ class SendToCameraPreview extends StatelessWidget { } return Positioned.fill( child: MediaViewSizing( + requiredHeight: 90, + bottomNavigation: Container(), child: Screenshot( controller: screenshotController, child: AspectRatio( diff --git a/lib/src/views/camera/camera_preview_controller_view.dart b/lib/src/views/camera/camera_preview_controller_view.dart index 6fb566a..c3c7b77 100644 --- a/lib/src/views/camera/camera_preview_controller_view.dart +++ b/lib/src/views/camera/camera_preview_controller_view.dart @@ -590,6 +590,8 @@ class _CameraPreviewViewState extends State { return Container(); } return MediaViewSizing( + requiredHeight: 90, + bottomNavigation: Container(), child: GestureDetector( onPanStart: (details) async { if (isFront) { diff --git a/lib/src/views/camera/image_editor/layers/text_layer.dart b/lib/src/views/camera/image_editor/layers/text_layer.dart index 72dc428..b6b98e6 100755 --- a/lib/src/views/camera/image_editor/layers/text_layer.dart +++ b/lib/src/views/camera/image_editor/layers/text_layer.dart @@ -62,6 +62,27 @@ class _TextViewState extends State { }); } + Future onEditionComplete() async { + Future.delayed(const Duration(milliseconds: 10), () async { + setState(() { + widget.layerData.isDeleted = textController.text == ''; + widget.layerData.isEditing = false; + widget.layerData.text = textController.text; + }); + + if (!mounted) return; + + await context + .read() + .updateSomeTextViewIsAlreadyEditing(false); + if (widget.onUpdate != null) { + widget.onUpdate!(); + } + }); + } + + double maxBottomInset = 0; + @override Widget build(BuildContext context) { if (widget.layerData.isDeleted) return Container(); @@ -69,6 +90,16 @@ class _TextViewState extends State { final bottom = MediaQuery.of(context).viewInsets.bottom + MediaQuery.of(context).viewPadding.bottom; + if (maxBottomInset > bottom) { + maxBottomInset = 0; + if (widget.layerData.isEditing) { + widget.layerData.isEditing = false; + onEditionComplete(); + } + } else { + maxBottomInset = bottom; + } + if (widget.layerData.isEditing) { return Positioned( bottom: bottom - localBottom, @@ -83,20 +114,7 @@ class _TextViewState extends State { autofocus: true, maxLines: null, minLines: 1, - onEditingComplete: () async { - setState(() { - widget.layerData.isDeleted = textController.text == ''; - widget.layerData.isEditing = false; - widget.layerData.text = textController.text; - }); - - await context - .read() - .updateSomeTextViewIsAlreadyEditing(false); - if (widget.onUpdate != null) { - widget.onUpdate!(); - } - }, + onEditingComplete: onEditionComplete, onTapOutside: (a) async { widget.layerData.text = textController.text; Future.delayed(const Duration(milliseconds: 100), () async { diff --git a/lib/src/views/camera/share_image_editor_view.dart b/lib/src/views/camera/share_image_editor_view.dart index d38c36e..daa2ca8 100644 --- a/lib/src/views/camera/share_image_editor_view.dart +++ b/lib/src/views/camera/share_image_editor_view.dart @@ -477,6 +477,7 @@ class _ShareImageEditorView extends State { setState(() {}); }, child: MediaViewSizing( + requiredHeight: 90, bottomNavigation: ColoredBox( color: Theme.of(context).colorScheme.surface, child: Row( diff --git a/lib/src/views/components/media_view_sizing.dart b/lib/src/views/components/media_view_sizing.dart index 2dd7bc6..46ed904 100644 --- a/lib/src/views/components/media_view_sizing.dart +++ b/lib/src/views/components/media_view_sizing.dart @@ -58,7 +58,10 @@ class _MediaViewSizingState extends State { if (widget.bottomNavigation != null) { if (needToDownSizeImage) { imageChild = Expanded(child: imageChild); - bottomNavigation = widget.bottomNavigation!; + bottomNavigation = SizedBox( + height: widget.requiredHeight, + child: widget.bottomNavigation, + ); } else { bottomNavigation = Expanded(child: widget.bottomNavigation!); }