Ntrip szervíz refraktorálás, beállítások, jelszó secure store-ba

This commit is contained in:
2026-07-05 03:43:07 +02:00
parent 80f7c8d571
commit fa25a320eb
8 changed files with 501 additions and 126 deletions
@@ -17,7 +17,7 @@ class NtripSettingsController extends GetxController {
final autoConnect = false.obs;
final isBusy = false.obs;
final _secureStorage = const FlutterSecureStorage();
NtripService get _service => NtripService.to;
@override
void onInit() {
@@ -26,79 +26,72 @@ class NtripSettingsController extends GetxController {
}
Future<void> loadSettings() async {
final prefs = await SharedPreferences.getInstance();
hostController.text = _service.host.value;
portController.text = _service.port.value.toString();
mountPointController.text = _service.mountpoint.value;
usernameController.text = _service.username.value;
autoConnect.value = _service.autoConnect.value;
passwordController.text = _service.password.value;
}
hostController.text = prefs.getString('ntrip_host') ?? '';
portController.text = prefs.getInt('ntrip_port')?.toString() ?? '2101';
mountPointController.text = prefs.getString('ntrip_mountpoint') ?? '';
usernameController.text = prefs.getString('ntrip_username') ?? '';
autoConnect.value = prefs.getBool('ntrip_auto_connect') ?? false;
Future<bool> _validateAndSave() async {
if (!(formKey.currentState?.validate() ?? false)) return false;
passwordController.text =
await _secureStorage.read(key: 'ntrip_password') ?? '';
await _service.updateSettings(
host: hostController.text,
port: int.parse(portController.text.trim()),
mountpoint: mountPointController.text,
username: usernameController.text,
password: passwordController.text,
autoConnect: autoConnect.value);
return true;
}
Future<void> saveSettings() async {
if (!(formKey.currentState?.validate() ?? false)) {
return;
}
if (!await _validateAndSave()) return;
final prefs = await SharedPreferences.getInstance();
await prefs.setString('ntrip_host', hostController.text.trim());
await prefs.setInt(
'ntrip_port',
int.parse(portController.text.trim()),
);
await prefs.setString(
'ntrip_mountpoint',
mountPointController.text.trim(),
);
await prefs.setString(
'ntrip_username',
usernameController.text.trim(),
);
await prefs.setBool(
'ntrip_auto_connect',
autoConnect.value,
);
await _secureStorage.write(
key: 'ntrip_password',
value: passwordController.text,
);
Get.back();
Get.snackbar('NTRIP', 'Beállítások elmentve.',
snackPosition: SnackPosition.BOTTOM);
}
Future<void> saveAndConnect() async {
if (!(formKey.currentState?.validate() ?? false)) {
return;
}
try {
isBusy.value = true;
await saveSettings();
if (!await _validateAndSave()) return;
// await NtripService.to.connect(
// host: hostController.text.trim(),
// port: int.parse(portController.text.trim()),
// mountPoint: mountPointController.text.trim(),
// username: usernameController.text.trim(),
// password: passwordController.text,
// );
// Ha már kapcsolódva vagyunk, előbb bontunk, hogy az új
// beállításokkal épüljön újra a kapcsolat.
if (_service.isConnected.value) {
await _service.disconnect();
}
await _service.connect();
Get.back();
Get.snackbar(
'NTRIP',
'Kapcsolódás elindítva.',
'Kapcsolódva: ${_service.mountpoint.value}',
snackPosition: SnackPosition.BOTTOM,
backgroundColor: const Color(0xFF2E7D32),
colorText: const Color(0xFFFFFFFF),
);
} on NtripException catch (e) {
Get.snackbar(
'NTRIP hiba',
e.message,
snackPosition: SnackPosition.BOTTOM,
backgroundColor: const Color(0xFFB71C1C),
colorText: const Color(0xFFFFFFFF),
);
} catch (e) {
Get.snackbar(
'NTRIP hiba',
e.toString(),
snackPosition: SnackPosition.BOTTOM,
backgroundColor: const Color(0xFFB71C1C),
colorText: const Color(0xFFFFFFFF),
);
} finally {
isBusy.value = false;
@@ -108,7 +101,7 @@ class NtripSettingsController extends GetxController {
Future<void> disconnect() async {
try {
isBusy.value = true;
await NtripService.to.disconnect();
await _service.disconnect();
} finally {
isBusy.value = false;
}