fluttercommunity / plus_plugins

Flutter Community Plus Plugins
BSD 3-Clause "New" or "Revised" License
1.58k stars 951 forks source link

[Bug]: Connectivity plus returns only ConnectivityResult.ethernet even when device is connected via LAN and WiFi #3073

Open Vera-Spoettl opened 3 months ago

Vera-Spoettl commented 3 months ago

Platform

MacOS 14.4.1

Plugin

connectivity_plus

Version

6.0.3

Flutter SDK

Flutter 3.22.0 • channel stable

Steps to reproduce

Run https://github.com/fluttercommunity/plus_plugins/blob/main/packages/connectivity_plus/connectivity_plus/example/lib/main.dart

Even while my Mac is connected to ethernet and Wifi, only the ethernet connection is shown. As a list of ConnectivityResult is returned,

Code Sample

Example app from repo.
https://github.com/fluttercommunity/plus_plugins/blob/main/packages/connectivity_plus/connectivity_plus/example/lib/main.dart

Logs

flutter: Connectivity changed: [ConnectivityResult.ethernet]
flutter: Connectivity changed: [ConnectivityResult.none]
flutter: Connectivity changed: [ConnectivityResult.ethernet]

after disconnecting from lan network
flutter: Connectivity changed: [ConnectivityResult.none]
flutter: Connectivity changed: [ConnectivityResult.wifi]

plugging in to lan again
flutter: Connectivity changed: [ConnectivityResult.ethernet]

Flutter Doctor

[✓] Flutter (Channel stable, 3.22.0, on macOS 14.4.1 23E224 darwin-arm64, locale de-DE)
    • Flutter version 3.22.0 on channel stable at /Users/vsz/Development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 5dcb86f68f (8 weeks ago), 2024-05-09 07:39:20 -0500
    • Engine revision f6344b75dc
    • Dart version 3.4.0
    • DevTools version 2.34.3

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/vsz/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.4)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15F31d
    • CocoaPods version 1.15.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2023.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)

[✓] VS Code (version 1.90.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.90.0

[✓] Connected device (3 available)
    • macOS (desktop)                 • macos                 • darwin-arm64   • macOS 14.4.1 23E224 darwin-arm64
    • Mac Designed for iPad (desktop) • mac-designed-for-ipad • darwin         • macOS 14.4.1 23E224 darwin-arm64
    • Chrome (web)                    • chrome                • web-javascript • Google Chrome 126.0.6478.127
    ! Error: Browsing on the local area network for iPad von Vera. Ensure the device is unlocked and attached with a cable or
      associated with the same local area network as this Mac.
      The device must be opted into Developer Mode to connect wirelessly. (code -27)

[✓] Network resources
    • All expected network resources are available.

• No issues found!

Checklist before submitting a bug

miquelbeltran commented 3 months ago

Hi @Vera-Spoettl

The plugin exposes the interface used in the connections using NWPathMonitor method usesInterfaceType, documented here: https://developer.apple.com/documentation/network/nwpath/2998729-usesinterfacetype

I expect that it will only report on the actual connection used (in this case ethernet) rather than on all the available connections.

If listing all the available interfaces is a use case you need, you would have to use instead availableInterfaces, which I think would list them all: https://developer.apple.com/documentation/network/nwpath/2998720-availableinterfaces

Adding this is not on our plans, but we could make this a feature request, or you are also welcome to submit a PR with an idea for it.

vbuberen commented 3 months ago

Adding this is not on our plans

In fact I wanted to take a look at it as have an adapter to connect Ethernet to USB-C in MacBook. Also did this research for available API features and curios about how availableInterfaces would work here.

vbuberen commented 1 month ago

Recently I wanted to complete my PR with adding a new API to get all available types as it was suggested in the review, but had a second thought on the reasoning to expand the API this way. It doesn't make much sense to have all these types listed as the OS uses only one for network activity anyway.

@Vera-Spoettl Would you mind sharing use cases when having all types listed is beneficial?