Orientação gerada a partir de informações públicas. Apenas para referência.
Um pacote Flutter que permite o acesso à API Web Bluetooth em aplicações web, permitindo a interação com dispositivos Bluetooth Low Energy (BLE) diretamente pelo navegador. Integra-se perfeitamente a projetos existentes do Flutter, incluindo aqueles voltados para a web e outras plataformas. Projetado para desenvolvedores que criam soluções baseadas na web para IoT ou aplicativos de comunicação com dispositivos, oferece suporte à descoberta, conexão e troca de dados com periféricos BLE. O pacote é mantido com foco na compatibilidade em diferentes ambientes.
Casos de uso
Conectando-se a dispositivos BLE a partir de um aplicativo da web
Criando painéis de IoT com dados de sensores em tempo real
Habilitar interfaces de controle de dispositivos baseadas na web
Integrando funcionalidade Bluetooth em aplicativos híbridos
Criando experiências de Bluetooth multiplataforma
Principais recursos
Acesso à API Web Bluetooth na web
Suporta descoberta de dispositivos e emparelhamento
Streaming de dados em tempo real de dispositivos BLE
Compatibilidade entre plataformas com Flutter
Integração simples com projetos Flutter existentes
Indicado para
Desenvolvedores web trabalhando com dispositivos BLE
Criadores de aplicativos IoT
Desenvolvedores de aplicativos híbridos que precisam de suporte ao Bluetooth
Prototipagem de recursos da web com Bluetooth
Projetos que exigem código nativo mínimo
Considerações
Requer permissão do usuário para acesso ao Bluetooth
Limitado a navegadores com suporte à API Web Bluetooth
Sem suporte para plataformas não-web
Depende de detalhes específicos do navegador
Pode exigir configuração adicional para contextos seguros (HTTPS)
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
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.