flutter_webhid

Dart bindings for the WebHID API using dart:js_interop.

Web only - requires Chrome/Edge 89+

Installation

dependencies:
  flutter_webhid: ^0.1.0

Usage

import 'package:flutter_webhid/flutter_webhid.dart';

// Check support
if (!WebHID.isSupported) return;

final webHid = WebHID.instance;

// Request device
final devices = await webHid.requestDevice(
  HidDeviceRequestOptions(
    filters: [HidDeviceFilter(vendorId: 0x1234)],
  ),
);

final device = devices.first;
await device.open();

// Read input reports
device.onInputReport.listen((event) {
  print('Report ${event.reportId}: ${event.data}');
});

// Send output report
await device.sendReport(0, Uint8List.fromList([0x01, 0x02]));

await device.close();

API

WebHID

  • requestDevice(options) - Request user permission
  • getDevices() - Get authorized devices
  • onConnect / onDisconnect - Connection events

HidDevice

  • open() / close() / forget()
  • sendReport(reportId, data)
  • sendFeatureReport(reportId, data)
  • receiveFeatureReport(reportId)
  • onInputReport - Input report stream

Types

  • HidDeviceFilter - Filter by vendorId, productId, usagePage, usage
  • HidDeviceRequestOptions - Request options with filters

See example for more details.

License

MIT

Libraries

flutter_webhid
WebHID API bindings for Dart.