Flutter MQTT通信插件zyg_mqtt_plugin的使用
Flutter MQTT通信插件zyg_mqtt_plugin的使用
zyg_mqtt_plugin
这是中裕冠的MQTT插件。
使用步骤
安装
在项目的pubspec.yaml
文件中添加以下依赖:
dependencies:
zyg_mqtt_plugin: ^0.0.2
引入
在需要使用该插件的地方引入:
import 'package:zyg_mqtt_plugin/zyg_mqtt_plugin.dart';
1. 挂载 ZygMqttWidget()
示例代码如下:
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: Stack(
children: [
ZygMqttWidget(),
],
),
),
),
);
}
2. 配置(必须先配置,再去连接)
// 先配置,再去连接
const productKey = 'a1WPnByrqko'; // 产品密钥
const deviceName = '1224708605@qq.com'; // 设备名称
const deviceSecret = '3a694c1543fa8582ffc6d8ff1d7af6ca'; // 设备密钥
// 当前产品和设备所属地域的ID
// const region = 'us-west-1';
const region = 'cn-shanghai';
// 接收消息时使用的订阅URL
String subscribeUrl = '/${productKey}/${deviceName}/user/get';
// 发送消息时使用的发布URL
String publishUrl = '/${productKey}/${deviceName}/user/update';
// 配置MQTT插件
ZygMqttPlugin().setConfigure(productKey, deviceName, deviceSecret, region, subscribeUrl, publishUrl);
3. 设置连接状态回调
// 连接状态回调
ZygMqttPlugin().myConnectStateCallback = (state) {
if (ZygConnectState.connected == state) {
print('已连接');
setState(() {
connectState = '已连接';
});
} else if (ZygConnectState.disconnect == state) {
print('已断开');
connectState = '已断开';
}
};
4. 设置接收消息回调
// 接收消息回调,rawData是接收到的原始数据,jsonData是JSON格式的数据
ZygMqttPlugin().myReceiveCallback = (rawData, jsonData) {
setState(() {
receiveDataList.add(rawData.toString());
});
};
5. 去连接MQTT
// 连接到MQTT服务器
ZygMqttPlugin().goToConnetMqtt();
6. 去发送MQTT消息
// 获取电量的指令
Map map = {
"target_device": "89860124801080169975", // 目标设备ID
"cmd": "detect_battery" // 命令
};
String msg = jsonEncode(map);
// 发送数据
ZygMqttPlugin().sendData(msg);
完整示例代码
以下是完整的示例代码:
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:zyg_mqtt_plugin/zyg_mqtt_plugin.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _platformVersion = 'Unknown';
final _zygMqttPlugin = ZygMqttPlugin();
List<String> receiveDataList = [];
String connectState = '未连接';
[@override](/user/override)
void initState() {
super.initState();
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: Stack(
children: [
ZygMqttWidget(),
ListView(
children: [
Text(
'连接状态:$connectState',
style: TextStyle(color: Colors.red),
),
SizedBox(height: 20),
FilledButton(
onPressed: () {
// 配置MQTT参数
const productKey = 'a1WPnByrqko';
const deviceName = '1224708605@qq.com';
const deviceSecret = '3a694c1543fa8582ffc6d8ff1d7af6ca';
const region = 'cn-shanghai';
String subscribeUrl = '/${productKey}/${deviceName}/user/get';
String publishUrl = '/${productKey}/${deviceName}/user/update';
// 设置MQTT配置
ZygMqttPlugin().setConfigure(productKey, deviceName, deviceSecret, region, subscribeUrl, publishUrl);
// 设置连接状态回调
ZygMqttPlugin().myConnectStateCallback = (state) {
if (ZygConnectState.connected == state) {
print('已连接');
setState(() {
connectState = '已连接';
});
} else if (ZygConnectState.disconnect == state) {
print('已断开');
setState(() {
connectState = '已断开';
});
}
};
// 设置接收消息回调
ZygMqttPlugin().myReceiveCallback = (rawData, jsonData) {
setState(() {
receiveDataList.add(rawData.toString());
});
};
// 连接到MQTT服务器
ZygMqttPlugin().goToConnetMqtt();
},
child: Text('连接MQTT'),
),
SizedBox(height: 20),
FilledButton(
onPressed: () {
// 发送电量检测命令
Map map = {
"target_device": "89860124801080169975",
"cmd": "detect_battery"
};
String msg = jsonEncode(map);
ZygMqttPlugin().sendData(msg);
},
child: Text('发送数据'),
),
...receiveDataList.map((data) => Text(data)).toList(),
],
),
],
),
),
),
);
}
}
更多关于Flutter MQTT通信插件zyg_mqtt_plugin的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter MQTT通信插件zyg_mqtt_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
zyg_mqtt_plugin
是一个用于在 Flutter 应用中实现 MQTT 通信的插件。MQTT 是一种轻量级的发布/订阅消息传输协议,常用于物联网(IoT)设备之间的通信。使用 zyg_mqtt_plugin
,你可以轻松地在 Flutter 应用中集成 MQTT 功能。
以下是使用 zyg_mqtt_plugin
的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 zyg_mqtt_plugin
的依赖:
dependencies:
flutter:
sdk: flutter
zyg_mqtt_plugin: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 zyg_mqtt_plugin
:
import 'package:zyg_mqtt_plugin/zyg_mqtt_plugin.dart';
3. 初始化 MQTT 客户端
创建一个 MQTT 客户端实例并连接到 MQTT 服务器:
final mqttClient = ZygMqttPlugin();
Future<void> connectToMqtt() async {
final broker = 'mqtt.example.com'; // MQTT 服务器地址
final port = 1883; // MQTT 端口
final clientId = 'flutter_client'; // 客户端 ID
await mqttClient.connect(broker, port, clientId);
}
4. 订阅主题
订阅一个或多个 MQTT 主题以接收消息:
Future<void> subscribeToTopic(String topic) async {
await mqttClient.subscribe(topic);
}
5. 发布消息
向指定的 MQTT 主题发布消息:
Future<void> publishMessage(String topic, String message) async {
await mqttClient.publish(topic, message);
}
6. 接收消息
设置一个回调函数来处理接收到的消息:
void onMessageReceived(String topic, String message) {
print('Received message from $topic: $message');
}
mqttClient.onMessageReceived = onMessageReceived;
7. 断开连接
在应用程序退出或不再需要 MQTT 连接时,断开连接:
Future<void> disconnectFromMqtt() async {
await mqttClient.disconnect();
}
8. 处理错误
你可以设置一个错误处理回调来处理连接或通信中的错误:
void onError(dynamic error) {
print('MQTT Error: $error');
}
mqttClient.onError = onError;
示例代码
以下是一个完整的示例,展示了如何使用 zyg_mqtt_plugin
进行 MQTT 通信:
import 'package:flutter/material.dart';
import 'package:zyg_mqtt_plugin/zyg_mqtt_plugin.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: MqttExample(),
);
}
}
class MqttExample extends StatefulWidget {
[@override](/user/override)
_MqttExampleState createState() => _MqttExampleState();
}
class _MqttExampleState extends State<MqttExample> {
final mqttClient = ZygMqttPlugin();
[@override](/user/override)
void initState() {
super.initState();
connectToMqtt();
mqttClient.onMessageReceived = onMessageReceived;
mqttClient.onError = onError;
}
Future<void> connectToMqtt() async {
final broker = 'mqtt.example.com';
final port = 1883;
final clientId = 'flutter_client';
await mqttClient.connect(broker, port, clientId);
await subscribeToTopic('test/topic');
}
Future<void> subscribeToTopic(String topic) async {
await mqttClient.subscribe(topic);
}
Future<void> publishMessage(String topic, String message) async {
await mqttClient.publish(topic, message);
}
void onMessageReceived(String topic, String message) {
print('Received message from $topic: $message');
}
void onError(dynamic error) {
print('MQTT Error: $error');
}
[@override](/user/override)
void dispose() {
mqttClient.disconnect();
super.dispose();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('MQTT Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () => publishMessage('test/topic', 'Hello MQTT'),
child: Text('Publish Message'),
),
),
);
}
}