diff --git a/lib/screens/logs/log_tile.dart b/lib/screens/logs/log_tile.dart index f077c31..9dfea35 100644 --- a/lib/screens/logs/log_tile.dart +++ b/lib/screens/logs/log_tile.dart @@ -256,7 +256,7 @@ class LogTile extends StatelessWidget { newStatus: domainBlocked == true ? 'unblock' : 'block' ) ), - MenuOption( + if (filteringProvider.filtering != null) MenuOption( title: domainBlocked == true ? AppLocalizations.of(context)!.unblockThisClientOnly : AppLocalizations.of(context)!.blockThisClientOnly, @@ -457,7 +457,7 @@ class LogTile extends StatelessWidget { newStatus: domainBlocked == true ? 'unblock' : 'block' ) ), - MenuOption( + if (filteringProvider.filtering != null) MenuOption( title: domainBlocked == true ? AppLocalizations.of(context)!.unblockThisClientOnly : AppLocalizations.of(context)!.blockThisClientOnly, diff --git a/lib/screens/logs/logs.dart b/lib/screens/logs/logs.dart index 560db9c..e99317d 100644 --- a/lib/screens/logs/logs.dart +++ b/lib/screens/logs/logs.dart @@ -1,14 +1,16 @@ // ignore_for_file: use_build_context_synchronously import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:adguard_home_manager/screens/logs/logs_list.dart'; import 'package:adguard_home_manager/screens/logs/details/log_details_screen.dart'; import 'package:adguard_home_manager/models/logs.dart'; +import 'package:adguard_home_manager/providers/filtering_provider.dart'; class Logs extends StatefulWidget { - const Logs({Key? key}) : super(key: key); + const Logs({super.key}); @override State createState() => _LogsState(); @@ -17,6 +19,12 @@ class Logs extends StatefulWidget { class _LogsState extends State { Log? _selectedLog; + @override + void initState() { + Provider.of(context, listen: false).fetchFilters(); + super.initState(); + } + @override Widget build(BuildContext context) { return LayoutBuilder( diff --git a/lib/screens/logs/logs_list_appbar.dart b/lib/screens/logs/logs_list_appbar.dart index 341593a..5014806 100644 --- a/lib/screens/logs/logs_list_appbar.dart +++ b/lib/screens/logs/logs_list_appbar.dart @@ -59,7 +59,7 @@ class LogsListAppBar extends StatelessWidget { showDialog( context: context, builder: (context) => _Search( - searchButtonRenderBox: _searchButtonKey.currentContext!.findRenderObject() as RenderBox, + searchButtonRenderBox: _searchButtonKey.currentContext?.findRenderObject() as RenderBox?, onSearch: (v) { logsProvider.setAppliedFilters( AppliedFiters( @@ -243,7 +243,7 @@ class LogsListAppBar extends StatelessWidget { class _Search extends StatefulWidget { final void Function(String) onSearch; - final RenderBox searchButtonRenderBox; + final RenderBox? searchButtonRenderBox; const _Search({ required this.onSearch, @@ -269,7 +269,8 @@ class _SearchState extends State<_Search> { Widget build(BuildContext context) { final logsProvider = Provider.of(context); - final Offset position = widget.searchButtonRenderBox.localToGlobal(Offset.zero); + final position = widget.searchButtonRenderBox?.localToGlobal(Offset.zero); + final topPadding = MediaQuery.of(globalNavigatorKey.currentContext!).viewPadding.top; return GestureDetector( onTap: () => Navigator.pop(context), @@ -282,7 +283,7 @@ class _SearchState extends State<_Search> { alignment: Alignment.topCenter, children: [ Positioned( - top: position.dy - MediaQuery.of(globalNavigatorKey.currentContext!).viewPadding.top, + top: position != null ? position.dy - topPadding : topPadding, child: SizedBox( width: width, child: GestureDetector( diff --git a/lib/screens/settings/dns/dns_server_settings.dart b/lib/screens/settings/dns/dns_server_settings.dart index ddae1e3..a4b7369 100644 --- a/lib/screens/settings/dns/dns_server_settings.dart +++ b/lib/screens/settings/dns/dns_server_settings.dart @@ -165,7 +165,7 @@ class _DnsServerSettingsScreenState extends State { processModal.open(AppLocalizations.of(context)!.savingConfig); final result = await dnsProvider.saveDnsServerConfig({ - "ratelimit": int.parse(_limitRequestsController.text), + "ratelimit": int.tryParse(_limitRequestsController.text), "edns_cs_enabled": _enableEdns, "edns_cs_use_custom": _useCustomIpEdns, "edns_cs_custom_ip": _customIpEdnsController.text, diff --git a/lib/screens/settings/update_server/update_screen.dart b/lib/screens/settings/update_server/update_screen.dart index aa85e7c..5386ad8 100644 --- a/lib/screens/settings/update_server/update_screen.dart +++ b/lib/screens/settings/update_server/update_screen.dart @@ -47,6 +47,7 @@ class _UpdateScreenState extends State { void processChangelog() async { final serversProvider = Provider.of(context, listen: false); + if (serversProvider.updateAvailable.data?.changelog == null) return; final markdownResult = await compute(md.markdownToHtml, serversProvider.updateAvailable.data!.changelog!); final htmlParsedResult = await compute(html.parse, markdownResult); setState(() => _htmlChangelog = htmlParsedResult.outerHtml); @@ -84,7 +85,7 @@ class _UpdateScreenState extends State { processModal.close(); - if (!mounted) return; + if (!context.mounted) return; if (result.successful == true) { serversProvider.recheckPeriodServerUpdated(); showSnacbkar(