connectivity_plus_watchos

The watchOS implementation of connectivity_plus.

Scaffolded with flutter-watchos plugin port and finished by hand as an FFI implementation over the Network framework's NWPathMonitor — see PORTING_REPORT.md.

Usage

connectivity_plus does not include a watchOS implementation, so add this package alongside it:

dependencies:
  connectivity_plus: ^7.3.1
  connectivity_plus_watchos: ^0.2.1
final results = await Connectivity().checkConnectivity();
Connectivity().onConnectivityChanged.listen((r) => print(r));

API coverage

Member watchOS
checkConnectivity ✅ NWPathMonitor → wifi / mobile / ethernet / other / none
onConnectivityChanged ✅ a persistent native NWPathMonitor pushes changes into Dart; no timer runs, and native suppresses updates that do not change the reported value

The path monitor delivers its first path a moment after it starts. Until then the value is unknown, and checkConnectivity() and a new listener's first event wait for that first path, for at most one second, instead of reporting none. If no path arrives within that second they report none, and the stream sends the real value when it arrives.

SCNetworkReachability (which connectivity_plus uses on iOS) does not exist on watchOS, so this uses the Network framework (watchOS 6+) instead.

Example on the watch screen

The example is connectivity_plus's own example app, kept verbatim. It is designed for a phone and overflows a watch screen at native density, so the example's runner opts into the flutter-watchos content scale (watchos/Runner/Info.plist):

<key>FlutterWatchOSContentScale</key>
<real>0.5</real>

The app lays out in a logical space twice the screen's size and is drawn smaller, without touching the example's Dart code. The watchOS widget test example/test/watchos_content_scale_test.dart lays the app out at that scale on every watch screen size and fails on any overflow.

Not supported on watchOS

Nothing: every member of connectivity_plus_platform_interface 2.1.0 is implemented. PORTING_REPORT.md lists each member under "Interface coverage".

License

The FlutterWatch Authors under a BSD-3-Clause license. See LICENSE for the full text.