From f6fcc4c3902a6cdf0a09bb34ffb8bf6e2fbe60aa Mon Sep 17 00:00:00 2001 From: zontreck Date: Sat, 17 May 2025 01:27:41 -0700 Subject: [PATCH] Add map tile caching --- lib/consts.dart | 2 +- lib/main.dart | 8 ++++++++ lib/pages/MapPage.dart | 6 ++++++ pubspec.yaml | 3 ++- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/consts.dart b/lib/consts.dart index 2a1c1b2..9ef773f 100644 --- a/lib/consts.dart +++ b/lib/consts.dart @@ -9,7 +9,7 @@ class TTConsts { static get SESSION_SERVER => "https://api.zontreck.com/timetrack/${UPDATE_CHANNEL}/timetrack.php"; - static const VERSION = "1.0.0-beta.4"; + static const VERSION = "1.0.0-beta.5"; static bool UPDATE_AVAILABLE = false; static UpdateChannel UPDATE_CHANNEL = UpdateChannel.beta; diff --git a/lib/main.dart b/lib/main.dart index fef79bc..9f427a5 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,9 +1,12 @@ import 'package:flutter/material.dart'; +import 'package:flutter_map_tile_caching/flutter_map_tile_caching.dart'; import 'package:timetrack/consts.dart'; import 'package:timetrack/data.dart'; import 'package:timetrack/pages/MainApp.dart'; Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + await TTConsts.checkUpdate(); var sess = Uri.base.queryParameters["code"] ?? ""; @@ -15,5 +18,10 @@ Future main() async { SessionData.DisplayError = "The URL and or session token is invalid"; } } + + await FMTCObjectBoxBackend().initialise(); + + await FMTCStore('mapStore').manage.create(); + runApp(MainApp()); } diff --git a/lib/pages/MapPage.dart b/lib/pages/MapPage.dart index 25cd217..ce07fc5 100644 --- a/lib/pages/MapPage.dart +++ b/lib/pages/MapPage.dart @@ -4,6 +4,7 @@ import 'package:flutter_map/flutter_map.dart'; import 'package:latlong2/latlong.dart'; import 'package:libacflutter/Constants.dart'; import 'package:timetrack/data.dart'; +import 'package:flutter_map_tile_caching/flutter_map_tile_caching.dart'; class MapPage extends StatefulWidget { MapPage({super.key}); @@ -21,6 +22,10 @@ class _MapPage extends State { List Markers = []; bool autorefresh = true; + final _tileProvider = FMTCTileProvider( + stores: const {'mapStore': BrowseStoreStrategy.readUpdateCreate}, + ); + @override void initState() { SessionData.Calls.MapCallback = call; @@ -137,6 +142,7 @@ class _MapPage extends State { TileLayer( urlTemplate: "https://tile.openstreetmap.org/{z}/{x}/{y}.png", userAgentPackageName: "dev.zontreck.timetrack", + tileProvider: _tileProvider, ), PolylineLayer( polylines: [ diff --git a/pubspec.yaml b/pubspec.yaml index eebd3a6..d10286a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 1.0.0-beta.4 +version: 1.0.0-beta.5 environment: sdk: ^3.7.2 @@ -45,6 +45,7 @@ dependencies: geolocator: ^14.0.0 flutter_map: ^8.1.1 latlong2: ^0.9.1 + flutter_map_tile_caching: ^10.1.1 dev_dependencies: flutter_test: