new settings panel for url pickup
All checks were successful
All checks were successful
This commit is contained in:
@@ -5,17 +5,24 @@ typedef TokenProvider = String? Function();
|
||||
typedef UnauthorizedHandler = Future<void> Function();
|
||||
|
||||
class ApiService {
|
||||
final String baseUrl;
|
||||
String _baseUrl;
|
||||
final http.Client _client;
|
||||
final Duration timeout;
|
||||
TokenProvider? _getToken;
|
||||
UnauthorizedHandler? _onUnauthorized;
|
||||
|
||||
ApiService({
|
||||
required this.baseUrl,
|
||||
required String baseUrl,
|
||||
http.Client? client,
|
||||
this.timeout = const Duration(seconds: 30),
|
||||
}) : _client = client ?? http.Client();
|
||||
}) : _baseUrl = baseUrl,
|
||||
_client = client ?? http.Client();
|
||||
|
||||
String get baseUrl => _baseUrl;
|
||||
|
||||
void setBaseUrl(String url) {
|
||||
_baseUrl = url;
|
||||
}
|
||||
|
||||
void setTokenProvider(TokenProvider provider) {
|
||||
_getToken = provider;
|
||||
|
||||
36
lib/services/endpoint_service.dart
Normal file
36
lib/services/endpoint_service.dart
Normal file
@@ -0,0 +1,36 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
class EndpointService extends ChangeNotifier {
|
||||
EndpointService() {
|
||||
_load();
|
||||
}
|
||||
|
||||
static const String defaultBaseUrl = 'https://mileograph.co.uk/api/v1';
|
||||
static const String _prefsKey = 'api_base_url';
|
||||
|
||||
String _baseUrl = defaultBaseUrl;
|
||||
bool _loaded = false;
|
||||
|
||||
String get baseUrl => _baseUrl;
|
||||
bool get isLoaded => _loaded;
|
||||
|
||||
Future<void> _load() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
final saved = prefs.getString(_prefsKey);
|
||||
if (saved != null && saved.trim().isNotEmpty) {
|
||||
_baseUrl = saved;
|
||||
}
|
||||
_loaded = true;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<void> setBaseUrl(String url) async {
|
||||
final trimmed = url.trim();
|
||||
if (trimmed.isEmpty) return;
|
||||
_baseUrl = trimmed;
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setString(_prefsKey, _baseUrl);
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user