Aus öffentlichen Paketdaten erstellte Orientierung.
Ein Flutter-Paket, das den Zugriff auf die Web-Bluetooth-API in Web-Anwendungen ermöglicht und die Interaktion mit Bluetooth Low Energy (BLE)-Geräten direkt über den Browser erlaubt. Es integriert sich nahtlos in bestehende Flutter-Projekte, einschließlich solcher für Web und andere Plattformen. Für Entwickler konzipiert, die webbasierte IoT-Lösungen oder Gerätekommunikations-Apps erstellen, unterstützt es die Erkennung, Verbindung und Datenübertragung mit BLE-Peripheriegeräten. Das Paket wird mit Blick auf Kompatibilität in verschiedenen Umgebungen gepflegt.
Anwendungsfälle
Herstellen einer Verbindung zu BLE-Geräten über eine Webanwendung
Erstellen von IoT-Dashboards mit Echtzeit-Sensordaten
Bluetooth-Funktionalität in Hybrid-Apps integrieren
Erstellen von plattformübergreifenden Bluetooth-Erlebnissen
Hauptmerkmale
Zugriff auf die Web Bluetooth-API im Web
Unterstützt Geräteerkennung und Paarung
Echtzeit-Datenstrom von BLE-Geräten
Plattformübergreifende Kompatibilität mit Flutter
Einfache Integration in bestehende Flutter-Projekte
Geeignet für
Webentwickler, die mit BLE-Geräten arbeiten
Ersteller von IoT-Anwendungen
Hybrid-App-Entwickler, die Bluetooth-Unterstützung benötigen
Prototyping Bluetooth-fähiger Web-Funktionen
Projekte, die minimale native Code erfordern
Hinweise
Benutzerberechtigung für den Bluetooth-Zugriff erforderlich
Beschränkt auf Browser, die die Web Bluetooth-API unterstützen
Keine Unterstützung für nicht-Web-Plattformen
Abhängig von browser-spezifischen Implementierungsdetails
Kann zusätzliche Einrichtung für sichere Kontexte (HTTPS) erfordern
Original-README
Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.
Introduction
Flutter web bluetooth is a FlutterDart plugin to add support for the
web bluetooth api.
The library doesn't require Flutter at all giving you the option to use it with projects like
AngularDart.
It is also written in such a way that it will play nicely with Dart native projects.
So if you have a cross-platform app and want to add web support you don't have to use conditional exports to exclude
the library in native releases.
The web bluetooth is still a draft, because of this it is not (yet) supported in every browser.
Check canIUse.com for information about browser support.
Some parts of the api aren't available in every version of the browser.
Requirements
The device and browser you're testing on needs to support the web api. For Chrome on Linux this is hidden behind a flag.
I've created a patch file which you can use to launch Google Chrome, from flutter run with the required flag enabled.
Check the chrome-experimental-launch folder's README for more information.
You will also need a secure context or else the api will not be available. So either https, or localhost.
Usage
First check if the current browser supports the web bluetooth api.
// The bluetooth api exists in this user agent.final supported = FlutterWebBluetooth.instance.isBluetoothApiSupported;
After this we will need to check if bluetooth is available
// A stream that says if a bluetooth adapter is available to the browser.final available = FlutterWebBluetooth.instance.isAvailable;
Now request a device from the browser.
You must beforehand specify which services you want to connect to! If you do not request
access to a specific service then you won't be able to discover the service!
Some services are also part of a so called blocklist. This is different per browsers and these services are just off
limit. The Web Bluetooth Community Group has a list
of all block services and characteristics.
// Define the services you want to communicate with here!final requestOptions = RequestOptionsBuilder.acceptAllDevices(optionalServices: [
BluetoothDefaultServiceUUIDS.deviceInformation.uuid
]);
try {
final device = awaitFlutterWebBluetooth.instance.requestDevice(requestOptions);
} onUserCancelledDialogError {
// The user cancelled the dialog
} onDeviceNotFoundError {
// There is no device in range for the options defined above
}
Now that you have a device, you can go through the services and then find the characteristics you want to read.
await device.connect();
final services = await device.discoverServices();
final service = services.firstWhere((service) => service.uuid == BluetoothDefaultServiceUUIDS.deviceInformation.uuid);
// Now get the characteristicfinal characteristic = await service.getCharacteristic(BluetoothDefaultCharacteristicUUIDS.manufacturerNameString.uuid);
final value = characteristic.readValue();
// Now we have a [ByteData] object with the manufacturer name in it.
device.disconnect();
Once you have paired to a device you can communicate with it again without the user needing to pair to it again. Get a
reference back to all the connected devices by listening to the devices stream.
Note: This feature will only work if the "Experimental Web Platform features" flag is enabled.
// A stream with a [Set] of all the devices that the user has paired, and given permission for.FlutterWebBluetooth.instance.devices;
You can also overwrite the logger that his library uses. This allows you to decide where log messages go. See
logging on pub.dev for more info on how to intercept these
messages.