Platform
iOS 26.4
Plugin
connectivity_plus
Version
6.1.5
Flutter SDK
3.35.4
Steps to reproduce
A customer is running our app on iOS using Microsoft Tunnel for Microsoft Intune. This Microsoft service is supposed to start a VPN service on the device as soon as there is a network request from the app it controls.
Our app has the following logic when it starts up: if the connectivity_plus plugin reports some connectivity, we start a ping service and show an online/offline banner depending on whether we can ping our server or not.
When Microsoft Tunnel is in use, Connectivity.none is reported and our ping service doesn't start, which in turn does not turn on the VPN.
For the end user, they will not be able to login on the first attempt, the network request will fail with "no route to host". This failed request will however start the VPN service. On a second attempt, the login then works. Our customer rightfully argues that the login should work on the first attempt.
Looking at the connectivityFrom method in PathMonitorConnectivityProvider, I noticed that it does not consider path.status = .requiresConnection. I assume this is the issue and it should be handled also by the plugin.
NWPath.Status.requiresConnection
The workaround for us is to adapt our app to ping regardless of the connectivity status however we believe this could be covered by the plugin directly. Thanks for considering.
Internal request reference: 462000.
Code Sample
bool _isNetworkAvailable(List<ConnectivityResult> result) {
return result.contains(ConnectivityResult.mobile) ||
result.contains(ConnectivityResult.wifi) ||
result.contains(ConnectivityResult.ethernet) ||
result.contains(ConnectivityResult.vpn) ||
result.contains(ConnectivityResult.bluetooth) ||
result.contains(ConnectivityResult.other);
}
Connectivity connectivity = Connectivity();
connectivity.onConnectivityChanged.listen((List<ConnectivityResult> result) {
_debug('Connectivity: new connectivity type: ${result.join(',')}');
if (_isNetworkAvailable(result)) {
// start ping
}
else {
// stop ping
}
});
Logs
2026-06-10T14:10:37.797384 DEBUG Main Connectivity: new connectivity type: ConnectivityResult.none
Flutter Doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.35.4, on macOS 26.4.1 25E253 darwin-arm64, locale
en-US)
[✓] Android toolchain - develop for Android devices (Android SDK version 36.1.0)
[✓] Xcode - develop for iOS and macOS (Xcode 26.4)
[✗] Chrome - develop for the web (Cannot find Chrome executable at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome)
! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.
[✓] Android Studio (version 2022.3)
[✓] Proxy Configuration
[✓] Connected device (1 available)
[✓] Network resources
Checklist before submitting a bug
Platform
iOS 26.4
Plugin
connectivity_plus
Version
6.1.5
Flutter SDK
3.35.4
Steps to reproduce
A customer is running our app on iOS using Microsoft Tunnel for Microsoft Intune. This Microsoft service is supposed to start a VPN service on the device as soon as there is a network request from the app it controls.
Our app has the following logic when it starts up: if the connectivity_plus plugin reports some connectivity, we start a ping service and show an online/offline banner depending on whether we can ping our server or not.
When Microsoft Tunnel is in use,
Connectivity.noneis reported and our ping service doesn't start, which in turn does not turn on the VPN.For the end user, they will not be able to login on the first attempt, the network request will fail with "no route to host". This failed request will however start the VPN service. On a second attempt, the login then works. Our customer rightfully argues that the login should work on the first attempt.
Looking at the
connectivityFrommethod inPathMonitorConnectivityProvider, I noticed that it does not considerpath.status = .requiresConnection. I assume this is the issue and it should be handled also by the plugin.NWPath.Status.requiresConnection
The workaround for us is to adapt our app to ping regardless of the connectivity status however we believe this could be covered by the plugin directly. Thanks for considering.
Internal request reference: 462000.
Code Sample
Logs
Flutter Doctor
Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel stable, 3.35.4, on macOS 26.4.1 25E253 darwin-arm64, locale en-US) [✓] Android toolchain - develop for Android devices (Android SDK version 36.1.0) [✓] Xcode - develop for iOS and macOS (Xcode 26.4) [✗] Chrome - develop for the web (Cannot find Chrome executable at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome) ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable. [✓] Android Studio (version 2022.3) [✓] Proxy Configuration [✓] Connected device (1 available) [✓] Network resourcesChecklist before submitting a bug
flutter pub upgradeflutter clean