diff --git a/lib/model/settings/map_style.dart b/lib/model/settings/map_style.dart new file mode 100644 index 000000000..25559107a --- /dev/null +++ b/lib/model/settings/map_style.dart @@ -0,0 +1,34 @@ +// browse providers at https://leaflet-extras.github.io/leaflet-providers/preview/ +enum EntryMapStyle { googleNormal, googleHybrid, googleTerrain, osmHot, stamenToner, stamenWatercolor } + +extension ExtraEntryMapStyle on EntryMapStyle { + String get name { + switch (this) { + case EntryMapStyle.googleNormal: + return 'Google Maps'; + case EntryMapStyle.googleHybrid: + return 'Google Maps (Hybrid)'; + case EntryMapStyle.googleTerrain: + return 'Google Maps (Terrain)'; + case EntryMapStyle.osmHot: + return 'Humanitarian OSM'; + case EntryMapStyle.stamenToner: + return 'Stamen Toner'; + case EntryMapStyle.stamenWatercolor: + return 'Stamen Watercolor'; + default: + return toString(); + } + } + + bool get isGoogleMaps { + switch (this) { + case EntryMapStyle.googleNormal: + case EntryMapStyle.googleHybrid: + case EntryMapStyle.googleTerrain: + return true; + default: + return false; + } + } +} diff --git a/lib/model/settings/settings.dart b/lib/model/settings/settings.dart index 3e5fe5246..fcc10a444 100644 --- a/lib/model/settings/settings.dart +++ b/lib/model/settings/settings.dart @@ -2,8 +2,8 @@ import 'package:aves/model/filters/filters.dart'; import 'package:aves/model/settings/coordinate_format.dart'; import 'package:aves/model/settings/entry_background.dart'; import 'package:aves/model/settings/home_page.dart'; +import 'package:aves/model/settings/map_style.dart'; import 'package:aves/model/settings/screen_on.dart'; -import 'package:aves/widgets/viewer/info/location_section.dart'; import 'package:firebase_analytics/firebase_analytics.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_crashlytics/firebase_crashlytics.dart'; diff --git a/lib/widgets/collection/collection_page.dart b/lib/widgets/collection/collection_page.dart index ba71b34c9..34fc10f68 100644 --- a/lib/widgets/collection/collection_page.dart +++ b/lib/widgets/collection/collection_page.dart @@ -1,7 +1,7 @@ import 'package:aves/model/source/collection_lens.dart'; import 'package:aves/widgets/collection/thumbnail_collection.dart'; +import 'package:aves/widgets/common/basic/insets.dart'; import 'package:aves/widgets/common/behaviour/double_back_pop.dart'; -import 'package:aves/widgets/common/gesture_area_protector.dart'; import 'package:aves/widgets/common/providers/media_query_data_provider.dart'; import 'package:aves/widgets/drawer/app_drawer.dart'; import 'package:flutter/foundation.dart'; diff --git a/lib/widgets/collection/grid/selector.dart b/lib/widgets/collection/grid/selector.dart index 83c38e506..513a7beeb 100644 --- a/lib/widgets/collection/grid/selector.dart +++ b/lib/widgets/collection/grid/selector.dart @@ -4,6 +4,7 @@ import 'dart:math'; import 'package:aves/model/image_entry.dart'; import 'package:aves/model/source/collection_lens.dart'; import 'package:aves/utils/math_utils.dart'; +import 'package:aves/widgets/common/extensions/media_query.dart'; import 'package:aves/widgets/common/grid/section_layout.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; @@ -62,7 +63,7 @@ class _GridSelectionGestureDetectorState extends State().viewInsets.bottom, + bottom: context.read().effectiveBottomPadding, ); _scrollSpeedFactor = 0; _pressing = true; diff --git a/lib/widgets/collection/thumbnail_collection.dart b/lib/widgets/collection/thumbnail_collection.dart index cdc36a635..3ffed368c 100644 --- a/lib/widgets/collection/thumbnail_collection.dart +++ b/lib/widgets/collection/thumbnail_collection.dart @@ -16,8 +16,10 @@ import 'package:aves/widgets/collection/grid/section_layout.dart'; import 'package:aves/widgets/collection/grid/selector.dart'; import 'package:aves/widgets/collection/grid/thumbnail.dart'; import 'package:aves/widgets/collection/thumbnail/decorated.dart'; -import 'package:aves/widgets/common/behaviour/routes.dart'; +import 'package:aves/widgets/common/basic/insets.dart'; import 'package:aves/widgets/common/behaviour/sloppy_scroll_physics.dart'; +import 'package:aves/widgets/common/extensions/build_context.dart'; +import 'package:aves/widgets/common/extensions/media_query.dart'; import 'package:aves/widgets/common/grid/section_layout.dart'; import 'package:aves/widgets/common/grid/sliver.dart'; import 'package:aves/widgets/common/identity/scroll_thumb.dart'; @@ -222,14 +224,7 @@ class _CollectionScrollViewState extends State { hasScrollBody: false, ) : SectionedListSliver(), - SliverToBoxAdapter( - child: Selector( - selector: (context, mq) => mq.viewInsets.bottom, - builder: (context, mqViewInsetsBottom, child) { - return SizedBox(height: mqViewInsetsBottom); - }, - ), - ), + BottomPaddingSliver(), ], ); } @@ -238,8 +233,8 @@ class _CollectionScrollViewState extends State { return ValueListenableBuilder( valueListenable: widget.appBarHeightNotifier, builder: (context, appBarHeight, child) => Selector( - selector: (context, mq) => mq.viewInsets.bottom, - builder: (context, mqViewInsetsBottom, child) => DraggableScrollbar( + selector: (context, mq) => mq.effectiveBottomPadding, + builder: (context, mqPaddingBottom, child) => DraggableScrollbar( heightScrollThumb: avesScrollThumbHeight, backgroundColor: Colors.white, scrollThumbBuilder: avesScrollThumbBuilder( @@ -250,7 +245,7 @@ class _CollectionScrollViewState extends State { padding: EdgeInsets.only( // padding to keep scroll thumb between app bar above and nav bar below top: appBarHeight, - bottom: mqViewInsetsBottom, + bottom: mqPaddingBottom, ), child: scrollView, ), diff --git a/lib/widgets/common/gesture_area_protector.dart b/lib/widgets/common/basic/insets.dart similarity index 74% rename from lib/widgets/common/gesture_area_protector.dart rename to lib/widgets/common/basic/insets.dart index 0fb879ded..50d2fd56c 100644 --- a/lib/widgets/common/gesture_area_protector.dart +++ b/lib/widgets/common/basic/insets.dart @@ -1,5 +1,4 @@ -import 'dart:math'; - +import 'package:aves/widgets/common/extensions/media_query.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -15,7 +14,7 @@ class BottomGestureAreaProtector extends StatelessWidget { @override Widget build(BuildContext context) { return Selector( - selector: (c, mq) => max(mq.viewPadding.bottom, mq.viewInsets.bottom), + selector: (c, mq) => mq.effectiveBottomPadding, builder: (c, mqPaddingBottom, child) { // devices with physical navigation buttons have no bottom insets // we assume these devices do not use gesture navigation @@ -47,3 +46,17 @@ class GestureAreaProtectorStack extends StatelessWidget { ); } } + +class BottomPaddingSliver extends StatelessWidget { + @override + Widget build(BuildContext context) { + return SliverToBoxAdapter( + child: Selector( + selector: (context, mq) => mq.effectiveBottomPadding, + builder: (context, mqPaddingBottom, child) { + return SizedBox(height: mqPaddingBottom); + }, + ), + ); + } +} diff --git a/lib/widgets/common/behaviour/routes.dart b/lib/widgets/common/behaviour/routes.dart index 03e460480..a5ac9d079 100644 --- a/lib/widgets/common/behaviour/routes.dart +++ b/lib/widgets/common/behaviour/routes.dart @@ -1,9 +1,5 @@ import 'package:flutter/material.dart'; -extension ExtraContext on BuildContext { - String get currentRouteName => ModalRoute.of(this)?.settings?.name; -} - class DirectMaterialPageRoute extends PageRouteBuilder { DirectMaterialPageRoute({ RouteSettings settings, diff --git a/lib/widgets/common/extensions/build_context.dart b/lib/widgets/common/extensions/build_context.dart new file mode 100644 index 000000000..3f06767b8 --- /dev/null +++ b/lib/widgets/common/extensions/build_context.dart @@ -0,0 +1,5 @@ +import 'package:flutter/widgets.dart'; + +extension ExtraContext on BuildContext { + String get currentRouteName => ModalRoute.of(this)?.settings?.name; +} diff --git a/lib/widgets/common/extensions/media_query.dart b/lib/widgets/common/extensions/media_query.dart new file mode 100644 index 000000000..e0e15959c --- /dev/null +++ b/lib/widgets/common/extensions/media_query.dart @@ -0,0 +1,41 @@ +import 'dart:math'; + +import 'package:flutter/widgets.dart'; + +extension ExtraMediaQueryData on MediaQueryData { + /* + examples of MediaQuery props in practice, as of Flutter v1.22.5 + + S20, Android 11, portrait, notch top, button nav bar bottom + padding EdgeInsets(0.0, 26.0, 0.0, 48.0) + viewPadding EdgeInsets(0.0, 26.0, 0.0, 48.0) + viewInsets EdgeInsets.zero + + S20, Android 11, landscape, notch left, button nav bar right + padding EdgeInsets(26.0, 24.0, 0.0, 0.0) + viewPadding EdgeInsets(26.0, 24.0, 0.0, 0.0) + viewInsets EdgeInsets.zero + + S10e, Android 10, portrait, notch top, button nav bar bottom + padding EdgeInsets(0.0, 39.0, 0.0, 0.0) + viewPadding EdgeInsets(0.0, 39.0, 0.0, 0.0) + viewInsets EdgeInsets(0.0, 0.0, 0.0, 48.0) + + S10e, Android 10, portrait, notch top, gesture nav bar bottom + padding EdgeInsets(0.0, 39.0, 0.0, 0.0) + viewPadding EdgeInsets(0.0, 39.0, 0.0, 0.0) + viewInsets EdgeInsets(0.0, 0.0, 0.0, 15.0) + + S10e, Android 10, landscape, notch left, button nav bar right + padding EdgeInsets(38.7, 24.0, 0.0, 0.0) + viewPadding EdgeInsets(38.7, 24.0, 0.0, 0.0) + viewInsets EdgeInsets.zero + + S7, portrait/landscape, no notch, no nav bar + padding EdgeInsets(0.0, 24.0, 0.0, 0.0) + viewPadding EdgeInsets(0.0, 24.0, 0.0, 0.0) + viewInsets EdgeInsets.zero + */ + + double get effectiveBottomPadding => max(viewPadding.bottom, viewInsets.bottom); +} diff --git a/lib/widgets/debug/overlay.dart b/lib/widgets/debug/overlay.dart index 9c0081c0e..6fc169a14 100644 --- a/lib/widgets/debug/overlay.dart +++ b/lib/widgets/debug/overlay.dart @@ -1,4 +1,5 @@ import 'package:aves/services/service_policy.dart'; +import 'package:aves/widgets/common/extensions/media_query.dart'; import 'package:flutter/material.dart'; class DebugTaskQueueOverlay extends StatelessWidget { @@ -13,7 +14,7 @@ class DebugTaskQueueOverlay extends StatelessWidget { child: Container( color: Colors.indigo[900].withAlpha(0xCC), margin: EdgeInsets.only( - bottom: MediaQuery.of(context).viewInsets.bottom, + bottom: MediaQuery.of(context).effectiveBottomPadding, ), padding: EdgeInsets.all(8), child: StreamBuilder( diff --git a/lib/widgets/drawer/app_drawer.dart b/lib/widgets/drawer/app_drawer.dart index 22358d397..112fc28ae 100644 --- a/lib/widgets/drawer/app_drawer.dart +++ b/lib/widgets/drawer/app_drawer.dart @@ -1,4 +1,3 @@ -import 'dart:math'; import 'dart:ui'; import 'package:aves/model/filters/album.dart'; @@ -12,6 +11,7 @@ import 'package:aves/ref/mime_types.dart'; import 'package:aves/theme/icons.dart'; import 'package:aves/utils/android_file_utils.dart'; import 'package:aves/widgets/about/about_page.dart'; +import 'package:aves/widgets/common/extensions/media_query.dart'; import 'package:aves/widgets/common/identity/aves_icons.dart'; import 'package:aves/widgets/common/identity/aves_logo.dart'; import 'package:aves/widgets/debug/app_debug_page.dart'; @@ -60,7 +60,7 @@ class _AppDrawerState extends State { return Drawer( child: Selector( - selector: (c, mq) => max(mq.viewPadding.bottom, mq.viewInsets.bottom), + selector: (c, mq) => mq.effectiveBottomPadding, builder: (c, mqPaddingBottom, child) { return SingleChildScrollView( padding: EdgeInsets.only(bottom: mqPaddingBottom), diff --git a/lib/widgets/drawer/tile.dart b/lib/widgets/drawer/tile.dart index b2bbb7614..be6b4f8b6 100644 --- a/lib/widgets/drawer/tile.dart +++ b/lib/widgets/drawer/tile.dart @@ -1,6 +1,6 @@ import 'dart:ui'; -import 'package:aves/widgets/common/behaviour/routes.dart'; +import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; diff --git a/lib/widgets/filter_grids/common/filter_grid_page.dart b/lib/widgets/filter_grids/common/filter_grid_page.dart index 42387d473..97104b603 100644 --- a/lib/widgets/filter_grids/common/filter_grid_page.dart +++ b/lib/widgets/filter_grids/common/filter_grid_page.dart @@ -4,9 +4,10 @@ import 'package:aves/model/filters/filters.dart'; import 'package:aves/model/highlight.dart'; import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/source/collection_source.dart'; +import 'package:aves/widgets/common/basic/insets.dart'; import 'package:aves/widgets/common/behaviour/double_back_pop.dart'; -import 'package:aves/widgets/common/behaviour/routes.dart'; -import 'package:aves/widgets/common/gesture_area_protector.dart'; +import 'package:aves/widgets/common/extensions/build_context.dart'; +import 'package:aves/widgets/common/extensions/media_query.dart'; import 'package:aves/widgets/common/grid/section_layout.dart'; import 'package:aves/widgets/common/grid/sliver.dart'; import 'package:aves/widgets/common/identity/aves_filter_chip.dart'; @@ -189,8 +190,8 @@ class FilterGridPage extends StatelessWidget { Widget _buildDraggableScrollView(ScrollView scrollView) { return Selector( - selector: (context, mq) => mq.viewInsets.bottom, - builder: (context, mqViewInsetsBottom, child) => DraggableScrollbar( + selector: (context, mq) => mq.effectiveBottomPadding, + builder: (context, mqPaddingBottom, child) => DraggableScrollbar( heightScrollThumb: avesScrollThumbHeight, backgroundColor: Colors.white, scrollThumbBuilder: avesScrollThumbBuilder( @@ -201,7 +202,7 @@ class FilterGridPage extends StatelessWidget { padding: EdgeInsets.only( // padding to keep scroll thumb between app bar above and nav bar below top: _appBarHeightNotifier.value, - bottom: mqViewInsetsBottom, + bottom: mqPaddingBottom, ), child: scrollView, ), @@ -213,10 +214,10 @@ class FilterGridPage extends StatelessWidget { if (empty) { content = SliverFillRemaining( child: Selector( - selector: (context, mq) => mq.viewInsets.bottom, - builder: (context, mqViewInsetsBottom, child) { + selector: (context, mq) => mq.effectiveBottomPadding, + builder: (context, mqPaddingBottom, child) { return Padding( - padding: EdgeInsets.only(bottom: mqViewInsetsBottom), + padding: EdgeInsets.only(bottom: mqPaddingBottom), child: emptyBuilder(), ); }, @@ -227,22 +228,13 @@ class FilterGridPage extends StatelessWidget { content = SectionedListSliver>(); } - final padding = SliverToBoxAdapter( - child: Selector( - selector: (context, mq) => mq.viewInsets.bottom, - builder: (context, mqViewInsetsBottom, child) { - return SizedBox(height: mqViewInsetsBottom); - }, - ), - ); - return CustomScrollView( key: _scrollableKey, controller: PrimaryScrollController.of(context), slivers: [ appBar, content, - padding, + BottomPaddingSliver(), ], ); } diff --git a/lib/widgets/home_page.dart b/lib/widgets/home_page.dart index e7ba1d8ef..d75f9c6dd 100644 --- a/lib/widgets/home_page.dart +++ b/lib/widgets/home_page.dart @@ -12,9 +12,9 @@ import 'package:aves/utils/android_file_utils.dart'; import 'package:aves/widgets/collection/collection_page.dart'; import 'package:aves/widgets/common/behaviour/routes.dart'; import 'package:aves/widgets/filter_grids/albums_page.dart'; -import 'package:aves/widgets/viewer/entry_viewer_page.dart'; import 'package:aves/widgets/search/search_delegate.dart'; import 'package:aves/widgets/search/search_page.dart'; +import 'package:aves/widgets/viewer/entry_viewer_page.dart'; import 'package:firebase_crashlytics/firebase_crashlytics.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; diff --git a/lib/widgets/viewer/entry_viewer_stack.dart b/lib/widgets/viewer/entry_viewer_stack.dart index 116befdc2..584f3d6c4 100644 --- a/lib/widgets/viewer/entry_viewer_stack.dart +++ b/lib/widgets/viewer/entry_viewer_stack.dart @@ -8,7 +8,7 @@ import 'package:aves/model/source/collection_lens.dart'; import 'package:aves/theme/durations.dart'; import 'package:aves/utils/change_notifier.dart'; import 'package:aves/widgets/collection/collection_page.dart'; -import 'package:aves/widgets/common/gesture_area_protector.dart'; +import 'package:aves/widgets/common/basic/insets.dart'; import 'package:aves/widgets/common/magnifier/pan/scroll_physics.dart'; import 'package:aves/widgets/viewer/entry_action_delegate.dart'; import 'package:aves/widgets/viewer/entry_scroller.dart'; diff --git a/lib/widgets/viewer/info/info_page.dart b/lib/widgets/viewer/info/info_page.dart index 14364b425..fae51760e 100644 --- a/lib/widgets/viewer/info/info_page.dart +++ b/lib/widgets/viewer/info/info_page.dart @@ -2,7 +2,7 @@ import 'package:aves/model/filters/filters.dart'; import 'package:aves/model/image_entry.dart'; import 'package:aves/model/source/collection_lens.dart'; import 'package:aves/theme/durations.dart'; -import 'package:aves/widgets/common/gesture_area_protector.dart'; +import 'package:aves/widgets/common/basic/insets.dart'; import 'package:aves/widgets/common/providers/media_query_data_provider.dart'; import 'package:aves/widgets/viewer/info/basic_section.dart'; import 'package:aves/widgets/viewer/info/info_app_bar.dart'; @@ -11,7 +11,6 @@ import 'package:aves/widgets/viewer/info/metadata/metadata_section.dart'; import 'package:aves/widgets/viewer/info/notifications.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:tuple/tuple.dart'; class InfoPage extends StatefulWidget { final CollectionLens collection; @@ -46,11 +45,9 @@ class _InfoPageState extends State { bottom: false, child: NotificationListener( onNotification: _handleTopScroll, - child: Selector>( - selector: (c, mq) => Tuple2(mq.size.width, mq.viewInsets.bottom), - builder: (c, mq, child) { - final mqWidth = mq.item1; - final mqViewInsetsBottom = mq.item2; + child: Selector( + selector: (c, mq) => mq.size.width, + builder: (c, mqWidth, child) { return ValueListenableBuilder( valueListenable: widget.entryNotifier, builder: (context, entry, child) { @@ -61,7 +58,6 @@ class _InfoPageState extends State { visibleNotifier: widget.visibleNotifier, scrollController: _scrollController, split: mqWidth > 400, - mqViewInsetsBottom: mqViewInsetsBottom, goToViewer: _goToViewer, ) : SizedBox.shrink(); @@ -115,7 +111,6 @@ class _InfoPageContent extends StatefulWidget { final ValueNotifier visibleNotifier; final ScrollController scrollController; final bool split; - final double mqViewInsetsBottom; final VoidCallback goToViewer; const _InfoPageContent({ @@ -125,7 +120,6 @@ class _InfoPageContent extends StatefulWidget { @required this.visibleNotifier, @required this.scrollController, @required this.split, - @required this.mqViewInsetsBottom, @required this.goToViewer, }) : super(key: key); @@ -190,9 +184,10 @@ class _InfoPageContentState extends State<_InfoPageContent> { sliver: basicAndLocationSliver, ), SliverPadding( - padding: horizontalPadding + EdgeInsets.only(bottom: 8 + widget.mqViewInsetsBottom), + padding: horizontalPadding + EdgeInsets.only(bottom: 8), sliver: metadataSliver, ), + BottomPaddingSliver(), ], ); } diff --git a/lib/widgets/viewer/info/location_section.dart b/lib/widgets/viewer/info/location_section.dart index 3341d3d54..128bdf262 100644 --- a/lib/widgets/viewer/info/location_section.dart +++ b/lib/widgets/viewer/info/location_section.dart @@ -1,6 +1,7 @@ import 'package:aves/model/filters/location.dart'; import 'package:aves/model/image_entry.dart'; import 'package:aves/model/settings/coordinate_format.dart'; +import 'package:aves/model/settings/map_style.dart'; import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/source/collection_lens.dart'; import 'package:aves/theme/durations.dart'; @@ -190,38 +191,3 @@ class _AddressInfoGroupState extends State<_AddressInfoGroup> { ); } } - -// browse providers at https://leaflet-extras.github.io/leaflet-providers/preview/ -enum EntryMapStyle { googleNormal, googleHybrid, googleTerrain, osmHot, stamenToner, stamenWatercolor } - -extension ExtraEntryMapStyle on EntryMapStyle { - String get name { - switch (this) { - case EntryMapStyle.googleNormal: - return 'Google Maps'; - case EntryMapStyle.googleHybrid: - return 'Google Maps (Hybrid)'; - case EntryMapStyle.googleTerrain: - return 'Google Maps (Terrain)'; - case EntryMapStyle.osmHot: - return 'Humanitarian OSM'; - case EntryMapStyle.stamenToner: - return 'Stamen Toner'; - case EntryMapStyle.stamenWatercolor: - return 'Stamen Watercolor'; - default: - return toString(); - } - } - - bool get isGoogleMaps { - switch (this) { - case EntryMapStyle.googleNormal: - case EntryMapStyle.googleHybrid: - case EntryMapStyle.googleTerrain: - return true; - default: - return false; - } - } -} diff --git a/lib/widgets/viewer/info/maps/common.dart b/lib/widgets/viewer/info/maps/common.dart index fb8fc89c1..d62506e1a 100644 --- a/lib/widgets/viewer/info/maps/common.dart +++ b/lib/widgets/viewer/info/maps/common.dart @@ -1,3 +1,4 @@ +import 'package:aves/model/settings/map_style.dart'; import 'package:aves/model/settings/settings.dart'; import 'package:aves/services/android_app_service.dart'; import 'package:aves/theme/durations.dart'; @@ -6,7 +7,6 @@ import 'package:aves/widgets/common/fx/blurred.dart'; import 'package:aves/widgets/common/fx/borders.dart'; import 'package:aves/widgets/dialogs/aves_dialog.dart'; import 'package:aves/widgets/dialogs/aves_selection_dialog.dart'; -import 'package:aves/widgets/viewer/info/location_section.dart'; import 'package:aves/widgets/viewer/overlay/common.dart'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; diff --git a/lib/widgets/viewer/info/maps/google_map.dart b/lib/widgets/viewer/info/maps/google_map.dart index 0c6e05bd7..25781b1d1 100644 --- a/lib/widgets/viewer/info/maps/google_map.dart +++ b/lib/widgets/viewer/info/maps/google_map.dart @@ -1,8 +1,8 @@ import 'dart:async'; import 'dart:typed_data'; +import 'package:aves/model/settings/map_style.dart'; import 'package:aves/model/settings/settings.dart'; -import 'package:aves/widgets/viewer/info/location_section.dart'; import 'package:aves/widgets/viewer/info/maps/common.dart'; import 'package:aves/widgets/viewer/info/maps/marker.dart'; import 'package:flutter/material.dart'; diff --git a/lib/widgets/viewer/info/maps/leaflet_map.dart b/lib/widgets/viewer/info/maps/leaflet_map.dart index 02f53dbd8..d5d2ecaf6 100644 --- a/lib/widgets/viewer/info/maps/leaflet_map.dart +++ b/lib/widgets/viewer/info/maps/leaflet_map.dart @@ -1,3 +1,4 @@ +import 'package:aves/model/settings/map_style.dart'; import 'package:aves/model/settings/settings.dart'; import 'package:aves/widgets/viewer/info/maps/common.dart'; import 'package:aves/widgets/viewer/info/maps/scale_layer.dart'; @@ -7,8 +8,6 @@ import 'package:flutter_markdown/flutter_markdown.dart'; import 'package:latlong/latlong.dart'; import 'package:url_launcher/url_launcher.dart'; -import '../location_section.dart'; - class EntryLeafletMap extends StatefulWidget { final LatLng latLng; final String geoUri; diff --git a/lib/widgets/viewer/panorama_page.dart b/lib/widgets/viewer/panorama_page.dart index 3a1b267dc..eec842376 100644 --- a/lib/widgets/viewer/panorama_page.dart +++ b/lib/widgets/viewer/panorama_page.dart @@ -2,7 +2,7 @@ import 'package:aves/image_providers/uri_image_provider.dart'; import 'package:aves/model/image_entry.dart'; import 'package:aves/model/panorama.dart'; import 'package:aves/theme/icons.dart'; -import 'package:aves/widgets/common/gesture_area_protector.dart'; +import 'package:aves/widgets/common/basic/insets.dart'; import 'package:aves/widgets/common/providers/media_query_data_provider.dart'; import 'package:aves/widgets/viewer/overlay/common.dart'; import 'package:flutter/foundation.dart';