op_wifi_utils 1.3.0
op_wifi_utils: ^1.3.0 copied to clipboard
A lightweight Flutter plugin using modern Android and iOS APIs to connect to Wi-Fi, disconnect, and retrieve the current SSID, based on OpResult for structured error handling.
Changelog #
[1.3.0] - 2025-06-12 #
Fixed #
- Android: Prevented rare crash in
connectToWifi
caused by multiple invocations ofresult.success/error
due to network callback races. Now uses anAtomicBoolean
guard to ensure only one result is returned. - iOS: Prevented potential crash in
connectToWifi
by wrappingFlutterResult
in a single-call-safe closure to avoid double invocation under race conditions.
Improved #
- Android: Finalized safe binding and callback cleanup during Wi-Fi connection flow, ensuring
bindProcessToNetwork
andunregisterNetworkCallback
are used defensively. - iOS:
getCurrentSsid
now gracefully handles missing permissions, unavailable interfaces, and unsupported cases with informative errors. - Internal: Aligned native implementations for both platforms with consistent safeguards and cleaned up error handling.
[1.2.2] - 2025-04-18 #
Fixed #
- Properly unregisters the network callback in
disconnectFromWifi
on Android 10+ to fully release temporary Wi-Fi connections established viaWifiNetworkSpecifier
. - Prevents lingering connections and ensures the system cleans up the app-bound network reliably after disconnect.
Improved #
- Strengthened
disconnectFromWifi
behavior on Android by combiningbindProcessToNetwork(null)
withunregisterNetworkCallback
when applicable, as per platform requirements for Android 10+.
[1.2.1] - 2025-04-17 #
Fixed #
- Fixed a critical issue introduced in
v1.2.0
whereconnectToWifi
on Android incorrectly returnedINVALID_PASSWORD
due to unreliable SSID validation after connection. - The plugin now trusts the system connection callback (
onAvailable
) on Android 10+ and does not rely onWifiManager.connectionInfo.ssid
, which may return<unknown ssid>
. - Ensures proper use of
UNAVAILABLE
as a general error when the connection fails without specific cause.
Added #
- New
OpWifiUtilsError.unavailable
error type to represent general connection failures on Android (e.g., network out of range, wrong password, or timeout).
[1.2.0] - 2025-04-15 #
Changed #
- All
result.success
andresult.error
calls in Android native code are now wrapped inHandler(Looper.getMainLooper()).post { ... }
to ensure safe main thread return. - This change improves stability and avoids potential crashes or UI threading issues across different Android versions and manufacturers.
- Also avoids blocking the main thread while waiting for platform responses, improving compatibility with Flutter's MethodChannel behavior.
[1.1.0] - 2025-04-14 #
- Improved
connectToWifi
behavior on iOS:- Handles iOS error code 2 (invalid password format) and maps it to
INVALID_PASSWORD
. - Verifies actual connection by comparing current SSID after a short delay.
- Distinguishes
SSID_NOT_FOUND
from other connection issues.
- Handles iOS error code 2 (invalid password format) and maps it to
- Improved
connectToWifi
behavior on Android:- After
onAvailable
, verifies the actual connected SSID. - If the SSID doesn't match the expected one, returns
INVALID_PASSWORD
to indicate likely credential issues.
- After
[1.0.1] - 2025-04-03 #
- README and pubspec wording improved for clarity and consistency
[1.0.0] - 2025-04-03 #
- Initial release 🎉
- Connect to Wi-Fi with optional password (iOS and Android)
- Disconnect from Wi-Fi network
- Check current connected SSID
- Full OpResult-based error handling
- joinOnce option supported on iOS
- Example app included for both platforms