diff --git a/lib/providers/board_state_provider.dart b/lib/providers/board_state_provider.dart index ec0f87c50..0ca7c56eb 100644 --- a/lib/providers/board_state_provider.dart +++ b/lib/providers/board_state_provider.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:flutter/foundation.dart'; import 'package:connectivity_plus/connectivity_plus.dart'; @@ -23,6 +25,8 @@ class BoardStateProvider extends ChangeNotifier { int pslabVersion = 0; int pslabFirmwareVersion = 0; bool _isProcessing = false; + StreamSubscription? _usbSubscription; + StreamSubscription>? _connectivitySubscription; final ValueNotifier legacyFirmwareNotifier = ValueNotifier(null); @@ -44,7 +48,7 @@ class BoardStateProvider extends ChangeNotifier { if (configProvider.config.autoStart) { if (!kIsWeb && defaultTargetPlatform == TargetPlatform.android) { - UsbSerial.usbEventStream?.listen( + _usbSubscription = UsbSerial.usbEventStream?.listen( (UsbEvent usbEvent) async { if (usbEvent.event == UsbEvent.ACTION_USB_ATTACHED) { if (_isProcessing) return; @@ -68,7 +72,7 @@ class BoardStateProvider extends ChangeNotifier { } } - Connectivity() + _connectivitySubscription = Connectivity() .onConnectivityChanged .listen((List results) { if (results.contains(ConnectivityResult.none)) { @@ -120,4 +124,12 @@ class BoardStateProvider extends ChangeNotifier { } return false; } + + @override + void dispose() { + _usbSubscription?.cancel(); + _connectivitySubscription?.cancel(); + legacyFirmwareNotifier.dispose(); + super.dispose(); + } } diff --git a/lib/view/about_us_screen.dart b/lib/view/about_us_screen.dart index b2711f065..57d979e37 100644 --- a/lib/view/about_us_screen.dart +++ b/lib/view/about_us_screen.dart @@ -135,7 +135,14 @@ class _AboutUsScreenState extends State { style: const TextStyle(fontSize: 15), ), onTap: () async { - await launchUrl(Uri.parse(appLocalizations.feedbackForm)); + final uri = Uri.parse(appLocalizations.feedbackForm); + if (await canLaunchUrl(uri)) { + await launchUrl(uri); + } else { + debugPrint( + 'Could not launch ${appLocalizations.feedbackForm}', + ); + } }, ), const Divider(thickness: 0.5), @@ -162,7 +169,8 @@ class _AboutUsScreenState extends State { ); } else if (snapshot.hasError) { logger.e( - "Error getting version information: ${snapshot.error.toString()}"); + "Error getting version information: ${snapshot.error.toString()}", + ); return Text( appLocalizations.error, style: const TextStyle(fontSize: 15), diff --git a/windows/CMakeLists.txt b/windows/CMakeLists.txt index 4fda1124e..be992493e 100644 --- a/windows/CMakeLists.txt +++ b/windows/CMakeLists.txt @@ -30,7 +30,8 @@ set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") # Use Unicode for all projects. -add_definitions(-DUNICODE -D_UNICODE) +# Use Unicode for all projects. +add_definitions(-DUNICODE -D_UNICODE -D_SILENCE_EXPERIMENTAL_COROUTINE_DEPRECATION_WARNINGS) # Compilation settings that should be applied to most targets. #