diff --git a/lib/models/dhcp.dart b/lib/models/dhcp.dart index 7bba2ca..aaf4a42 100644 --- a/lib/models/dhcp.dart +++ b/lib/models/dhcp.dart @@ -55,8 +55,8 @@ String dhcpStatusToJson(DhcpStatus data) => json.encode(data.toJson()); class DhcpStatus { String? interfaceName; - IpVersion v4; - IpVersion v6; + IpVersion? v4; + IpVersion? v6; List leases; List staticLeases; bool enabled; @@ -81,8 +81,8 @@ class DhcpStatus { Map toJson() => { "interface_name": interfaceName, - "v4": v4.toJson(), - "v6": v6.toJson(), + "v4": v4 != null ? v4!.toJson() : null, + "v6": v6 != null ? v6!.toJson() : null, "leases": List.from(leases.map((x) => x)), "static_leases": List.from(staticLeases.map((x) => x)), "enabled": enabled, diff --git a/lib/models/dns_info.dart b/lib/models/dns_info.dart index 528ca5b..138efa3 100644 --- a/lib/models/dns_info.dart +++ b/lib/models/dns_info.dart @@ -10,8 +10,8 @@ class DnsInfo { bool disableIpv6; String? upstreamMode; int? cacheSize; - int cacheTtlMin; - int cacheTtlMax; + int? cacheTtlMin; + int? cacheTtlMax; bool cacheOptimistic; bool resolveClients; bool usePrivatePtrResolvers; diff --git a/lib/models/encryption.dart b/lib/models/encryption.dart index 3e2e230..8f8a3a0 100644 --- a/lib/models/encryption.dart +++ b/lib/models/encryption.dart @@ -32,7 +32,7 @@ class EncryptionData { final int? portDnsOverTls; final int? portDnsOverQuic; final int? portDnscrypt; - final String dnscryptConfigFile; + final String? dnscryptConfigFile; final bool allowUnencryptedDoh; final String certificateChain; final String privateKey; diff --git a/lib/screens/settings/dhcp/dhcp.dart b/lib/screens/settings/dhcp/dhcp.dart index 402a063..a93a338 100644 --- a/lib/screens/settings/dhcp/dhcp.dart +++ b/lib/screens/settings/dhcp/dhcp.dart @@ -61,11 +61,13 @@ class _DhcpScreenState extends State { if (dhcpProvider.dhcp!.dhcpStatus.interfaceName != null && 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 ?? ''; - ipv4SubnetMaskController.text = dhcpProvider.dhcp!.dhcpStatus.v4.subnetMask ?? ''; - ipv4GatewayController.text = dhcpProvider.dhcp!.dhcpStatus.v4.gatewayIp ?? ''; - ipv4LeaseTimeController.text = dhcpProvider.dhcp!.dhcpStatus.v4.leaseDuration.toString(); + if (dhcpProvider.dhcp!.dhcpStatus.v4 != null) { + ipv4StartRangeController.text = dhcpProvider.dhcp!.dhcpStatus.v4!.rangeStart; + ipv4EndRangeController.text = dhcpProvider.dhcp!.dhcpStatus.v4!.rangeEnd ?? ''; + ipv4SubnetMaskController.text = dhcpProvider.dhcp!.dhcpStatus.v4!.subnetMask ?? ''; + ipv4GatewayController.text = dhcpProvider.dhcp!.dhcpStatus.v4!.gatewayIp ?? ''; + ipv4LeaseTimeController.text = dhcpProvider.dhcp!.dhcpStatus.v4!.leaseDuration.toString(); + } } }); } diff --git a/lib/screens/settings/general_settings.dart b/lib/screens/settings/general_settings.dart index e68aae3..1f73784 100644 --- a/lib/screens/settings/general_settings.dart +++ b/lib/screens/settings/general_settings.dart @@ -63,6 +63,7 @@ class _GeneralSettingsState extends State { isBeta: appConfigProvider.getAppInfo!.version.contains('beta'), ); + if (!mounted) return; if (res != null) { setState(() => appUpdatesStatus = AppUpdatesStatus.available); } diff --git a/lib/widgets/combined_line_chart.dart b/lib/widgets/combined_line_chart.dart index 14d6d3e..3b82f1f 100644 --- a/lib/widgets/combined_line_chart.dart +++ b/lib/widgets/combined_line_chart.dart @@ -26,6 +26,8 @@ class CustomCombinedLineChart extends StatelessWidget { String chartDate(DateTime date) { String twoDigits(int number) => number.toString().padLeft(2, '0'); + String shortMonth(String month) => month.length > 3 ? month.substring(0, 3) : month; + String getMonth(int month) { final List months = [ AppLocalizations.of(context)!.january, @@ -45,10 +47,10 @@ class CustomCombinedLineChart extends StatelessWidget { } if (daysInterval == true) { - return "${date.day} ${getMonth(date.month).substring(0, 3)}"; + return "${date.day} ${shortMonth(getMonth(date.month))}"; } else { - return "${date.day} ${getMonth(date.month).substring(0, 3)} ${twoDigits(date.hour)}:00"; + return "${date.day} ${shortMonth(getMonth(date.month))} ${twoDigits(date.hour)}:00"; } } diff --git a/lib/widgets/line_chart.dart b/lib/widgets/line_chart.dart index 92814b1..c94ec5d 100644 --- a/lib/widgets/line_chart.dart +++ b/lib/widgets/line_chart.dart @@ -24,6 +24,8 @@ class CustomLineChart extends StatelessWidget { String chartDate(DateTime date) { String twoDigits(int number) => number.toString().padLeft(2, '0'); + String shortMonth(String month) => month.length > 3 ? month.substring(0, 3) : month; + String getMonth(int month) { final List months = [ AppLocalizations.of(context)!.january, @@ -44,10 +46,10 @@ class CustomLineChart extends StatelessWidget { } if (daysInterval == true) { - return "${date.day} ${getMonth(date.month).substring(0, 3)}"; + return "${date.day} ${shortMonth(getMonth(date.month))}"; } else { - return "${date.day} ${getMonth(date.month).substring(0, 3)} ${twoDigits(date.hour)}:00"; + return "${date.day} ${shortMonth(getMonth(date.month))} ${twoDigits(date.hour)}:00"; } }