From e0afe288b35b7be56a6ee76f8ec1cc6595369af6 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Tue, 16 Aug 2022 11:02:15 +0200 Subject: [PATCH] added sheet indicator --- lib/screens/main_screen.dart | 121 +++++++++++++++++-------------- lib/widgets/sheet_indicator.dart | 17 +++++ 2 files changed, 82 insertions(+), 56 deletions(-) create mode 100644 lib/widgets/sheet_indicator.dart diff --git a/lib/screens/main_screen.dart b/lib/screens/main_screen.dart index 3e08eb3..bc9816e 100644 --- a/lib/screens/main_screen.dart +++ b/lib/screens/main_screen.dart @@ -15,6 +15,7 @@ import 'package:share_location/widgets/animate_in_builder.dart'; import 'package:share_location/widgets/camera_button.dart'; import 'package:share_location/widgets/change_camera_button.dart'; import 'package:share_location/widgets/fade_and_move_in_animation.dart'; +import 'package:share_location/widgets/sheet_indicator.dart'; import 'package:share_location/widgets/today_photo_button.dart'; import 'package:share_location/widgets/uploading_photo.dart'; import 'package:supabase_flutter/supabase_flutter.dart'; @@ -292,64 +293,74 @@ class _MainScreenState extends AuthRequiredState with Loadable { topRight: Radius.circular(LARGE_SPACE), ), ), - child: Padding( - padding: const EdgeInsets.all(LARGE_SPACE), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - FadeAndMoveInAnimation( - translationDuration: DEFAULT_TRANSLATION_DURATION * - SECONDARY_BUTTONS_DURATION_MULTIPLIER, - opacityDuration: DEFAULT_OPACITY_DURATION * - SECONDARY_BUTTONS_DURATION_MULTIPLIER, - child: ChangeCameraButton( - onChangeCamera: () { - final currentCameraIndex = GlobalValuesManager.cameras - .indexOf(controller!.description); - final availableCameras = - GlobalValuesManager.cameras.length; + child: Column( + children: [ + const Padding( + padding: EdgeInsets.symmetric(vertical: MEDIUM_SPACE), + child: SheetIndicator(), + ), + Padding( + padding: const EdgeInsets.all(LARGE_SPACE), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + FadeAndMoveInAnimation( + translationDuration: DEFAULT_TRANSLATION_DURATION * + SECONDARY_BUTTONS_DURATION_MULTIPLIER, + opacityDuration: DEFAULT_OPACITY_DURATION * + SECONDARY_BUTTONS_DURATION_MULTIPLIER, + child: ChangeCameraButton( + onChangeCamera: () { + final currentCameraIndex = GlobalValuesManager + .cameras + .indexOf(controller!.description); + final availableCameras = + GlobalValuesManager.cameras.length; - onNewCameraSelected( - GlobalValuesManager.cameras[ - (currentCameraIndex + 1) % availableCameras], - ); - }, - ), - ), - FadeAndMoveInAnimation( - child: CameraButton( - disabled: lockCamera, - active: isRecording, - onVideoBegin: () async { - setState(() { - isRecording = true; - }); + onNewCameraSelected( + GlobalValuesManager.cameras[ + (currentCameraIndex + 1) % + availableCameras], + ); + }, + ), + ), + FadeAndMoveInAnimation( + child: CameraButton( + disabled: lockCamera, + active: isRecording, + onVideoBegin: () async { + setState(() { + isRecording = true; + }); - if (controller!.value.isRecordingVideo) { - // A recording has already started, do nothing. - return; - } + if (controller!.value.isRecordingVideo) { + // A recording has already started, do nothing. + return; + } - await controller!.startVideoRecording(); - }, - onVideoEnd: takeVideo, - onPhotoShot: takePhoto, - ), + await controller!.startVideoRecording(); + }, + onVideoEnd: takeVideo, + onPhotoShot: takePhoto, + ), + ), + FadeAndMoveInAnimation( + translationDuration: DEFAULT_TRANSLATION_DURATION * + SECONDARY_BUTTONS_DURATION_MULTIPLIER, + opacityDuration: DEFAULT_OPACITY_DURATION * + SECONDARY_BUTTONS_DURATION_MULTIPLIER, + child: lastPhoto == null + ? const TodayPhotoButton() + : TodayPhotoButton( + data: lastPhoto![0], + type: lastPhoto![1], + ), + ), + ], ), - FadeAndMoveInAnimation( - translationDuration: DEFAULT_TRANSLATION_DURATION * - SECONDARY_BUTTONS_DURATION_MULTIPLIER, - opacityDuration: DEFAULT_OPACITY_DURATION * - SECONDARY_BUTTONS_DURATION_MULTIPLIER, - child: lastPhoto == null - ? const TodayPhotoButton() - : TodayPhotoButton( - data: lastPhoto![0], - type: lastPhoto![1], - ), - ), - ], - ), + ), + ], ), ), expandableContent: Padding( @@ -392,8 +403,6 @@ class _MainScreenState extends AuthRequiredState with Loadable { onPressed: () { final newZoomLevelIndex = ((currentZoomLevel + 1) % zoomLevels.length).toInt(); - print(newZoomLevelIndex); - print(zoomLevels); controller!.setZoomLevel(zoomLevels[newZoomLevelIndex]); diff --git a/lib/widgets/sheet_indicator.dart b/lib/widgets/sheet_indicator.dart new file mode 100644 index 0000000..4d6fa54 --- /dev/null +++ b/lib/widgets/sheet_indicator.dart @@ -0,0 +1,17 @@ +import 'package:flutter/material.dart'; + +class SheetIndicator extends StatelessWidget { + const SheetIndicator({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Container( + width: 100, + height: 5, + decoration: BoxDecoration( + color: Colors.white24, + borderRadius: BorderRadius.circular(10), + ), + ); + } +}