diff --git a/lib/models/dns_info.dart b/lib/models/dns_info.dart index 2f23fd5..10d5030 100644 --- a/lib/models/dns_info.dart +++ b/lib/models/dns_info.dart @@ -46,7 +46,7 @@ class DnsInfo { factory DnsInfo.fromJson(Map json) => DnsInfo( upstreamDns: json["upstream_dns"] != null ? List.from(json["upstream_dns"].map((x) => x)) : [], upstreamDnsFile: json["upstream_dns_file"], - bootstrapDns: List.from(json["bootstrap_dns"].map((x) => x)), + bootstrapDns: json["bootstrap_dns"] != null ? List.from(json["bootstrap_dns"].map((x) => x)) : [], protectionEnabled: json["protection_enabled"], ratelimit: json["ratelimit"], blockingMode: json["blocking_mode"], diff --git a/lib/screens/logs/logs.dart b/lib/screens/logs/logs.dart index 5ff0097..f44a760 100644 --- a/lib/screens/logs/logs.dart +++ b/lib/screens/logs/logs.dart @@ -334,7 +334,7 @@ class _LogsState extends State { tooltip: AppLocalizations.of(context)!.filters, ) : const SizedBox(), - IconButton( + if (statusProvider.serverStatus != null) IconButton( tooltip: AppLocalizations.of(context)!.settings, onPressed: () => { if (width > 700 || !(Platform.isAndroid || Platform.isIOS)) { diff --git a/lib/screens/settings/dhcp/dhcp.dart b/lib/screens/settings/dhcp/dhcp.dart index d0ab42c..402a063 100644 --- a/lib/screens/settings/dhcp/dhcp.dart +++ b/lib/screens/settings/dhcp/dhcp.dart @@ -59,7 +59,7 @@ class _DhcpScreenState extends State { if (dhcpProvider.dhcp != null) { setState(() { if (dhcpProvider.dhcp!.dhcpStatus.interfaceName != null && dhcpProvider.dhcp!.dhcpStatus.interfaceName != '') { - selectedInterface = dhcpProvider.dhcp!.networkInterfaces.firstWhere((iface) => iface.name == dhcpProvider.dhcp!.dhcpStatus.interfaceName); + try {selectedInterface = dhcpProvider.dhcp!.networkInterfaces.firstWhere((iface) => iface.name == dhcpProvider.dhcp!.dhcpStatus.interfaceName);} catch (_) {} enabled = dhcpProvider.dhcp!.dhcpStatus.enabled; ipv4StartRangeController.text = dhcpProvider.dhcp!.dhcpStatus.v4.rangeStart; ipv4EndRangeController.text = dhcpProvider.dhcp!.dhcpStatus.v4.rangeEnd ?? ''; diff --git a/lib/screens/settings/encryption/encryption.dart b/lib/screens/settings/encryption/encryption.dart index 1282279..de75918 100644 --- a/lib/screens/settings/encryption/encryption.dart +++ b/lib/screens/settings/encryption/encryption.dart @@ -103,32 +103,34 @@ class _EncryptionSettingsWidgetState extends State { if (result['result'] == 'success') { await checkValidDataApi(data: result['data'].toJson()); - setState(() { - enabled = result['data'].enabled; - domainNameController.text = result['data'].serverName ?? ''; - redirectHttps = result['data'].forceHttps; - httpsPortController.text = result['data'].portHttps != null ? result['data'].portHttps.toString() : ''; - tlsPortController.text = result['data'].portDnsOverTls != null ? result['data'].portDnsOverTls.toString() : ''; - dnsOverQuicPortController.text = result['data'].portDnsOverQuic != null ? result['data'].portDnsOverQuic.toString() : ''; - if (result['data'].certificateChain != '') { - certificateOption = 1; - certificateContentController.text = decodeBase64(result['data'].certificateChain); - } - else { - certificateOption = 0; - certificatePathController.text = result['data'].certificatePath; - } - if (result['data'].privateKey != '' || result['data'].privateKeySaved == true) { - privateKeyOption = 1; - } - else { - privateKeyOption = 0; - privateKeyPathController.text = result['data'].privateKeyPath; - } - usePreviouslySavedKey = result['data'].privateKeySaved; + if (mounted) { + setState(() { + enabled = result['data'].enabled; + domainNameController.text = result['data'].serverName ?? ''; + redirectHttps = result['data'].forceHttps; + httpsPortController.text = result['data'].portHttps != null ? result['data'].portHttps.toString() : ''; + tlsPortController.text = result['data'].portDnsOverTls != null ? result['data'].portDnsOverTls.toString() : ''; + dnsOverQuicPortController.text = result['data'].portDnsOverQuic != null ? result['data'].portDnsOverQuic.toString() : ''; + if (result['data'].certificateChain != '') { + certificateOption = 1; + certificateContentController.text = decodeBase64(result['data'].certificateChain); + } + else { + certificateOption = 0; + certificatePathController.text = result['data'].certificatePath; + } + if (result['data'].privateKey != '' || result['data'].privateKeySaved == true) { + privateKeyOption = 1; + } + else { + privateKeyOption = 0; + privateKeyPathController.text = result['data'].privateKeyPath; + } + usePreviouslySavedKey = result['data'].privateKeySaved; - loadStatus = 1; - }); + loadStatus = 1; + }); + } } else { widget.appConfigProvider.addLog(result['log']);