Skip to content

Commit

Permalink
Upgrade to FM v6
Browse files Browse the repository at this point in the history
  • Loading branch information
JaffaKetchup committed Oct 7, 2023
1 parent c571c56 commit 00bb4ae
Show file tree
Hide file tree
Showing 13 changed files with 59 additions and 148 deletions.
35 changes: 0 additions & 35 deletions example/lib/screens/main/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import 'package:provider/provider.dart';
import 'pages/downloading/downloading.dart';
import 'pages/downloading/state/downloading_provider.dart';
import 'pages/map/map_view.dart';
import 'pages/map/state/map_provider.dart';
import 'pages/recovery/recovery.dart';
import 'pages/region_selection/region_selection.dart';
import 'pages/stores/stores.dart';
Expand Down Expand Up @@ -124,40 +123,6 @@ class _MainScreenState extends State<MainScreen> {
NavigationDestinationLabelBehavior.onlyShowSelected,
height: 70,
),
floatingActionButton: _currentPageIndex != 0
? null
: Consumer<MapProvider>(
builder: (context, mapProvider, _) => FloatingActionButton(
onPressed: () {
switch (mapProvider.followState) {
case UserLocationFollowState.off:
mapProvider.followState =
UserLocationFollowState.standard;
mapProvider.trackLocation(navigation: false);
mapProvider.mapController.rotate(0);
break;
case UserLocationFollowState.standard:
mapProvider.followState =
UserLocationFollowState.navigation;
mapProvider.trackLocation(navigation: true);
mapProvider.trackHeading();
break;
case UserLocationFollowState.navigation:
mapProvider.followState = UserLocationFollowState.off;
mapProvider.mapController.rotate(0);
break;
}
setState(() {});
},
child: Icon(
switch (mapProvider.followState) {
UserLocationFollowState.off => Icons.gps_off,
UserLocationFollowState.standard => Icons.gps_fixed,
UserLocationFollowState.navigation => Icons.navigation,
},
),
),
),
body: Row(
children: [
if (MediaQuery.sizeOf(context).width > 950)
Expand Down
38 changes: 9 additions & 29 deletions example/lib/screens/main/pages/map/map_view.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import 'dart:async';
//import 'dart:io';

import 'package:flutter/material.dart';
import 'package:flutter_map/flutter_map.dart';
//import 'package:flutter_map_location_marker/flutter_map_location_marker.dart';
import 'package:flutter_map_tile_caching/flutter_map_tile_caching.dart';
import 'package:latlong2/latlong.dart';
import 'package:provider/provider.dart';
Expand All @@ -13,12 +11,6 @@ import '../../../../shared/components/loading_indicator.dart';
import '../../../../shared/state/general_provider.dart';
import 'state/map_provider.dart';

enum UserLocationFollowState {
off,
standard,
navigation,
}

class MapPage extends StatelessWidget {
const MapPage({super.key});

Expand All @@ -42,36 +34,20 @@ class MapPage extends StatelessWidget {

return FlutterMap(
mapController: Provider.of<MapProvider>(context).mapController,
options: MapOptions(
initialCenter: const LatLng(51.509364, -0.128928),
options: const MapOptions(
initialCenter: LatLng(51.509364, -0.128928),
initialZoom: 16,
maxZoom: 22,
cameraConstraint: CameraConstraint.contain(
bounds: LatLngBounds.fromPoints([
const LatLng(-90, 180),
const LatLng(90, 180),
const LatLng(90, -180),
const LatLng(-90, -180),
]),
),
interactionOptions: const InteractionOptions(
// flags: InteractiveFlag.all & ~InteractiveFlag.rotate,
interactionOptions: InteractionOptions(
flags: InteractiveFlag.all & ~InteractiveFlag.rotate,
scrollWheelVelocity: 0.002,
),
keepAlive: true,
onPointerDown: (_, __) =>
Provider.of<MapProvider>(context, listen: false)
.followState = UserLocationFollowState.off,
),
nonRotatedChildren: buildStdAttribution(
urlTemplate,
alignment: AttributionAlignment.bottomLeft,
backgroundColor: Color(0xFFaad3df),
),
children: [
TileLayer(
urlTemplate: urlTemplate,
userAgentPackageName: 'dev.jaffaketchup.fmtc.demo',
backgroundColor: const Color(0xFFaad3df),
maxNativeZoom: 20,
panBuffer: 5,
tileProvider: provider.currentStore != null
Expand All @@ -96,6 +72,10 @@ class MapPage extends StatelessWidget {
)
: NetworkTileProvider(),
),
StandardAttribution(
urlTemplate: urlTemplate,
alignment: AttributionAlignment.bottomLeft,
),
/*Consumer<MapProvider>(
builder: (context, mapProvider, _) => CurrentLocationLayer(
followCurrentLocationStream:
Expand Down
24 changes: 0 additions & 24 deletions example/lib/screens/main/pages/map/state/map_provider.dart
Original file line number Diff line number Diff line change
@@ -1,35 +1,11 @@
import 'dart:async';

import 'package:flutter/foundation.dart';
import 'package:flutter_map/flutter_map.dart';

import '../map_view.dart';

class MapProvider extends ChangeNotifier {
UserLocationFollowState _followState = UserLocationFollowState.standard;
UserLocationFollowState get followState => _followState;
set followState(UserLocationFollowState newState) {
_followState = newState;
notifyListeners();
}

MapController _mapController = MapController();
MapController get mapController => _mapController;
set mapController(MapController newController) {
_mapController = newController;
notifyListeners();
}

// ignore: close_sinks
final _trackLocationStreamController = StreamController<double?>()..add(16);
late final trackLocationStream =
_trackLocationStreamController.stream.asBroadcastStream();
void trackLocation({required bool navigation}) =>
_trackLocationStreamController.add(navigation ? 18 : 16);

// ignore: close_sinks
final _trackHeadingStreamController = StreamController<void>()..add(null);
late final trackHeadingStream =
_trackHeadingStreamController.stream.asBroadcastStream();
void trackHeading() => _trackHeadingStreamController.add(null);
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,34 +11,31 @@ class CustomPolygonSnappingIndicator extends StatelessWidget {
});

@override
Widget build(BuildContext context) => MarkerLayer(
markers: [
if (context
.select<RegionSelectionProvider, List<LatLng>>(
(p) => p.coordinates,
)
.isNotEmpty &&
context.select<RegionSelectionProvider, bool>(
(p) => p.customPolygonSnap,
))
Marker(
height: 25,
width: 25,
point: context
.select<RegionSelectionProvider, List<LatLng>>(
(p) => p.coordinates,
)
.first,
builder: (context) => DecoratedBox(
decoration: BoxDecoration(
color: Colors.green,
borderRadius: BorderRadius.circular(1028),
),
child: const Center(
child: Icon(Icons.auto_awesome, size: 15),
),
Widget build(BuildContext context) {
final coords = context
.select<RegionSelectionProvider, List<LatLng>>((p) => p.coordinates);

return MarkerLayer(
markers: [
if (coords.isNotEmpty &&
context.select<RegionSelectionProvider, bool>(
(p) => p.customPolygonSnap,
))
Marker(
height: 25,
width: 25,
point: coords.first,
child: DecoratedBox(
decoration: BoxDecoration(
color: Colors.green,
borderRadius: BorderRadius.circular(1028),
),
child: const Center(
child: Icon(Icons.auto_awesome, size: 15),
),
),
],
);
),
],
);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:flutter_map/plugin_api.dart';
import 'package:flutter_map_tile_caching/flutter_map_tile_caching.dart';
import 'package:latlong2/latlong.dart';
import 'package:provider/provider.dart';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import 'dart:math';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:flutter_map/plugin_api.dart';
import 'package:flutter_map_tile_caching/flutter_map_tile_caching.dart';
import 'package:latlong2/latlong.dart';
import 'package:provider/provider.dart';
Expand Down Expand Up @@ -34,22 +33,14 @@ class _RegionSelectionPageState extends State<RegionSelectionPage> {
late final mapOptions = MapOptions(
initialCenter: const LatLng(51.509364, -0.128928),
initialZoom: 11,
maxZoom: 22,
cameraConstraint: CameraConstraint.contain(
bounds: LatLngBounds.fromPoints([
const LatLng(-90, 180),
const LatLng(90, 180),
const LatLng(90, -180),
const LatLng(-90, -180),
]),
),
interactionOptions: const InteractionOptions(
flags: InteractiveFlag.all &
~InteractiveFlag.rotate &
~InteractiveFlag.doubleTapZoom,
scrollWheelVelocity: 0.002,
),
keepAlive: true,
backgroundColor: const Color(0xFFaad3df),
onTap: (_, __) {
final provider = context.read<RegionSelectionProvider>();

Expand Down Expand Up @@ -259,13 +250,11 @@ class _RegionSelectionPageState extends State<RegionSelectionPage> {
child: FlutterMap(
mapController: mapController,
options: mapOptions,
nonRotatedChildren: buildStdAttribution(urlTemplate),
children: [
TileLayer(
urlTemplate: urlTemplate,
userAgentPackageName: 'dev.jaffaketchup.fmtc.demo',
maxNativeZoom: 20,
backgroundColor: const Color(0xFFaad3df),
tileBuilder: (context, widget, tile) =>
FutureBuilder<bool?>(
future: currentStore == null
Expand All @@ -291,6 +280,7 @@ class _RegionSelectionPageState extends State<RegionSelectionPage> {
),
const RegionShape(),
const CustomPolygonSnappingIndicator(),
StandardAttribution(urlTemplate: urlTemplate),
],
),
);
Expand Down
22 changes: 14 additions & 8 deletions example/lib/shared/components/build_attribution.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
import 'package:flutter/material.dart';
import 'package:flutter_map/flutter_map.dart';

List<Widget> buildStdAttribution(
String urlTemplate, {
AttributionAlignment alignment = AttributionAlignment.bottomRight,
}) =>
[
RichAttributionWidget(
class StandardAttribution extends StatelessWidget {
const StandardAttribution({
super.key,
required this.urlTemplate,
this.alignment = AttributionAlignment.bottomRight,
});

final String urlTemplate;
final AttributionAlignment alignment;

@override
Widget build(BuildContext context) => RichAttributionWidget(
alignment: alignment,
popupInitialDisplayDuration: const Duration(seconds: 3),
popupBorderRadius: alignment == AttributionAlignment.bottomRight
Expand All @@ -29,5 +35,5 @@ List<Widget> buildStdAttribution(
tooltip: 'flutter_map_tile_caching',
),
],
),
];
);
}
5 changes: 3 additions & 2 deletions example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,9 @@ dependencies:
flutter:
sdk: flutter
flutter_foreground_task: ^6.0.0+1
flutter_map: ^6.0.0-dev.2
flutter_map_location_marker: ^8.0.0-dev.1
flutter_map:
git:
url: https://github.com/fleaflet/flutter_map.git
flutter_map_tile_caching:
flutter_speed_dial: ^7.0.0
fmtc_plus_sharing: ^8.0.0
Expand Down
3 changes: 0 additions & 3 deletions example/windows/flutter/generated_plugin_registrant.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,11 @@

#include "generated_plugin_registrant.h"

#include <geolocator_windows/geolocator_windows.h>
#include <isar_flutter_libs/isar_flutter_libs_plugin.h>
#include <share_plus/share_plus_windows_plugin_c_api.h>
#include <url_launcher_windows/url_launcher_windows.h>

void RegisterPlugins(flutter::PluginRegistry* registry) {
GeolocatorWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("GeolocatorWindows"));
IsarFlutterLibsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("IsarFlutterLibsPlugin"));
SharePlusWindowsPluginCApiRegisterWithRegistrar(
Expand Down
1 change: 0 additions & 1 deletion example/windows/flutter/generated_plugins.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
#

list(APPEND FLUTTER_PLUGIN_LIST
geolocator_windows
isar_flutter_libs
share_plus
url_launcher_windows
Expand Down
2 changes: 0 additions & 2 deletions lib/flutter_map_tile_caching.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:flutter_map/plugin_api.dart';
import 'package:http/http.dart' as http;
import 'package:http/io_client.dart';
import 'package:isar/isar.dart';
Expand All @@ -35,7 +34,6 @@ import 'package:stream_transform/stream_transform.dart';
import 'package:watcher/watcher.dart';

import 'src/bulk_download/instance.dart';

import 'src/bulk_download/rate_limited_stream.dart';
import 'src/bulk_download/tile_loops/shared.dart';
import 'src/db/defs/metadata.dart';
Expand Down
2 changes: 1 addition & 1 deletion lib/src/providers/image_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import 'dart:ui';

import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_map/plugin_api.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:http/http.dart';
import 'package:isar/isar.dart';
import 'package:queue/queue.dart';
Expand Down
7 changes: 5 additions & 2 deletions pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
name: flutter_map_tile_caching
description: Plugin for 'flutter_map' providing advanced caching functionality,
with ability to download map regions for offline use.
version: 9.0.0-dev.4
version: 9.0.0-dev.5

repository: https://github.com/JaffaKetchup/flutter_map_tile_caching
issue_tracker: https://github.com/JaffaKetchup/flutter_map_tile_caching/issues
documentation: https://fmtc.jaffaketchup.dev
Expand Down Expand Up @@ -31,7 +32,9 @@ dependencies:
dart_earcut: ^1.0.1
flutter:
sdk: flutter
flutter_map: 6.0.0-dev.3
flutter_map:
git:
url: https://github.com/fleaflet/flutter_map.git
http: ^1.1.0
isar: ^3.1.0+1
isar_flutter_libs: ^3.1.0+1
Expand Down

0 comments on commit 00bb4ae

Please sign in to comment.