Files
deflock-app/pubspec.yaml
Doug Borg 2d92214bed Add offline-first tile system with per-provider caching and error retry
- Add ServicePolicy framework with OSM-specific rate limiting and TTL
- Add per-provider disk tile cache (ProviderTileCacheStore) with O(1)
  lookup, oldest-modified eviction, and ETag/304 revalidation
- Rewrite DeflockTileProvider with two paths: common (NetworkTileProvider)
  and offline-first (disk cache -> local tiles -> network with caching)
- Add zoom-aware offline routing so tiles outside offline area zoom ranges
  use the efficient common path instead of the overhead-heavy offline path
- Fix HTTP client lifecycle: dispose() is now a no-op for flutter_map
  widget recycling; shutdown() handles permanent teardown
- Add TileLayerManager with exponential backoff retry (2s->60s cap),
  provider switch detection, and backoff reset
- Guard null provider/tileType in download dialog with localized error
- Fix Nominatim cache key to use normalized viewbox values
- Comprehensive test coverage (1800+ lines across 6 test files)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 12:34:01 -07:00

76 lines
1.6 KiB
YAML

name: deflockapp
description: Map public surveillance infrastructure with OpenStreetMap
publish_to: "none"
version: 2.8.1+50 # The thing after the + is the version code, incremented with each release
environment:
sdk: ">=3.10.3 <4.0.0" # Resolved dependency floor (Dart 3.10.3 = Flutter 3.38+)
dependencies:
flutter:
sdk: flutter
# UI & Map
provider: ^6.1.2
flutter_map: ^8.2.1
flutter_map_animations: ^0.9.0
latlong2: ^0.9.0
geolocator: ^10.1.0
http: ^1.2.1
flutter_svg: ^2.0.10
xml: ^6.4.2
flutter_local_notifications: ^17.2.2
url_launcher: ^6.3.0
flutter_linkify: ^6.0.0
app_links: ^7.0.0
# Auth, storage, prefs
oauth2_client: ^4.2.0
flutter_web_auth_2: ^5.0.1
flutter_secure_storage: ^10.0.0
# Persistence
shared_preferences: ^2.2.2
sqflite: ^2.4.1
path: ^1.8.3
path_provider: ^2.1.0
uuid: ^4.0.0
package_info_plus: ^9.0.0
csv: ^6.0.0
collection: ^1.18.0
dev_dependencies:
flutter_test:
sdk: flutter
mocktail: ^1.0.4
fake_async: ^1.3.0
flutter_launcher_icons: ^0.14.4
flutter_lints: ^6.0.0
flutter_native_splash: ^2.4.6
flutter:
uses-material-design: true
assets:
- assets/app_icon.png
- assets/android_app_icon.png
- assets/transparent_1x1.png
- assets/deflock-logo.svg
- assets/changelog.json
- lib/localizations/
flutter_launcher_icons:
android: true
ios: true
image_path: "assets/app_icon.png"
min_sdk_android: 21
adaptive_icon_background: "assets/android_app_icon.png"
adaptive_icon_foreground: "assets/transparent_1x1.png"
flutter_native_splash:
color: "#152131"
image: assets/app_icon.png
android_12:
android: true
ios: true