flutter怎么添加ios网络权限_使用Flutter控制蓝牙通讯

背景知识视频教程

Dart和Flutter:完整的开发人员指南 - 国外课栈​viadean.com
flutter怎么添加ios网络权限_使用Flutter控制蓝牙通讯_第1张图片
Flutter使用Firestore构建复杂的Android和ios应用 - 国外课栈​viadean.com
flutter怎么添加ios网络权限_使用Flutter控制蓝牙通讯_第2张图片
Flutter的实际项目 - 国外课栈​viadean.com
flutter怎么添加ios网络权限_使用Flutter控制蓝牙通讯_第3张图片

您想使用蓝牙玩物联网设备,但不能在其中放置任何软件吗? 在这里,我们将了解如何使用电话应用程序通过蓝牙与IoT设备进行通信。 是使用Android还是iOS? 都可以! 我们将使用Flutter作为移动应用程序的开发框架。 我们将编写一个nRF连接灯,以便在设备上进行扫描,连接,读取和写入操作。

添加依赖项

...

更改用于Android的minSdkVersion

Android {
defaultConfig {
minSdkVersion: 19

添加蓝牙权限

我们需要添加使用蓝牙和访问位置的权限:

Android

在AndroidManifest.xml中添加:

...

iOS

在Info.plist中添加:

...

开始

现在是我们的main.dart:

import 'package:flutter/material.dart';
...

我们将可以通过使用_MyHomePageState小部件内的widget.flutterBlue属性来访问它。

扫描蓝牙设备

现在开始扫描蓝牙设备,并将其显示在ListView中。

首先,我们在MyHomePage类中添加一个包含设备的列表:

...

并在_MyHomePage类中编写一个方法,该方法将有助于在列表中填充该方法:

...

现在,通过在_MyHomePage的initState方法内开始扫描来填充它:

注意:开始扫描时,您只会列出尚未连接的设备。因此,我们还将通过访问FlutterBlue实例的connectedDevices属性将已连接的设备添加到列表中。

...

现在,我们的列表将填充FlutterBlue通过扫描找到的设备。

现在,以deviceList作为内容构建ListView:

...

将此listView分配为我们主要支架的主体:

...

现在我们应该有附近的支持蓝牙的设备列表。接下来,我们将连接到其中一个,并显示其具有的服务和特征。

连接到设备并显示具有特征的服务

出于可读性考虑,我们将不会创建新视图来连接到设备,而是会修改MyHomePage的当前内容,以使其取决于我们是否已连接。 为此,我们首先要添加一个函数,该函数将返回正确的视图以显示。

因此,让我们在_MyHomePageState中添加一个表示要连接的设备的状态及其公开的服务列表:

...

函数:

...

_buildConnectDeviceView方法目前尚不做很多事情:

...

现在,我们的构建方法将返回此_buildView:

...

最后,我们可以在FlatButton的onPressed方法中添加一些逻辑,在该方法中我们将停止FlutterBlue的扫描,连接到该设备并将该设备设置为先前创建的状态_connectedDevice并获取该设备的服务并显示列表。

...

更改_buildConnectDeviceView如下:

...

显示特性

现在,我们有可供使用的服务列表。我们将显示每个服务的特征,并根据我们是否可以读取,写入或通知此功能来添加按钮。

我们新的_buildConnectDeviceView看起来像这样:

...

然后添加一个计算按钮的函数:

...

现在的结果:

读取,写入和接收来自特征的通知

最后一步是在读取,写入和通知按钮上添加逻辑。

我们将首先添加一个Map以按特征存储我们的值,以便能够显示它们。

在MyHomePage类中,添加以下内容:

...

然后在_buildConnectDeviceView方法中添加一个新行以显示我们的值:

...

读取

首先让我们在读取按钮的onPressed方法中添加逻辑:

...

在这里,我们首先听取特征变化并将其新值存储在我们先前创建的Map中。然后它将更新我们的视图并显示更新的值。

写入

为了将数据发送到设备,我们将在对话框内创建一个TextField字段,将控制器链接到该字段并发送其内容。

因此,让我们向_MyHomePageState添加一个控制器:

...

并使用写入按钮的onPressed方法内部的逻辑创建我们的对话框:

...

因此,我们只需将传递给我们的输入值调用特征的write函数,然后使用dart:convert将其转换为字节数组

通知

通知只是在每次处理通知的特征值更新时执行的回调:

...

现在,每次此特征的值发生变化时,我们都会得到通知,这也将更新我们UI中的值。

现在,我们有了一个完整的应用程序,可以扫描蓝牙设备,连接到它们,显示它们的服务,读取它们的值,更新它们并收到有关更改的通知。

完整源码

使用Flutter控制蓝牙通讯 - 国外课栈​viadean.com
flutter怎么添加ios网络权限_使用Flutter控制蓝牙通讯_第4张图片

你可能感兴趣的:(flutter怎么添加ios网络权限_使用Flutter控制蓝牙通讯)