Complete Flutter app (Android + iOS) mirroring the web frontend: - Core: Riverpod state, Dio networking with auth interceptor + auto-refresh, go_router navigation, flutter_secure_storage, light/dark theme with MedievalSharp/Crimson Pro fonts, German l10n - Market: search with text/GPS/radius/date/sort filters, list + map views (flutter_map + OSM), detail screen with opening hours, admission prices, single-marker map, pagination - Auth: login (password + magic link tabs), register, OAuth button placeholders, 2FA code prompt on 401, sealed auth state provider - User: profile view/edit/delete with confirm dialog, 2FA setup/disable on security screen - GPS: geolocator with IP-based fallback (geojs.io) matching web behavior - Platform: Android internet + location permissions, iOS NSLocation description - Tests: date/currency/distance formatter unit tests (13 passing) - Zero analysis issues, debug APK builds successfully
65 lines
945 B
YAML
65 lines
945 B
YAML
name: marktvogt
|
|
description: Marktvogt — Mittelaltermarkt-Finder
|
|
publish_to: 'none'
|
|
version: 1.0.0+1
|
|
|
|
environment:
|
|
sdk: ^3.11.0
|
|
|
|
dependencies:
|
|
flutter:
|
|
sdk: flutter
|
|
flutter_localizations:
|
|
sdk: flutter
|
|
|
|
# State management
|
|
flutter_riverpod: any
|
|
riverpod_annotation: any
|
|
|
|
# Networking
|
|
dio: any
|
|
|
|
# Routing
|
|
go_router: any
|
|
|
|
# Maps
|
|
flutter_map: any
|
|
latlong2: any
|
|
|
|
# Storage
|
|
flutter_secure_storage: any
|
|
|
|
# Location
|
|
geolocator: any
|
|
|
|
# Fonts
|
|
google_fonts: any
|
|
|
|
# Data classes
|
|
freezed_annotation: any
|
|
json_annotation: any
|
|
|
|
# Utilities
|
|
intl: any
|
|
url_launcher: any
|
|
cached_network_image: any
|
|
|
|
# Icons
|
|
cupertino_icons: any
|
|
|
|
dev_dependencies:
|
|
flutter_test:
|
|
sdk: flutter
|
|
flutter_lints: any
|
|
freezed: any
|
|
json_serializable: any
|
|
build_runner: any
|
|
riverpod_generator: any
|
|
riverpod_lint: any
|
|
custom_lint: any
|
|
mocktail: any
|
|
|
|
flutter:
|
|
uses-material-design: true
|
|
generate: true
|