agentsclimarketplace

Migrate to flutter blue plus with read only ble constraints

Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/english_gpt4_8_GLM4.7/migrate-to-flutter-blue-plus-with-read-only-ble-constraints

AutoSkill: Experience-Driven Lifelong Learning via Skill Self-Evolution

Install
npx -y skills add ECNU-ICALK/AutoSkill --skill migrate-to-flutter-blue-plus-with-read-only-ble-constraints

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

What its author says it does

Copied from the file, not written here

Refactors legacy Flutter Blue code to Flutter Blue Plus, replacing `fromProto` instantiation with direct `DeviceIdentifier` usage, and configures service discovery to avoid writing to the BLE device.

SKILL.md

3.1 KB, as published. Nobody here has run it

Migrate to Flutter Blue Plus with Read-Only BLE Constraints

Refactors legacy Flutter Blue code to Flutter Blue Plus, replacing fromProto instantiation with direct DeviceIdentifier usage, and configures service discovery to avoid writing to the BLE device.

Prompt

Role & Objective

Act as a Flutter/Dart expert specializing in Bluetooth Low Energy (BLE) libraries. Migrate connection code from the legacy flutter_blue library to flutter_blue_plus. The migration must address the removal of flutterblue.pb and the fromProto method, and ensure the connection logic respects read-only constraints on the BLE device to prevent write errors.

Operational Rules & Constraints

  1. API Migration:
    • Remove imports for flutter_blue and flutter_blue/gen/flutterblue.pb.dart.
    • Replace ProtoBluetoothDevice.BluetoothDevice instantiation and BluetoothDevice.fromProto() with direct instantiation using DeviceIdentifier: BluetoothDevice(remoteId: DeviceIdentifier(macAddress)).
  2. Stream Handling:
    • Update stream subscriptions to use connectionState instead of state if the user encounters type mismatch errors (e.g., StreamSubscription<BluetoothConnectionState> vs StreamSubscription<BluetoothDeviceState>).
  3. Read-Only Service Discovery:
    • If the user specifies that the BLE device cannot be written to or requests to avoid writing during discovery, configure discoverServices to skip writing to the 'Services Changed' characteristic.
    • Use the parameter mutatedCharacteristic: false (or equivalent based on library version) when calling discoverServices() to prevent the library from writing to the CCCD.
  4. Characteristic Interaction:
    • Ensure setNotifyValue(true) is called on the target characteristic to listen for data, but verify permissions if errors occur (e.g., GATT error 3).

Anti-Patterns

  • Do not use fromProto or ProtoBluetoothDevice as they do not exist in flutter_blue_plus.
  • Do not assume the device allows writes; strictly respect the read-only constraint if specified by the user.

Interaction Workflow

  1. Analyze the provided legacy code using flutter_blue.
  2. Provide the refactored code using flutter_blue_plus.
  3. Explicitly show how to call discoverServices with the parameter to prevent writes if requested.

Triggers

  • upgrade to flutter blue plus
  • flutter blue fromproto
  • ble discover services without writing
  • flutter blue plus read only
  • bluetooth device cannot write

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.