Git Product home page Git Product logo

flutterblelib's Introduction

FlutterBle Library

FlutterBle Library is a Flutter library that supports BLE connections. It internally utilizes RxAndroidBle and RxBluetoothKit as native libs, which especially on Android helps a lot with many of known platform issues.

Getting Started

To start using Flutter, you have to prepare the environment. Here you can find the tutorial showing how to do this step by step.

Library Features

  • Setting log level
  • Listening bluetooth adapter state
  • Scanning devices
  • Establish connection
  • Listening to connection state changes
  • Discovering services
  • Reading characteristics
  • Writing characteristics
  • Listening to characteristic change notifications

Configuration & Installation

Add the snippet below to your pubspec.yaml file:

dependencies:
  flutter_ble_lib: "^1.0.0"

Package can be installed from the command line:

  • with pub: $ pub get
  • with Flutter: $ flutter packages get

Alternatively, your editor may support pub get or packages get. Refer to the documentation of your IDE to learn more.

iOS additional configuration

In order to make it work on iOS you need to make 2 additional steps:

  • add use_frameworks! at the beginning of ios/Podfile file
  • add config.build_settings['SWIFT_VERSION'] = '4.1.0' in post_install block of ios/Podfile file

Finally your ios/Podfile file should have following changes:

+ use_frameworks!

...

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
+      config.build_settings['SWIFT_VERSION'] = '4.1.0'
    end
  end
end

Usage

Once the package is installed you can use:

import 'package:flutter_ble_lib/flutter_ble_lib.dart';

Create Client

First, you need to create a client. It is very important to maintain only one instance of the client in your application. You can do this via the method

FlutterBleLib.instance.createClient(restoreId);

Set up log level

After creating the client, you can set up a log level. There are a few defined log levels:

  • NONE (default value)
  • VERBOSE
  • DEBUG
  • INFO
  • WARNING
  • ERROR

You can set the log level via

FlutterBleLib.instance.setLogLevel(logLevel);

and. You can also check the current level log via:

FlutterBleLib.instance.logLevel();

Bluetooth state checking

The library allows checking a Bluetooth state. You can register a listener that informs about state changes. It is possible via:

FlutterBleLib.instance.onStateChange()

This method returns a stream that emits all Bluetooth state changes. If you want to get current Bluetooth state you can just call the method below

FlutterBleLib.instance.state()

Methods presented above may return/emit the following values:

  • UNKNOWN (default state)
  • RESETTING
  • UNSUPPORTED
  • UNAUTHORIZED
  • POWERED_OFF
  • POWERED_ON

The connection with the device

After creating the client, you can establish a connection with the device. There is a feature to scan for devices via:

FlutterBleLib.instance.startDeviceScan(scanMode, calbackType, uuidsArray)

method. This method returns a stream that emits scanned devices. The information about a device contains a device id that may be used to create the connection. All you need to do is to call:

FlutterBleLib.instance.connectToDevice(deviceId, isAutoConnect)

method. As a response you will get an information about the connected device. You can verify if the device is connected via

FlutterBleLib.instance.isDeviceConnected(deviceId)

at any time. It is recommended to set up a monitor that allows getting an information about the connection being broken. The library provides this functionality via the following method

FlutterBleLib.instance.onDeviceConnectionChanged()

If any of the device connection breaks the stream emits information about it.

Once you are connected to your device, you can discover services, write, read or listen to notifications from characteristics.

Full library functionality is shown in example app.

Maintainers

Konrad Krakowiak ([email protected])
Michał Mizera ([email protected])
Michał Zieliński ([email protected])
Paweł Janeczek ([email protected])

License

Copyright 2018 Polidea Sp. z o.o

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Maintained by

Polidea

flutterblelib's People

Contributors

kkonradmc avatar pablopl avatar pouljohn1 avatar ukl avatar axadiw avatar

Watchers

James Cloos avatar Erdem Orman avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.