From 471b559e20ff148f736c69e159200c0ce68e88bc Mon Sep 17 00:00:00 2001 From: Dennis Moschina <45356478+DennisMoschina@users.noreply.github.com> Date: Tue, 12 May 2026 11:17:43 +0200 Subject: [PATCH 1/4] feat(fota): add eraseFirmwareSlot method --- .../Flutter/GeneratedPluginRegistrant.swift | 2 ++ lib/src/fota/firmware_slot_manager_impl.dart | 18 ++++++++++++++---- .../fota_slot_info_capability.dart | 12 ++++++++++++ pubspec.yaml | 5 ++++- 4 files changed, 32 insertions(+), 5 deletions(-) diff --git a/example/macos/Flutter/GeneratedPluginRegistrant.swift b/example/macos/Flutter/GeneratedPluginRegistrant.swift index 317a6682..301491e5 100644 --- a/example/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/example/macos/Flutter/GeneratedPluginRegistrant.swift @@ -7,10 +7,12 @@ import Foundation import file_picker import flutter_archive +import mcumgr_flutter import universal_ble func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { FilePickerPlugin.register(with: registry.registrar(forPlugin: "FilePickerPlugin")) FlutterArchivePlugin.register(with: registry.registrar(forPlugin: "FlutterArchivePlugin")) + McumgrFlutterPlugin.register(with: registry.registrar(forPlugin: "McumgrFlutterPlugin")) UniversalBlePlugin.register(with: registry.registrar(forPlugin: "UniversalBlePlugin")) } diff --git a/lib/src/fota/firmware_slot_manager_impl.dart b/lib/src/fota/firmware_slot_manager_impl.dart index c162b253..941f1397 100644 --- a/lib/src/fota/firmware_slot_manager_impl.dart +++ b/lib/src/fota/firmware_slot_manager_impl.dart @@ -68,15 +68,25 @@ class McuMgrFotaSlotInfoManager implements FotaSlotInfoCapability { @override Future> readFirmwareSlots() async { - final updateManager = await _updateManagerFactory.getUpdateManager(_deviceId); + final updateManager = + await _updateManagerFactory.getUpdateManager(_deviceId); try { final slots = await updateManager.readImageList(); if (slots == null) { return const []; } - return slots - .map(FirmwareSlotInfo.fromImageSlot) - .toList(growable: false); + return slots.map(FirmwareSlotInfo.fromImageSlot).toList(growable: false); + } finally { + await updateManager.kill(); + } + } + + @override + Future eraseFirmwareSlot({int? channel}) async { + final updateManager = + await _updateManagerFactory.getUpdateManager(_deviceId); + try { + await updateManager.erase(channel); } finally { await updateManager.kill(); } diff --git a/lib/src/models/capabilities/fota_slot_info_capability.dart b/lib/src/models/capabilities/fota_slot_info_capability.dart index 0203c2ef..9c3a15ae 100644 --- a/lib/src/models/capabilities/fota_slot_info_capability.dart +++ b/lib/src/models/capabilities/fota_slot_info_capability.dart @@ -9,6 +9,18 @@ import 'package:mcumgr_flutter/mcumgr_flutter.dart'; abstract class FotaSlotInfoCapability { /// Reads the firmware images or slots currently reported by the wearable. Future> readFirmwareSlots(); + + /// Erases an inactive firmware image slot on the wearable. + /// + /// When [channel] is omitted, the underlying firmware backend erases its + /// default secondary image slot. When [channel] is provided, the erase request + /// targets that raw mcumgr image slot channel. + /// + /// Devices reject erase requests for slots that contain a confirmed image, an + /// image pending test on the next reboot, or an active split-image slot. Use + /// [readFirmwareSlots] first when the UI needs to decide whether erasing is + /// available. + Future eraseFirmwareSlot({int? channel}); } /// Snapshot of one firmware image slot reported by the wearable. diff --git a/pubspec.yaml b/pubspec.yaml index 99d92a30..7fb1c2fc 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -30,7 +30,10 @@ dependencies: flutter_bloc: ^9.1.1 http: ^1.1.2 json_annotation: ^4.8.1 - mcumgr_flutter: ^0.6.1 + mcumgr_flutter: + git: + url: https://github.com/DennisMoschina/Flutter-nRF-Connect-Device-Manager.git + ref: master path_provider: ^2.1.1 provider: ^6.1.1 rxdart: ^0.28.0 From 6b0bc3ff03f83b7f84a6ce2f0928aa465d09d916 Mon Sep 17 00:00:00 2001 From: Dennis Moschina <45356478+DennisMoschina@users.noreply.github.com> Date: Tue, 12 May 2026 11:18:22 +0200 Subject: [PATCH 2/4] doc(fota): added documentation for image erase --- doc/CAPABILITIES.md | 1 + doc/FOTA.md | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/doc/CAPABILITIES.md b/doc/CAPABILITIES.md index e2b68300..17be381c 100644 --- a/doc/CAPABILITIES.md +++ b/doc/CAPABILITIES.md @@ -200,6 +200,7 @@ Provides firmware slot or image-table state for FOTA backends that expose it. final slotInfo = wearable.getCapability(); if (slotInfo != null) { final slots = await slotInfo.readFirmwareSlots(); + await slotInfo.eraseFirmwareSlot(); } ``` diff --git a/doc/FOTA.md b/doc/FOTA.md index f033b50e..4bc92e5f 100644 --- a/doc/FOTA.md +++ b/doc/FOTA.md @@ -259,6 +259,25 @@ Each `FirmwareSlotInfo` contains: This is useful when you want to show the current primary and secondary images before or after an update. +## Erase An Inactive Firmware Slot + +Slot-aware wearables can erase an inactive firmware image slot through +`FotaSlotInfoCapability`: + +```dart +final slotInfo = wearable.getCapability(); +if (slotInfo != null) { + await slotInfo.eraseFirmwareSlot(); + await slotInfo.eraseFirmwareSlot(channel: 1); +} +``` + +When `channel` is omitted, the firmware backend erases its default secondary +image slot. When `channel` is provided, the erase request targets that raw +mcumgr image slot channel. Devices reject erase requests for slots that contain +a confirmed image, an image pending test on the next reboot, or an active +split-image slot. + ## What Happens Internally You do not need to call the lower-level handler classes directly, but it helps to know what `UpdateBloc` is doing: @@ -367,7 +386,7 @@ Recommended UX: - `UnifiedFirmwareRepository` caches results for 15 minutes unless you request a refresh - The current upload path uses `mcumgr_flutter` under the hood - `FotaSlotInfoCapability` is optional and only available on wearables whose firmware backend exposes slot-style state -- `mcumgr_flutter 0.6.1` does not expose an API to erase an individual image slot, so this library does not currently offer slot erase either +- The current local `mcumgr_flutter` integration exposes slot erase through `FotaSlotInfoCapability.eraseFirmwareSlot` ## Related Source Files From 7be633468d1730ca58b9df97dec462829fa399f0 Mon Sep 17 00:00:00 2001 From: Dennis Moschina <45356478+DennisMoschina@users.noreply.github.com> Date: Tue, 12 May 2026 11:18:48 +0200 Subject: [PATCH 3/4] chore(example): changed dependency of mcumgr_flutter to be compatible with library --- example/pubspec.lock | 33 +++++++++++++++++++++++++-------- example/pubspec.yaml | 5 ++++- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/example/pubspec.lock b/example/pubspec.lock index a88ca564..957ea6bf 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -1,6 +1,14 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + archive: + dependency: transitive + description: + name: archive + sha256: a96e8b390886ee8abb49b7bd3ac8df6f451c621619f52a26e815fdcf568959ff + url: "https://pub.dev" + source: hosted + version: "4.0.9" args: dependency: transitive description: @@ -315,11 +323,12 @@ packages: mcumgr_flutter: dependency: "direct main" description: - name: mcumgr_flutter - sha256: fbf2f621dea23dd5dc70494e700c5d4706010841b9e68739ba563cbd88c7e8ba - url: "https://pub.dev" - source: hosted - version: "0.6.1" + path: "." + ref: master + resolved-ref: "7bec874051397e0e0dcbce4a1a660e14be5a3eb3" + url: "https://github.com/DennisMoschina/Flutter-nRF-Connect-Device-Manager.git" + source: git + version: "0.8.1" meta: dependency: "direct main" description: @@ -350,7 +359,7 @@ packages: path: ".." relative: true source: path - version: "2.3.5" + version: "2.3.6" path: dependency: transitive description: @@ -487,14 +496,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.8" + posix: + dependency: transitive + description: + name: posix + sha256: "185ef7606574f789b40f289c233efa52e96dead518aed988e040a10737febb07" + url: "https://pub.dev" + source: hosted + version: "6.5.0" protobuf: dependency: transitive description: name: protobuf - sha256: de9c9eb2c33f8e933a42932fe1dc504800ca45ebc3d673e6ed7f39754ee4053e + sha256: "75ec242d22e950bdcc79ee38dd520ce4ee0bc491d7fadc4ea47694604d22bf06" url: "https://pub.dev" source: hosted - version: "4.2.0" + version: "6.0.0" provider: dependency: "direct main" description: diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 2f208ccd..5e4c81fa 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -48,7 +48,10 @@ dependencies: flutter_svg: ^2.0.17 provider: ^6.1.5 file_picker: ^10.3.7 - mcumgr_flutter: ^0.6.1 + mcumgr_flutter: + git: + url: https://github.com/DennisMoschina/Flutter-nRF-Connect-Device-Manager.git + ref: master flutter_bloc: ^9.1.1 dev_dependencies: From 37df9d0089e79c46e5d0c03e8112ffe471e7cf22 Mon Sep 17 00:00:00 2001 From: Dennis Moschina <45356478+DennisMoschina@users.noreply.github.com> Date: Mon, 18 May 2026 09:35:11 +0200 Subject: [PATCH 4/4] chore(dependencies): update mcumgr_flutter to version 0.9.0 --- example/linux/flutter/generated_plugins.cmake | 1 + example/pubspec.lock | 187 +++++++++++++----- example/pubspec.yaml | 5 +- .../windows/flutter/generated_plugins.cmake | 1 + pubspec.yaml | 5 +- 5 files changed, 137 insertions(+), 62 deletions(-) diff --git a/example/linux/flutter/generated_plugins.cmake b/example/linux/flutter/generated_plugins.cmake index 2e1de87a..be1ee3e5 100644 --- a/example/linux/flutter/generated_plugins.cmake +++ b/example/linux/flutter/generated_plugins.cmake @@ -6,6 +6,7 @@ list(APPEND FLUTTER_PLUGIN_LIST ) list(APPEND FLUTTER_FFI_PLUGIN_LIST + jni ) set(PLUGIN_BUNDLED_LIBRARIES) diff --git a/example/pubspec.lock b/example/pubspec.lock index 957ea6bf..8a77d9fb 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -21,18 +21,18 @@ packages: dependency: transitive description: name: async - sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" + sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37 url: "https://pub.dev" source: hosted - version: "2.13.0" + version: "2.13.1" bloc: dependency: "direct main" description: name: bloc - sha256: a2cebb899f91d36eeeaa55c7b20b5915db5a9df1b8fd4a3c9c825e22e474537d + sha256: e03b235924e4f509c27b5d6b2f949200e0a91149a9818b4f65eeb56662b75413 url: "https://pub.dev" source: hosted - version: "9.1.0" + version: "9.2.1" bluez: dependency: transitive description: @@ -65,6 +65,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.2" + code_assets: + dependency: transitive + description: + name: code_assets + sha256: "83ccdaa064c980b5596c35dd64a8d3ecc68620174ab9b90b6343b753aa721687" + url: "https://pub.dev" + source: hosted + version: "1.0.0" collection: dependency: transitive description: @@ -85,10 +93,10 @@ packages: dependency: transitive description: name: cross_file - sha256: "701dcfc06da0882883a2657c445103380e53e647060ad8d9dfb710c100996608" + sha256: "28bb3ae56f117b5aec029d702a90f57d285cd975c3c5c281eaca38dbc47c5937" url: "https://pub.dev" source: hosted - version: "0.3.5+1" + version: "0.3.5+2" crypto: dependency: transitive description: @@ -101,26 +109,26 @@ packages: dependency: "direct main" description: name: cupertino_icons - sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 + sha256: "41e005c33bd814be4d3096aff55b1908d419fde52ca656c8c47719ec745873cd" url: "https://pub.dev" source: hosted - version: "1.0.8" + version: "1.0.9" dbus: dependency: transitive description: name: dbus - sha256: "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c" + sha256: d0c98dcd4f5169878b6cf8f6e0a52403a9dff371a3e2f019697accbf6f44a270 url: "https://pub.dev" source: hosted - version: "0.7.11" + version: "0.7.12" equatable: dependency: transitive description: name: equatable - sha256: "567c64b3cb4cf82397aac55f4f0cbd3ca20d77c6c03bedbc4ceaddc08904aef7" + sha256: "3e0141505477fd8ad55d6eb4e7776d3fe8430be8e497ccb1521370c3f21a3e2b" url: "https://pub.dev" source: hosted - version: "2.0.7" + version: "2.0.8" fake_async: dependency: transitive description: @@ -133,18 +141,26 @@ packages: dependency: transitive description: name: ffi - sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" + sha256: "6d7fd89431262d8f3125e81b50d3847a091d846eafcd4fdb88dd06f36d705a45" url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" + file: + dependency: transitive + description: + name: file + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" + source: hosted + version: "7.0.1" file_picker: dependency: "direct main" description: name: file_picker - sha256: "7872545770c277236fd32b022767576c562ba28366204ff1a5628853cf8f2200" + sha256: "57d9a1dd5063f85fa3107fb42d1faffda52fdc948cefd5fe5ea85267a5fc7343" url: "https://pub.dev" source: hosted - version: "10.3.7" + version: "10.3.10" fixnum: dependency: transitive description: @@ -162,10 +178,10 @@ packages: dependency: transitive description: name: flutter_archive - sha256: "5ca235f304c12bf468979235f400f79846d204169d715939e39197106f5fc970" + sha256: e433389fde0bdfc20af40784fdb6d91753794b40cf708a43f95244fcd5d6c298 url: "https://pub.dev" source: hosted - version: "6.0.3" + version: "6.0.4" flutter_bloc: dependency: "direct main" description: @@ -202,18 +218,18 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "306f0596590e077338312f38837f595c04f28d6cdeeac392d3d74df2f0003687" + sha256: "38d1c268de9097ff59cf0e844ac38759fc78f76836d37edad06fa21e182055a0" url: "https://pub.dev" source: hosted - version: "2.0.32" + version: "2.0.34" flutter_svg: dependency: "direct main" description: name: flutter_svg - sha256: "87fbd7c534435b6c5d9d98b01e1fd527812b82e68ddd8bd35fc45ed0fa8f0a95" + sha256: "35882981abcbfb8c15b286f0cd690ff25bac12d95eff3e25ee207f37d4c42e7f" url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "2.3.0" flutter_test: dependency: "direct dev" description: flutter @@ -232,6 +248,22 @@ packages: description: flutter source: sdk version: "0.0.0" + glob: + dependency: transitive + description: + name: glob + sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de + url: "https://pub.dev" + source: hosted + version: "2.1.3" + hooks: + dependency: transitive + description: + name: hooks + sha256: "025f060e86d2d4c3c47b56e33caf7f93bf9283340f26d23424ebcfccf34f621e" + url: "https://pub.dev" + source: hosted + version: "1.0.3" http: dependency: transitive description: @@ -248,14 +280,30 @@ packages: url: "https://pub.dev" source: hosted version: "4.1.2" + jni: + dependency: transitive + description: + name: jni + sha256: c2230682d5bc2362c1c9e8d3c7f406d9cbba23ab3f2e203a025dd47e0fb2e68f + url: "https://pub.dev" + source: hosted + version: "1.0.0" + jni_flutter: + dependency: transitive + description: + name: jni_flutter + sha256: "8b59e590786050b1cd866677dddaf76b1ade5e7bc751abe04b86e84d379d3ba6" + url: "https://pub.dev" + source: hosted + version: "1.0.1" json_annotation: dependency: transitive description: name: json_annotation - sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" + sha256: "2a743920d81b7910627f68ee2c9ac1fc0bfee32b9fc3403587d7c6791ca12f80" url: "https://pub.dev" source: hosted - version: "4.9.0" + version: "4.12.0" leak_tracker: dependency: transitive description: @@ -284,18 +332,18 @@ packages: dependency: transitive description: name: lints - sha256: a5e2b223cb7c9c8efdc663ef484fdd95bb243bff242ef5b13e26883547fce9a0 + sha256: "12f842a479589fea194fe5c5a3095abc7be0c1f2ddfa9a0e76aed1dbd26a87df" url: "https://pub.dev" source: hosted - version: "6.0.0" + version: "6.1.0" logger: dependency: transitive description: name: logger - sha256: a7967e31b703831a893bbc3c3dd11db08126fe5f369b5c648a36f821979f5be3 + sha256: "25aee487596a6257655a1e091ec2ae66bc30e7af663592cc3a27e6591e05035c" url: "https://pub.dev" source: hosted - version: "2.6.2" + version: "2.7.0" logging: dependency: transitive description: @@ -323,12 +371,11 @@ packages: mcumgr_flutter: dependency: "direct main" description: - path: "." - ref: master - resolved-ref: "7bec874051397e0e0dcbce4a1a660e14be5a3eb3" - url: "https://github.com/DennisMoschina/Flutter-nRF-Connect-Device-Manager.git" - source: git - version: "0.8.1" + name: mcumgr_flutter + sha256: "8165dd611941cabfa0b3c1c3fb7f57fda26a86a2336c896ea263fd0f0c04c605" + url: "https://pub.dev" + source: hosted + version: "0.9.0" meta: dependency: "direct main" description: @@ -337,6 +384,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.17.0" + native_toolchain_c: + dependency: transitive + description: + name: native_toolchain_c + sha256: "6ba77bb18063eebe9de401f5e6437e95e1438af0a87a3a39084fbd37c90df572" + url: "https://pub.dev" + source: hosted + version: "0.17.6" nested: dependency: transitive description: @@ -349,10 +404,10 @@ packages: dependency: transitive description: name: objective_c - sha256: "1f81ed9e41909d44162d7ec8663b2c647c202317cc0b56d3d56f6a13146a0b64" + sha256: "100a1c87616ab6ed41ec263b083c0ef3261ee6cd1dc3b0f35f8ddfa4f996fe52" url: "https://pub.dev" source: hosted - version: "9.1.0" + version: "9.3.0" open_earable_flutter: dependency: "direct main" description: @@ -360,6 +415,14 @@ packages: relative: true source: path version: "2.3.6" + package_config: + dependency: transitive + description: + name: package_config + sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc + url: "https://pub.dev" + source: hosted + version: "2.2.0" path: dependency: transitive description: @@ -388,18 +451,18 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "95c68a74d3cab950fd0ed8073d9fab15c1c06eb1f3eec68676e87aabc9ecee5a" + sha256: "69cbd515a62b94d32a7944f086b2f82b4ac40a1d45bebfc00813a430ab2dabcd" url: "https://pub.dev" source: hosted - version: "2.2.21" + version: "2.3.1" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "6192e477f34018ef1ea790c56fffc7302e3bc3efede9e798b934c252c8c105ba" + sha256: "2a376b7d6392d80cd3705782d2caa734ca4727776db0b6ec36ef3f1855197699" url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.6.0" path_provider_linux: dependency: transitive description: @@ -476,10 +539,10 @@ packages: dependency: transitive description: name: petitparser - sha256: "1a97266a94f7350d30ae522c0af07890c70b8e62c71e8e3920d1db4d23c057d1" + sha256: "91bd59303e9f769f108f8df05e371341b15d59e995e6806aefab827b58336675" url: "https://pub.dev" source: hosted - version: "7.0.1" + version: "7.0.2" platform: dependency: transitive description: @@ -528,6 +591,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.0" + record_use: + dependency: transitive + description: + name: record_use + sha256: "2551bd8eecfe95d14ae75f6021ad0248be5c27f138c2ec12fcb52b500b3ba1ed" + url: "https://pub.dev" + source: hosted + version: "0.6.0" rxdart: dependency: transitive description: @@ -545,10 +616,10 @@ packages: dependency: transitive description: name: source_span - sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" + sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab" url: "https://pub.dev" source: hosted - version: "1.10.1" + version: "1.10.2" stack_trace: dependency: transitive description: @@ -617,18 +688,18 @@ packages: dependency: transitive description: name: uuid - sha256: a11b666489b1954e01d992f3d601b1804a33937b5a8fe677bd26b8a9f96f96e8 + sha256: "1fef9e8e11e2991bb773070d4656b7bd5d850967a2456cfc83cf47925ba79489" url: "https://pub.dev" source: hosted - version: "4.5.2" + version: "4.5.3" vector_graphics: dependency: transitive description: name: vector_graphics - sha256: a4f059dc26fc8295b5921376600a194c4ec7d55e72f2fe4c7d2831e103d461e6 + sha256: "4d35a36400983c3457c289d4d553b5308f506ea84f7e51c7a564651b5525209a" url: "https://pub.dev" source: hosted - version: "1.1.19" + version: "1.2.1" vector_graphics_codec: dependency: transitive description: @@ -641,10 +712,10 @@ packages: dependency: transitive description: name: vector_graphics_compiler - sha256: d354a7ec6931e6047785f4db12a1f61ec3d43b207fc0790f863818543f8ff0dc + sha256: "98e7e94de127b46a86ef46197fff84ff99f3d3b80a708390d717ad731efef598" url: "https://pub.dev" source: hosted - version: "1.1.19" + version: "1.2.2" vector_math: dependency: transitive description: @@ -657,10 +728,10 @@ packages: dependency: transitive description: name: vm_service - sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" + sha256: "0016aef94fc66495ac78af5859181e3f3bf2026bd8eecc72b9565601e19ab360" url: "https://pub.dev" source: hosted - version: "15.0.2" + version: "15.2.0" web: dependency: transitive description: @@ -693,6 +764,14 @@ packages: url: "https://pub.dev" source: hosted version: "6.6.1" + yaml: + dependency: transitive + description: + name: yaml + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce + url: "https://pub.dev" + source: hosted + version: "3.1.3" sdks: - dart: ">=3.9.0 <4.0.0" - flutter: ">=3.35.0" + dart: ">=3.10.3 <4.0.0" + flutter: ">=3.38.4" diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 5e4c81fa..e188ae40 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -48,10 +48,7 @@ dependencies: flutter_svg: ^2.0.17 provider: ^6.1.5 file_picker: ^10.3.7 - mcumgr_flutter: - git: - url: https://github.com/DennisMoschina/Flutter-nRF-Connect-Device-Manager.git - ref: master + mcumgr_flutter: ^0.9.0 flutter_bloc: ^9.1.1 dev_dependencies: diff --git a/example/windows/flutter/generated_plugins.cmake b/example/windows/flutter/generated_plugins.cmake index 3dcad9f2..7e0c5455 100644 --- a/example/windows/flutter/generated_plugins.cmake +++ b/example/windows/flutter/generated_plugins.cmake @@ -8,6 +8,7 @@ list(APPEND FLUTTER_PLUGIN_LIST ) list(APPEND FLUTTER_FFI_PLUGIN_LIST + jni ) set(PLUGIN_BUNDLED_LIBRARIES) diff --git a/pubspec.yaml b/pubspec.yaml index 7fb1c2fc..443223ff 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -30,10 +30,7 @@ dependencies: flutter_bloc: ^9.1.1 http: ^1.1.2 json_annotation: ^4.8.1 - mcumgr_flutter: - git: - url: https://github.com/DennisMoschina/Flutter-nRF-Connect-Device-Manager.git - ref: master + mcumgr_flutter: ^0.9.0 path_provider: ^2.1.1 provider: ^6.1.1 rxdart: ^0.28.0