healthrian_mqtt_support 2.1.5
healthrian_mqtt_support: ^2.1.5 copied to clipboard
A Very Good Project created by Very Good CLI.
example/lib/main.dart
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:healthrian_mqtt_support/healthrian_mqtt_support.dart';
import 'package:mqtt_client/mqtt_client.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
/// bootstrap
await mqtt.waitForCompletion();
mqtt.ip = '112.222.235.52';
mqtt.id = 'test';
mqtt.pw = 'test';
mqtt.connect();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: Column(
children: [
Expanded(child: MyHomePage(topic: 'topic')),
Expanded(child: MyHomePage(topic: 'topic/#')),
// Expanded(child: MyHomePage(topic: 'HEH001/5019')),
// Expanded(child: MyHomePage(topic: 'HEH001/5020')),
],
),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.topic});
final String topic;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
children: [
StreamBuilder(
stream: widget.topic.flattens,
builder: (context, snapshot) {
if (!snapshot.hasData) {
return Text('Wait for the subscription from ${widget.topic}');
}
final c = snapshot.data;
final recMess = c!.payload as MqttPublishMessage;
return Text((recMess, DateTime.now()).toString());
},
),
],
),
),
floatingActionButton: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
FloatingActionButton(onPressed: mqtt.reconnect),
FloatingActionButton(onPressed: () => widget.topic.publishMessage([1, 2, 3, 4])),
FloatingActionButton(onPressed: widget.topic.subscribe),
FloatingActionButton(onPressed: widget.topic.unsubscribe),
FloatingActionButton(onPressed: () => setState(() {})),
],
),
);
}
}