news 2026/7/17 15:20:58

Charge-ScanItem

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Charge-ScanItem

作用

ScanItem是蓝牙扫描结果的封装模型。它的职责是:把 FlutterBluePlus 的ScanResult(系统级扫描结果)转换成你业务中使用的ScanItem(业务级设备模型)。

类比理解

FlutterBluePlus.ScanResult → 原始数据(像"生肉") ScanItem → 加工后的数据(像"熟食")

定义属性

var _deviceMac = "";//设备MAC地址 var _bleName = ""; //设备蓝牙名称 var _rssi = -1; //信号强度 late BluetoothDevice device; //原始蓝牙设备对象 bool _isValidity = false; //设备是否有效,是否通过验证

getter/setter

// ✅ 标准的 getter:对外暴露只读属性 int get rssi => _rssi; String get deviceMac => _deviceMac; String get bleName => _bleName; String get address => device.remoteId.str; // ⭐ 直接从 device 获取 bool get isValidity => _isValidity; // ⭐ 特殊的 setter:允许外部修改 RSSI set rssi(int value) { _rssi = value; }

构造函数1:手动创建,

ScanItem.from({ required String name, required String deviceMac }) { _bleName = name; _deviceMac = deviceMac; } //作用:用于手动构造ScanItem(比如从缓存中恢复) 为什么从缓存中恢复只需要MAC地址和名字?

构造函数2:从扫描结构解析

ScanItem(ScanResult result) { _rssi = result.rssi; device = result.device; _bleName = result.device.platformName; // 遍历制造商数据 result.advertisementData.manufacturerData.forEach((key, value) { if(key == 1602) { // 这里可以解析厂商自定义数据 } }); }

代码示例

import 'package:flutter_blue_plus/flutter_blue_plus.dart'; ///蓝牙设备类 class ScanItem{ ///设备MAC地址 var _deviceMac = ""; ///设备名字 var _bleName = ""; //信号强度 var _rssi = -1; late BluetoothDevice device; bool _isValidity = false; //get方法 int get rssi => _rssi; String get deviceMac => _deviceMac; String get bleName => _bleName; String get address => device.remoteId.str; bool get isValidity => _isValidity; //set方法 set rssi(int value) { _rssi = value; } //构造函数1 ScanItem.from({ required String name, required String deviceMac }) { _bleName = name; _deviceMac = deviceMac; } //构造函数2-从扫描结果解析 ScanItem(ScanResult result) { //注意这里的是 ScanResult _rssi = result.rssi; device = result.device; _bleName = result.device.platformName; //遍历厂商数据 //这个厂商数据需要后期重新协定 //苹果手机扫描不出来mac地址,所以需要根据协定 //mac地址,安全验证,是否连接,设备电量,是否在充电等等都需要协议协定 result.advertisementData.manufacturerData.forEach((key, value) { if(key == 1602 ) { } }); } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/17 15:20:39

GitHub_Trending/i/i技术博客:域名系统开发经验分享

GitHub_Trending/i/i技术博客:域名系统开发经验分享 你是否还在为域名解析速度慢、跨区域访问不稳定而困扰?本文将从实际项目出发,分享GitHub_Trending/i/i项目在域名系统开发中的核心经验,读完你将掌握:高性能DNS架构…

作者头像 李华
网站建设 2026/7/17 15:20:12

Intel-glibc在容器环境中的应用:Docker与Kubernetes部署指南

Intel-glibc在容器环境中的应用:Docker与Kubernetes部署指南 【免费下载链接】Intel-glibc glibc with Intel specific enhancements 项目地址: https://gitcode.com/openeuler/Intel-glibc 前往项目官网免费下载:https://ar.openeuler.org/ar/ …

作者头像 李华
网站建设 2026/7/17 15:19:51

cann/asc-devkit HCCL AlltoAll接口

AlltoAll 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/c…

作者头像 李华
网站建设 2026/7/17 15:19:26

自己写的小说也被判AI?把误判的AI率降到检测合格

自己写的小说也被判AI?把误判的AI率降到检测合格 你大概是被气到了才点进来的。一部小说从人物到情节全是你自己脑子里长出来的,一个字都没让AI代笔,投到平台却弹出一句"疑似AI生成,AI率偏高"。你甚至想截图去跟编辑理…

作者头像 李华