From 5283d0fcc857880756d84937fa28b7f1d1c744cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Ku=C3=9Fowski?= Date: Fri, 20 Feb 2026 14:03:46 +0100 Subject: [PATCH 1/2] refactor: Add more stricter lints --- analysis_options.yaml | 9 ++++- lib/config/isrg_x1.dart | 4 +- lib/pages/chat/command_hints.dart | 38 +++++++++---------- lib/pages/chat/events/html_message.dart | 5 +-- lib/pages/chat_list/chat_list_item.dart | 6 +-- .../chat_search/chat_search_files_tab.dart | 6 +-- lib/pages/login/login.dart | 2 +- .../settings_emotes/settings_emotes.dart | 6 +-- .../push_rule_extensions.dart | 2 +- .../sign_in/view_model/flows/sso_login.dart | 2 +- lib/utils/background_push.dart | 8 ++-- lib/utils/error_reporter.dart | 10 ++--- lib/utils/voip_plugin.dart | 2 +- .../local_notifications_extension.dart | 2 +- pubspec.lock | 24 ++++++------ 15 files changed, 66 insertions(+), 60 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 75a06f44d..36171e35e 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -2,7 +2,6 @@ include: package:flutter_lints/flutter.yaml linter: rules: - - camel_case_types - avoid_print - constant_identifier_names - prefer_final_locals @@ -10,6 +9,14 @@ linter: - sort_pub_dependencies - require_trailing_commas - omit_local_variable_types + - cancel_subscriptions + - always_declare_return_types + - no_adjacent_strings_in_list + - test_types_in_equals + - throw_in_finally + - unnecessary_statements + - avoid_bool_literals_in_conditional_expressions + - prefer_single_quotes analyzer: plugins: diff --git a/lib/config/isrg_x1.dart b/lib/config/isrg_x1.dart index 6a6d0ac2d..c7b503231 100644 --- a/lib/config/isrg_x1.dart +++ b/lib/config/isrg_x1.dart @@ -1,5 +1,5 @@ // ignore: constant_identifier_names -const String ISRG_X1 = """-----BEGIN CERTIFICATE----- +const String ISRG_X1 = '''-----BEGIN CERTIFICATE----- MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 @@ -29,4 +29,4 @@ oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq 4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= ------END CERTIFICATE-----"""; +-----END CERTIFICATE-----'''; diff --git a/lib/pages/chat/command_hints.dart b/lib/pages/chat/command_hints.dart index 212bdf4d4..75bc14003 100644 --- a/lib/pages/chat/command_hints.dart +++ b/lib/pages/chat/command_hints.dart @@ -26,41 +26,41 @@ String commandExample(String command) { String commandHint(L10n l10n, String command) { switch (command) { - case "ban": + case 'ban': return l10n.commandHint_ban; - case "clearcache": + case 'clearcache': return l10n.commandHint_clearcache; - case "create": + case 'create': return l10n.commandHint_create; - case "discardsession": + case 'discardsession': return l10n.commandHint_discardsession; - case "dm": + case 'dm': return l10n.commandHint_dm; - case "html": + case 'html': return l10n.commandHint_html; - case "invite": + case 'invite': return l10n.commandHint_invite; - case "join": + case 'join': return l10n.commandHint_join; - case "kick": + case 'kick': return l10n.commandHint_kick; - case "leave": + case 'leave': return l10n.commandHint_leave; - case "me": + case 'me': return l10n.commandHint_me; - case "myroomavatar": + case 'myroomavatar': return l10n.commandHint_myroomavatar; - case "myroomnick": + case 'myroomnick': return l10n.commandHint_myroomnick; - case "op": + case 'op': return l10n.commandHint_op; - case "plain": + case 'plain': return l10n.commandHint_plain; - case "react": + case 'react': return l10n.commandHint_react; - case "send": + case 'send': return l10n.commandHint_send; - case "unban": + case 'unban': return l10n.commandHint_unban; case 'markasdm': return l10n.commandHint_markasdm; @@ -85,6 +85,6 @@ String commandHint(L10n l10n, String command) { case 'logoutall': return l10n.commandHint_logoutall; default: - return ""; + return ''; } } diff --git a/lib/pages/chat/events/html_message.dart b/lib/pages/chat/events/html_message.dart index 668a16ae9..906c6c242 100644 --- a/lib/pages/chat/events/html_message.dart +++ b/lib/pages/chat/events/html_message.dart @@ -253,9 +253,8 @@ class HtmlMessage extends StatelessWidget { : checkboxCheckedEvents?.firstWhereOrNull( (event) => event.checkedCheckboxId == checkboxIndex, ); - final staticallyChecked = !isCheckbox - ? false - : node.children.first.attributes['checked'] == 'true'; + final staticallyChecked = + isCheckbox && node.children.first.attributes['checked'] == 'true'; return WidgetSpan( child: Padding( diff --git a/lib/pages/chat_list/chat_list_item.dart b/lib/pages/chat_list/chat_list_item.dart index 10f07a80b..b30828127 100644 --- a/lib/pages/chat_list/chat_list_item.dart +++ b/lib/pages/chat_list/chat_list_item.dart @@ -56,9 +56,9 @@ class ChatListItem extends StatelessWidget { return const SizedBox.shrink(); } - final needLastEventSender = lastEvent == null - ? false - : room.getState(EventTypes.RoomMember, lastEvent.senderId) == null; + final needLastEventSender = + lastEvent != null && + room.getState(EventTypes.RoomMember, lastEvent.senderId) == null; final space = this.space; return Padding( diff --git a/lib/pages/chat_search/chat_search_files_tab.dart b/lib/pages/chat_search/chat_search_files_tab.dart index 8c5bdc60b..4aa95225d 100644 --- a/lib/pages/chat_search/chat_search_files_tab.dart +++ b/lib/pages/chat_search/chat_search_files_tab.dart @@ -55,9 +55,9 @@ class ChatSearchFilesTab extends StatelessWidget { 'UNKNOWN'); final sizeString = event.sizeString; final prevEvent = i > 0 ? events[i - 1] : null; - final sameEnvironment = prevEvent == null - ? false - : prevEvent.originServerTs.sameEnvironment(event.originServerTs); + final sameEnvironment = + prevEvent != null && + prevEvent.originServerTs.sameEnvironment(event.originServerTs); return Padding( padding: const EdgeInsets.all(8.0), child: Column( diff --git a/lib/pages/login/login.dart b/lib/pages/login/login.dart index cb2a45d6d..fdc2f7cad 100644 --- a/lib/pages/login/login.dart +++ b/lib/pages/login/login.dart @@ -207,7 +207,7 @@ class LoginController extends State { final data = { 'new_password': password, 'logout_devices': false, - "auth": AuthenticationThreePidCreds( + 'auth': AuthenticationThreePidCreds( type: AuthenticationTypes.emailIdentity, threepidCreds: ThreepidCreds( sid: response.result!.sid, diff --git a/lib/pages/settings_emotes/settings_emotes.dart b/lib/pages/settings_emotes/settings_emotes.dart index 0672f1633..c2f68a15a 100644 --- a/lib/pages/settings_emotes/settings_emotes.dart +++ b/lib/pages/settings_emotes/settings_emotes.dart @@ -234,9 +234,9 @@ class EmotesSettingsController extends State { ?.tryGetMap(stateKey ?? '') != null; - bool get readonly => room == null - ? false - : room?.canChangeStateEvent('im.ponies.room_emotes') == false; + bool get readonly => + room != null && + room?.canChangeStateEvent('im.ponies.room_emotes') == false; void resetAction() { setState(() { diff --git a/lib/pages/settings_notifications/push_rule_extensions.dart b/lib/pages/settings_notifications/push_rule_extensions.dart index 4cf53a92c..103fbc10f 100644 --- a/lib/pages/settings_notifications/push_rule_extensions.dart +++ b/lib/pages/settings_notifications/push_rule_extensions.dart @@ -117,6 +117,6 @@ extension PushRuleKindLocal on PushRuleKind { extension on String { String capitalize() { - return "${this[0].toUpperCase()}${substring(1).toLowerCase()}"; + return '${this[0].toUpperCase()}${substring(1).toLowerCase()}'; } } diff --git a/lib/pages/sign_in/view_model/flows/sso_login.dart b/lib/pages/sign_in/view_model/flows/sso_login.dart index 830693ef0..5eb5c3ccb 100644 --- a/lib/pages/sign_in/view_model/flows/sso_login.dart +++ b/lib/pages/sign_in/view_model/flows/sso_login.dart @@ -32,7 +32,7 @@ Future ssoLoginFlow( final urlScheme = (PlatformInfos.isMobile || PlatformInfos.isWeb || PlatformInfos.isMacOS) ? Uri.parse(redirectUrl).scheme - : "http://localhost:3001"; + : 'http://localhost:3001'; final result = await FlutterWebAuth2.authenticate( url: url.toString(), callbackUrlScheme: urlScheme, diff --git a/lib/utils/background_push.dart b/lib/utils/background_push.dart index 776af7828..bec7d5ef5 100644 --- a/lib/utils/background_push.dart +++ b/lib/utils/background_push.dart @@ -231,7 +231,7 @@ class BackgroundPush { currentPushers.first.data.format == AppSettings.pushNotificationsPusherFormat.value && mapEquals(currentPushers.single.data.additionalProperties, { - "data_message": pusherDataMessageFormat, + 'data_message': pusherDataMessageFormat, })) { Logs().i('[Push] Pusher already set'); } else { @@ -269,7 +269,7 @@ class BackgroundPush { data: PusherData( url: Uri.parse(gatewayUrl!), format: AppSettings.pushNotificationsPusherFormat.value, - additionalProperties: {"data_message": pusherDataMessageFormat}, + additionalProperties: {'data_message': pusherDataMessageFormat}, ), kind: 'http', ), @@ -290,7 +290,7 @@ class BackgroundPush { static bool _wentToRoomOnStartup = false; Future setupPush() async { - Logs().d("SetupPush"); + Logs().d('SetupPush'); if (client.onLoginStateChanged.value != LoginState.loggedIn || !PlatformInfos.isMobile || matrix == null) { @@ -371,7 +371,7 @@ class BackgroundPush { Future setupUp() async { await UnifiedPushUi( context: matrix!.context, - instances: ["default"], + instances: ['default'], unifiedPushFunctions: UPFunctions(), showNoDistribDialog: false, onNoDistribDialogDismissed: () {}, // TODO: Implement me diff --git a/lib/utils/error_reporter.dart b/lib/utils/error_reporter.dart index c0ed2a3e7..514d8162b 100644 --- a/lib/utils/error_reporter.dart +++ b/lib/utils/error_reporter.dart @@ -15,11 +15,11 @@ class ErrorReporter { const ErrorReporter(this.context, [this.message]); static const Set ingoredTypes = { - "IOException", - "ClientException", - "SocketException", - "TlsException", - "HandshakeException", + 'IOException', + 'ClientException', + 'SocketException', + 'TlsException', + 'HandshakeException', }; void onErrorCallback(Object error, [StackTrace? stackTrace]) { diff --git a/lib/utils/voip_plugin.dart b/lib/utils/voip_plugin.dart index 62e729baa..27c5d103b 100644 --- a/lib/utils/voip_plugin.dart +++ b/lib/utils/voip_plugin.dart @@ -141,7 +141,7 @@ class VoipPlugin with WidgetsBindingObserver implements WebRTCDelegate { FlutterForegroundTask.setOnLockScreenVisibility(false); FlutterForegroundTask.stopService(); final wasForeground = matrix.store.getString('wasForeground'); - wasForeground == 'false' ? FlutterForegroundTask.minimizeApp() : null; + if (wasForeground == 'false') FlutterForegroundTask.minimizeApp(); } } } diff --git a/lib/widgets/local_notifications_extension.dart b/lib/widgets/local_notifications_extension.dart index f650d95cf..c2dcb7bc7 100644 --- a/lib/widgets/local_notifications_extension.dart +++ b/lib/widgets/local_notifications_extension.dart @@ -135,7 +135,7 @@ extension LocalNotificationsExtension on MatrixState { var action = DesktopNotificationActions.values.singleWhereOrNull( (a) => a.name == actionStr, ); - if (action == null && actionStr == "default") { + if (action == null && actionStr == 'default') { action = DesktopNotificationActions.openChat; } switch (action!) { diff --git a/pubspec.lock b/pubspec.lock index f18e1f455..e78f876fa 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -165,10 +165,10 @@ packages: dependency: transitive description: name: characters - sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.4.1" + version: "1.4.0" charcode: dependency: transitive description: @@ -1112,18 +1112,18 @@ packages: dependency: transitive description: name: matcher - sha256: "12956d0ad8390bbcc63ca2e1469c0619946ccb52809807067a7020d57e647aa6" + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.18" + version: "0.12.17" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.13.0" + version: "0.11.1" matrix: dependency: "direct main" description: @@ -1869,26 +1869,26 @@ packages: dependency: transitive description: name: test - sha256: "54c516bbb7cee2754d327ad4fca637f78abfc3cbcc5ace83b3eda117e42cd71a" + sha256: "75906bf273541b676716d1ca7627a17e4c4070a3a16272b7a3dc7da3b9f3f6b7" url: "https://pub.dev" source: hosted - version: "1.29.0" + version: "1.26.3" test_api: dependency: transitive description: name: test_api - sha256: "93167629bfc610f71560ab9312acdda4959de4df6fac7492c89ff0d3886f6636" + sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55 url: "https://pub.dev" source: hosted - version: "0.7.9" + version: "0.7.7" test_core: dependency: transitive description: name: test_core - sha256: "394f07d21f0f2255ec9e3989f21e54d3c7dc0e6e9dbce160e5a9c1a6be0e2943" + sha256: "0cc24b5ff94b38d2ae73e1eb43cc302b77964fbf67abad1e296025b78deb53d0" url: "https://pub.dev" source: hosted - version: "0.6.15" + version: "0.6.12" timezone: dependency: transitive description: From a0a03941c2c4bbd740584c5cd8907f1e6f2104c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Ku=C3=9Fowski?= Date: Fri, 20 Feb 2026 14:19:03 +0100 Subject: [PATCH 2/2] chore: Avoid unnecessary lambdas --- analysis_options.yaml | 2 ++ lib/pages/chat/chat_event_list.dart | 5 ++--- lib/pages/chat/events/message_content.dart | 2 +- lib/pages/chat/events/message_reactions.dart | 2 +- lib/pages/chat/events/poll.dart | 2 +- lib/pages/chat/recording_view_model.dart | 4 +--- .../chat_access_settings_page.dart | 4 +--- lib/pages/chat_list/chat_list_body.dart | 4 ++-- lib/pages/dialer/dialer.dart | 4 +--- .../matrix_sdk_extensions/device_extension.dart | 14 ++++---------- lib/utils/stream_extension.dart | 2 +- lib/utils/uia_request_manager.dart | 4 +--- lib/utils/url_launcher.dart | 2 +- 13 files changed, 19 insertions(+), 32 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 36171e35e..98832a780 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -17,6 +17,8 @@ linter: - unnecessary_statements - avoid_bool_literals_in_conditional_expressions - prefer_single_quotes + - prefer_const_declarations + - unnecessary_lambdas analyzer: plugins: diff --git a/lib/pages/chat/chat_event_list.dart b/lib/pages/chat/chat_event_list.dart index a1e3e9530..c05230431 100644 --- a/lib/pages/chat/chat_event_list.dart +++ b/lib/pages/chat/chat_event_list.dart @@ -155,8 +155,7 @@ class ChatEventList extends StatelessWidget { highlightMarker: controller.scrollToEventIdMarker == event.eventId, onSelect: controller.onSelectMessage, - scrollToEventId: (String eventId) => - controller.scrollToEventId(eventId), + scrollToEventId: controller.scrollToEventId, longPressSelect: controller.selectedEvents.isNotEmpty, selected: controller.selectedEvents.any( (e) => e.eventId == event.eventId, @@ -164,7 +163,7 @@ class ChatEventList extends StatelessWidget { singleSelected: controller.selectedEvents.singleOrNull?.eventId == event.eventId, - onEdit: () => controller.editSelectedEventAction(), + onEdit: controller.editSelectedEventAction, timeline: timeline, displayReadMarker: i > 0 && controller.readMarkerEventId == event.eventId, diff --git a/lib/pages/chat/events/message_content.dart b/lib/pages/chat/events/message_content.dart index ad406e55b..cf1f07f4f 100644 --- a/lib/pages/chat/events/message_content.dart +++ b/lib/pages/chat/events/message_content.dart @@ -207,7 +207,7 @@ class MessageContent extends StatelessWidget { .split(';') .first .split(',') - .map((s) => double.tryParse(s)) + .map(double.tryParse) .toList(); if (latlong.length == 2 && latlong.first != null && diff --git a/lib/pages/chat/events/message_reactions.dart b/lib/pages/chat/events/message_reactions.dart index 86d8ade6a..4bafaa6f3 100644 --- a/lib/pages/chat/events/message_reactions.dart +++ b/lib/pages/chat/events/message_reactions.dart @@ -66,7 +66,7 @@ class MessageReactions extends StatelessWidget { if (evt != null) { showFutureLoadingDialog( context: context, - future: () => evt.redactEvent(), + future: evt.redactEvent, ); } } else { diff --git a/lib/pages/chat/events/poll.dart b/lib/pages/chat/events/poll.dart index 7cc57dc78..d4506602d 100644 --- a/lib/pages/chat/events/poll.dart +++ b/lib/pages/chat/events/poll.dart @@ -25,7 +25,7 @@ class PollWidget extends StatelessWidget { }); void _endPoll(BuildContext context) => - showFutureLoadingDialog(context: context, future: () => event.endPoll()); + showFutureLoadingDialog(context: context, future: event.endPoll); void _toggleVote(BuildContext context, String answerId, int maxSelection) { final userId = event.room.client.userID!; diff --git a/lib/pages/chat/recording_view_model.dart b/lib/pages/chat/recording_view_model.dart index 815d8b113..40a4320fc 100644 --- a/lib/pages/chat/recording_view_model.dart +++ b/lib/pages/chat/recording_view_model.dart @@ -145,9 +145,7 @@ class RecordingViewModelState extends State { } void cancel() { - setState(() { - _reset(); - }); + setState(_reset); } void pause() { diff --git a/lib/pages/chat_access_settings/chat_access_settings_page.dart b/lib/pages/chat_access_settings/chat_access_settings_page.dart index a2f040799..5c1c55c66 100644 --- a/lib/pages/chat_access_settings/chat_access_settings_page.dart +++ b/lib/pages/chat_access_settings/chat_access_settings_page.dart @@ -181,9 +181,7 @@ class ChatAccessSettingsPageView extends StatelessWidget { return const SizedBox.shrink(); } localAddresses.remove(room.canonicalAlias); - localAddresses.removeWhere( - (alias) => altAliases.contains(alias), - ); + localAddresses.removeWhere(altAliases.contains); return Column( mainAxisSize: .min, children: localAddresses diff --git a/lib/pages/chat_list/chat_list_body.dart b/lib/pages/chat_list/chat_list_body.dart index 38253d059..ba1fee31d 100644 --- a/lib/pages/chat_list/chat_list_body.dart +++ b/lib/pages/chat_list/chat_list_body.dart @@ -35,7 +35,7 @@ class ChatListViewBody extends StatelessWidget { key: ValueKey(activeSpace), spaceId: activeSpace, onBack: controller.clearActiveSpace, - onChatTab: (room) => controller.onChatTap(room), + onChatTab: controller.onChatTap, activeChat: controller.activeChat, ); } @@ -123,7 +123,7 @@ class ChatListViewBody extends StatelessWidget { if (!controller.isSearchMode && AppSettings.showPresences.value) GestureDetector( - onLongPress: () => controller.dismissStatusList(), + onLongPress: controller.dismissStatusList, child: StatusMessageList( onStatusEdit: controller.setStatus, ), diff --git a/lib/pages/dialer/dialer.dart b/lib/pages/dialer/dialer.dart index 006ef3d53..ae2d56552 100644 --- a/lib/pages/dialer/dialer.dart +++ b/lib/pages/dialer/dialer.dart @@ -194,9 +194,7 @@ class MyCallingPage extends State { call.onCallStateChanged.stream.listen(_handleCallState); call.onCallEventChanged.stream.listen((event) { if (event == CallStateChange.kFeedsChanged) { - setState(() { - call.tryRemoveStopedStreams(); - }); + setState(call.tryRemoveStopedStreams); } else if (event == CallStateChange.kLocalHoldUnhold || event == CallStateChange.kRemoteHoldUnhold) { setState(() {}); diff --git a/lib/utils/matrix_sdk_extensions/device_extension.dart b/lib/utils/matrix_sdk_extensions/device_extension.dart index 3872309ca..6f8ec4ed6 100644 --- a/lib/utils/matrix_sdk_extensions/device_extension.dart +++ b/lib/utils/matrix_sdk_extensions/device_extension.dart @@ -4,10 +4,10 @@ import 'package:matrix/matrix.dart'; IconData _getIconFromName(String displayname) { final name = displayname.toLowerCase(); - if ({'android'}.any((s) => name.contains(s))) { + if ({'android'}.any(name.contains)) { return Icons.phone_android_outlined; } - if ({'ios', 'ipad', 'iphone', 'ipod'}.any((s) => name.contains(s))) { + if ({'ios', 'ipad', 'iphone', 'ipod'}.any(name.contains)) { return Icons.phone_iphone_outlined; } if ({ @@ -19,16 +19,10 @@ IconData _getIconFromName(String displayname) { '/_matrix', 'safari', 'opera', - }.any((s) => name.contains(s))) { + }.any(name.contains)) { return Icons.web_outlined; } - if ({ - 'desktop', - 'windows', - 'macos', - 'linux', - 'ubuntu', - }.any((s) => name.contains(s))) { + if ({'desktop', 'windows', 'macos', 'linux', 'ubuntu'}.any(name.contains)) { return Icons.desktop_mac_outlined; } return Icons.device_unknown_outlined; diff --git a/lib/utils/stream_extension.dart b/lib/utils/stream_extension.dart index 66e840fce..80983b50f 100644 --- a/lib/utils/stream_extension.dart +++ b/lib/utils/stream_extension.dart @@ -35,7 +35,7 @@ extension StreamExtension on Stream { }; final subscription = listen( (_) => onMessage?.call(), - onDone: () => controller.close(), + onDone: controller.close, onError: (e, s) => controller.addError(e, s), ); // add proper cleanup to the subscription and the controller, to not memory leak diff --git a/lib/utils/uia_request_manager.dart b/lib/utils/uia_request_manager.dart index 34a51b1cf..e422f966c 100644 --- a/lib/utils/uia_request_manager.dart +++ b/lib/utils/uia_request_manager.dart @@ -105,9 +105,7 @@ extension UiaRequestManager on MatrixState { launchUrl(url, mode: LaunchMode.inAppBrowserView); final completer = Completer(); - final listener = AppLifecycleListener( - onResume: () => completer.complete(), - ); + final listener = AppLifecycleListener(onResume: completer.complete); await completer.future; listener.dispose(); diff --git a/lib/utils/url_launcher.dart b/lib/utils/url_launcher.dart index 47613e5d4..994d40c45 100644 --- a/lib/utils/url_launcher.dart +++ b/lib/utils/url_launcher.dart @@ -66,7 +66,7 @@ class UrlLauncher { .split(';') .first .split(',') - .map((s) => double.tryParse(s)) + .map(double.tryParse) .toList(); if (latlong.length == 2 && latlong.first != null &&