Matthias Nott
2026-03-24 96c8bb5db1a2e0ced999a366e3cf28f9895ec39f
lib/screens/settings_screen.dart
....@@ -18,6 +18,7 @@
1818 class _SettingsScreenState extends ConsumerState<SettingsScreen> {
1919 final _formKey = GlobalKey<FormState>();
2020 late final TextEditingController _localHostController;
21
+ late final TextEditingController _vpnHostController;
2122 late final TextEditingController _remoteHostController;
2223 late final TextEditingController _portController;
2324 late final TextEditingController _macController;
....@@ -30,6 +31,8 @@
3031 final config = ref.read(serverConfigProvider);
3132 _localHostController =
3233 TextEditingController(text: config?.localHost ?? '');
34
+ _vpnHostController =
35
+ TextEditingController(text: config?.vpnHost ?? '');
3336 _remoteHostController =
3437 TextEditingController(text: config?.host ?? '');
3538 _portController =
....@@ -43,6 +46,7 @@
4346 @override
4447 void dispose() {
4548 _localHostController.dispose();
49
+ _vpnHostController.dispose();
4650 _remoteHostController.dispose();
4751 _portController.dispose();
4852 _macController.dispose();
....@@ -59,6 +63,9 @@
5963 localHost: _localHostController.text.trim().isEmpty
6064 ? null
6165 : _localHostController.text.trim(),
66
+ vpnHost: _vpnHostController.text.trim().isEmpty
67
+ ? null
68
+ : _vpnHostController.text.trim(),
6269 macAddress: _macController.text.trim().isEmpty
6370 ? null
6471 : _macController.text.trim(),
....@@ -153,6 +160,19 @@
153160 ),
154161 const SizedBox(height: 16),
155162
163
+ // VPN address
164
+ Text('VPN Address',
165
+ style: Theme.of(context).textTheme.bodyMedium),
166
+ const SizedBox(height: 4),
167
+ TextFormField(
168
+ controller: _vpnHostController,
169
+ decoration: const InputDecoration(
170
+ hintText: '10.8.0.1 (OpenVPN static IP)',
171
+ ),
172
+ keyboardType: TextInputType.url,
173
+ ),
174
+ const SizedBox(height: 16),
175
+
156176 // Remote address
157177 Text('Remote Address',
158178 style: Theme.of(context).textTheme.bodyMedium),