Ntrip szervíz refraktorálás, beállítások, jelszó secure store-ba
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -7,6 +7,18 @@ import '../controllers/ntrip_settings_controller.dart';
|
||||
class NtripSettingsSheet extends GetView<NtripSettingsController> {
|
||||
const NtripSettingsSheet({super.key});
|
||||
|
||||
static Future<void> show() async {
|
||||
Get.put(NtripSettingsController());
|
||||
try {
|
||||
await Get.bottomSheet(
|
||||
const NtripSettingsSheet(),
|
||||
isScrollControlled: true,
|
||||
);
|
||||
} finally {
|
||||
Get.delete<NtripSettingsController>();
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final colorScheme = Theme.of(context).colorScheme;
|
||||
@@ -97,7 +109,7 @@ class NtripSettingsSheet extends GetView<NtripSettingsController> {
|
||||
controller: controller.mountPointController,
|
||||
decoration: const InputDecoration(
|
||||
labelText: 'Mountpoint',
|
||||
hintText: 'pl. BUDAPEST_RTCM32',
|
||||
hintText: 'pl. SGO_RTK3.2',
|
||||
prefixIcon: Icon(Icons.place),
|
||||
),
|
||||
textInputAction: TextInputAction.next,
|
||||
|
||||
Reference in New Issue
Block a user