Flutter:手把手教你进行BLE应用的开发-flutter_blue

一、写在前面的话

本文主要介绍在Flutter环境下开发BLE应用。主要包含以下内容:判断蓝牙是否开启、判断是否有位置权限、扫描设备、

连接设备、监听设备上报的数据(Notify)、向设备发送数据、监听设备的断开等。内容虽然简单,但是很详细。

 

二、开始

1、使用到的库

  flutter_blue: ^0.7.1+1
  permission_handler: "^3.2.0" # 权限

  众所周知,Flutter要使用原生的能力,就需要有原生库的支持,这里我们使用了flutter_blue来开发跟BLE相关的功能,permission_handler来开发权限检测以及申请权限的功能。在使用flutter_blue开启扫描的时候,插件会弹出系统的权限申请窗口,但是点击授权以后报了一个空指针,可能是插件存在的一个BUG,所以这里我们用permission_handler插件来处理权限相关的问题。(友情提示:在Android上扫描Ble需要位置权限)

2、flutter_blue的用法

import 'package:flutter_blue/flutter_blue.dart';
FlutterBlue flutterBlue = FlutterBlue.instance;

导包和初始化。

3、判断蓝牙是否开启

@override
  void initState() {
    super.initState();
    flutterBlue.state.listen((state){
      if(state == BluetoothState.on){
        print('蓝牙状态为开启');
        isBleOn = true;
      }else if(state == BluetoothState.off){
        print('蓝牙状态为关闭');
        isBleOn = false;
      }
    });
  }

在路由初始化的时候开启对蓝牙状态的监听。

 if(!isBleOn){
      ToastUtils.toast(context, "手机蓝牙未打开,请打开后再扫描设备");
      return;
    }

在开始之前对蓝牙开启状态进行判断。

4、判断位置权限

PermissionUtils.checkPermissions(PermissionGroup.location).then((v) {
      if (v) {
        Navigator.pushNamed(context, "/device_page");
      } else {
        PermissionUtils.showDialog(context, "提示", "扫描蓝牙需要位置权限", () async {
          Navigator.pop(context);
          await PermissionHandler()
              .requestPermissions([PermissionGroup.location]);
         
  • 19
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 63
    评论
评论 63
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值