diff --git a/lib/ui/viewer/file_details/location_tags_widget.dart b/lib/ui/viewer/file_details/location_tags_widget.dart index 6affe21d8..f1b3d3157 100644 --- a/lib/ui/viewer/file_details/location_tags_widget.dart +++ b/lib/ui/viewer/file_details/location_tags_widget.dart @@ -1,4 +1,5 @@ import "dart:async"; +import "dart:ui"; import "package:flutter/material.dart"; import "package:flutter_map/flutter_map.dart"; @@ -10,6 +11,7 @@ import "package:photos/generated/l10n.dart"; import "package:photos/models/file/file.dart"; import "package:photos/services/location_service.dart"; import "package:photos/services/search_service.dart"; +import "package:photos/services/user_remote_flag_service.dart"; import "package:photos/states/location_screen_state.dart"; import "package:photos/theme/ente_theme.dart"; import "package:photos/ui/components/buttons/chip_button_widget.dart"; @@ -39,6 +41,7 @@ class _LocationTagsWidgetState extends State { late StreamSubscription _locTagUpdateListener; VoidCallback? onTap; final _mapController = MapController(); + late bool _hasEnabledMap; @override void initState() { locationTagChips = _getLocationTags(); @@ -46,6 +49,8 @@ class _LocationTagsWidgetState extends State { Bus.instance.on().listen((event) { locationTagChips = _getLocationTags(); }); + _hasEnabledMap = UserRemoteFlagService.instance + .getCachedBoolValue(UserRemoteFlagService.mapEnabled); super.initState(); } @@ -71,67 +76,113 @@ class _LocationTagsWidgetState extends State { onTap: onTap, endSection: Padding( padding: const EdgeInsets.only(top: 8), - - child: ClipRRect( - borderRadius: const BorderRadius.all(Radius.circular(8)), - child: SizedBox( - height: 120, - child: Stack( - children: [ - MapView( - updateVisibleImages: () {}, - imageMarkers: [ - ImageMarker( - imageFile: widget.file, - latitude: widget.file.location!.latitude!, - longitude: widget.file.location!.longitude!, - ), - ], - controller: _mapController, - center: LatLng( - widget.file.location!.latitude!, - widget.file.location!.longitude!, - ), - minZoom: 7, - maxZoom: 7, - initialZoom: 7, - debounceDuration: 0, - bottomSheetDraggableAreaHeight: 0, - showControls: false, - interactiveFlags: InteractiveFlag.none, - mapAttributionOptions: MapAttributionOptions( - permanentHeight: 16, - popupBorderRadius: BorderRadius.circular(4), - iconSize: 16, - ), - onTap: () { - Navigator.of(context).push( - MaterialPageRoute( - builder: (context) => MapScreen( - filesFutureFn: SearchService.instance.getAllFiles, - center: LatLng( - widget.file.location!.latitude!, - widget.file.location!.longitude!, + child: _hasEnabledMap + ? ClipRRect( + borderRadius: const BorderRadius.all(Radius.circular(8)), + child: SizedBox( + height: 120, + child: Stack( + children: [ + MapView( + updateVisibleImages: () {}, + imageMarkers: [ + ImageMarker( + imageFile: widget.file, + latitude: widget.file.location!.latitude!, + longitude: widget.file.location!.longitude!, + ), + ], + controller: _mapController, + center: LatLng( + widget.file.location!.latitude!, + widget.file.location!.longitude!, + ), + minZoom: 9, + maxZoom: 9, + initialZoom: 9, + debounceDuration: 0, + bottomSheetDraggableAreaHeight: 0, + showControls: false, + interactiveFlags: InteractiveFlag.none, + mapAttributionOptions: MapAttributionOptions( + permanentHeight: 16, + popupBorderRadius: BorderRadius.circular(4), + iconSize: 16, + ), + onTap: () { + Navigator.of(context).push( + MaterialPageRoute( + builder: (context) => MapScreen( + filesFutureFn: + SearchService.instance.getAllFiles, + center: LatLng( + widget.file.location!.latitude!, + widget.file.location!.longitude!, + ), + initialZoom: 9 + 1, + ), + ), + ); + }, + markerSize: const Size(45, 45), + ), + Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + border: Border.all( + color: getEnteColorScheme(context).strokeFaint, ), - initialZoom: 7 + 1, ), ), - ); - }, - markerSize: const Size(45, 45), - ), - Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8), - border: Border.all( - color: getEnteColorScheme(context).strokeFaint, - ), + ], ), ), - ], - ), - ), - ), + ) + : ClipRRect( + borderRadius: const BorderRadius.all(Radius.circular(8)), + child: SizedBox( + height: 120, + child: Stack( + children: [ + MapView( + updateVisibleImages: () {}, + imageMarkers: const [], + controller: _mapController, + center: const LatLng( + 13.041599, + 77.594566, + ), + minZoom: 9, + maxZoom: 9, + initialZoom: 9, + debounceDuration: 0, + bottomSheetDraggableAreaHeight: 0, + showControls: false, + interactiveFlags: InteractiveFlag.none, + mapAttributionOptions: const MapAttributionOptions( + iconSize: 0, + ), + ), + BackdropFilter( + filter: ImageFilter.blur(sigmaX: 2.8, sigmaY: 2.8), + child: Container( + color: getEnteColorScheme(context) + .backgroundElevated2 + .withOpacity(0.5), + ), + ), + Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + border: Border.all( + color: getEnteColorScheme(context).strokeFaint, + ), + ), + ), + ], + ), + ), + ), /// to be used when state issues are fixed when location is updated // editOnTap: widget.file.ownerID == Configuration.instance.getUserID()!