esp_provisioning_wifi 0.1.1 copy "esp_provisioning_wifi: ^0.1.1" to clipboard
esp_provisioning_wifi: ^0.1.1 copied to clipboard

Bloc wrapper over 'flutter_esp_ble_prov' which provisions WiFi on Espressif ESP32 devices over Bluetooth using Espressif-provided provisioning libraries.

logo

pub package License: MIT

esp_provisioning_wifi #

Library to provision WiFi on ESP32 devices over Bluetooth, using Bloc.

API Notes #

  • Import the package via the public barrel:
    • import 'package:esp_provisioning_wifi/esp_provisioning_wifi.dart';
  • provisionWifi(...) returns Future<bool> (non-null).
    • true means provisioning completed successfully.
    • false means provisioning completed but was not successful.
  • cancelOperations() returns Future<bool> and cancels active native work.
  • EspProvisioningState.failure exposes typed failures using EspProvisioningFailure.
    • none, permissionDenied, timeout, cancelled, deviceNotFound, invalidResponse, platform, unknown.
  • EspProvisioningState.errorCode and errorDetails expose raw platform diagnostics.
  • EspProvisioningState.timedOut is removed and replaced by typed failure checks:
    • use state.failure == EspProvisioningFailure.timeout.
  • scanWifiNetworks(...) and provisionWifi(...) accept optional connectTimeout.
    • This timeout is propagated through Dart and native layers for BLE connection timing.
  • fetchCustomData(...) reads provisioning custom endpoint payloads (defaults to endpoint custom-data).
    • Useful for firmware-driven provisioning metadata such as lock state or SoftAP password hints.

Error Code Contract #

Native layers report stable error codes that the bloc maps into EspProvisioningFailure:

  • E0 (EspProvisioningErrorCodes.missingArgument)
  • E1 (EspProvisioningErrorCodes.wifiScanFailed)
  • E_PERMISSION
  • E_BLE_SCAN_START
  • E_BLE_SCAN
  • E_DEVICE_NOT_FOUND
  • E_INVALID_RESPONSE
  • E_CONNECT_TIMEOUT
  • E_CONNECT
  • E_CUSTOM_DATA
  • E_DEVICE
  • DEVICE_DISCONNECTED
  • E_CANCELLED
  • E_TIMEOUT
  • E_UNKNOWN

Import: package:esp_provisioning_wifi/esp_provisioning_error_codes.dart.

Migration (0.0.x -> 0.1.0) #

  1. Replace state.timedOut checks with state.failure == EspProvisioningFailure.timeout.
  2. For error UX and telemetry, use both:
    • state.failure for typed handling
    • state.errorCode and state.errorDetails for diagnostics
  3. If you call service methods directly, invoke cancelOperations() before starting a new scan/provision flow to cancel stale native operations.
  4. Replace direct src imports with:
    • import 'package:esp_provisioning_wifi/esp_provisioning_wifi.dart';

Usage #

BlocProvider(
  create: (_) => EspProvisioningBloc(),
  child: BlocConsumer<EspProvisioningBloc, EspProvisioningState>(
    listener: (_, state) {
      if (state.status == EspProvisioningStatus.error) {
        // Use typed failure for user-facing behavior.
        debugPrint('Failure: ${state.failure} | ${state.errorMsg}');
      }
    },
    builder: (_, state) {
      return Text('Status: ${state.status}');
    },
  ),
)

Requirements #

Android 6 (API level 23)+ #

Make sure your android/build.gradle has 23+ here:

defaultConfig {
    minSdkVersion 23
}

If your app enforces repositories via settings.gradle (dependencyResolutionManagement), ensure jitpack.io is present:

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }
    }
}

Bluetooth permissions are automatically requested by the library.

iOS 13.0+ #

Add this in your ios/Runner/Info.plist:

<key>NSBluetoothAlwaysUsageDescription</key>
<string>Our app uses bluetooth to find, connect and transfer data between different devices</string>

Notes #

flutter_esp_ble_prov #

This library is a Bloc wrapper over flutter_esp_ble_prov.

esp-idf-provisioning-android #

The Espressif Android Provisioning library is currently embedded in libs.

4
likes
130
points
258
downloads

Publisher

verified publishersleepasloth.com

Weekly Downloads

Bloc wrapper over 'flutter_esp_ble_prov' which provisions WiFi on Espressif ESP32 devices over Bluetooth using Espressif-provided provisioning libraries.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

bloc_concurrency, equatable, flutter, flutter_bloc, permission_handler, plugin_platform_interface

More

Packages that depend on esp_provisioning_wifi

Packages that implement esp_provisioning_wifi