Add Android support with configurable server URL and location permissions

- Add shared_preferences for persisting server URL
- Add SettingsService and PlatformService
- Add server URL input field on non-web platforms
- Make ApiConfig baseUrl configurable at runtime
- Add Android location permissions (ACCESS_FINE/COURSE_LOCATION, INTERNET)
- Request location permission on login and map init
- Fix geo_id type: use String instead of int (UUID format)
- Align share_service with API spec: remove unique_id, use share_id only
- Fix watch endpoint response: last_update instead of created_at
- Add error handling with SnackBars for geo operations
- Wrap login screen in SingleChildScrollView for keyboard handling
- Update map tile layer with userAgentPackageName for OSM
This commit is contained in:
dmit.b
2026-05-15 17:38:56 +03:00
parent ca90c6c3fc
commit f1e88b1ac3
26 changed files with 1255 additions and 297 deletions
+28
View File
@@ -0,0 +1,28 @@
import 'package:shared_preferences/shared_preferences.dart';
class SettingsService {
static const String _baseUrlKey = 'server_base_url';
static const String _defaultBaseUrl = 'https://family-safety.onrender.com/api';
String _baseUrl = _defaultBaseUrl;
bool _initialized = false;
String get baseUrl => _baseUrl;
Future<void> initialize() async {
if (_initialized) return;
final prefs = await SharedPreferences.getInstance();
_baseUrl = prefs.getString(_baseUrlKey) ?? _defaultBaseUrl;
_initialized = true;
}
Future<void> setBaseUrl(String url) async {
_baseUrl = url;
final prefs = await SharedPreferences.getInstance();
await prefs.setString(_baseUrlKey, url);
}
void resetToDefault() {
_baseUrl = _defaultBaseUrl;
}
}