healthrian_ble_support_for_cardio_em_cdc 0.0.34
healthrian_ble_support_for_cardio_em_cdc: ^0.0.34 copied to clipboard
A Very Good Project created by Very Good CLI.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:healthrian_ble_support_for_cardio_em_cdc/healthrian_ble_support_for_cardio_em_cdc.dart';
import 'package:rxdart/rxdart.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await filter.waitForCompletion();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(home: const MyHomePage());
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final _manager = BLEManager();
late final _streams = _manager.ble.streams;
// @override
// void dispose() {
// super.dispose();
// _manager.ble.onDisconnect?.call();
// }
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Observer(
builder: (context) => StreamBuilder(
stream: _streams.ble.connection,
builder: (context, snapshot) => Text(snapshot.data.toString()),
),
),
Observer(
builder: (context) => StreamBuilder(
stream: _streams.ble.battery,
builder: (context, snapshot) => Text(snapshot.data.toString()),
),
),
Observer(
builder: (context) => StreamBuilder(
stream: _streams.ecg.meta.raw,
builder: (context, snapshot) {
return Text(snapshot.data.toString());
},
),
),
// Observer(
// builder: (context) => StreamBuilder(
// stream: _streams.ecg.meta.raw?.scan(
// (acc, v, i) {
// if(i % 1000 == 0) return (DateTime.now(), DateTime.now().difference(acc.$1));
// return acc;
// },
// (DateTime.now(), Duration.zero),
// ),
// builder: (context, snapshot) {
// return Text(snapshot.data.toString());
// },
// ),
// ),
Observer(
builder: (context) => StreamBuilder(
stream: _streams.ecg.meta.raw?.scan(
(acc, v, i) {
if ((acc.$2 + 1) % 0x100 != v[2]) print((acc.$2, v[2], DateTime.now()));
return ((acc.$2 + 1) % 0x100 == v[2], v[2]);
},
(false, -1),
),
builder: (context, snapshot) {
return Text(snapshot.data.toString());
},
),
),
Observer(
builder: (context) => StreamBuilder(
stream: _streams.ble.tap,
builder: (context, snapshot) => Text(snapshot.data.toString()),
),
),
Observer(
builder: (context) => StreamBuilder(
stream: _streams.ecg.meta.leadState,
builder: (context, snapshot) => Text(snapshot.data.toString()),
),
),
],
),
),
floatingActionButton: Column(
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
FloatingActionButton(
onPressed: () => _manager.connectAndRegister(),
child: const Icon(Icons.bluetooth),
),
FloatingActionButton(
onPressed: _manager.ecg?.start,
child: const Icon(Icons.play_arrow),
),
FloatingActionButton(
onPressed: _manager.ecg?.stop,
child: const Icon(Icons.stop),
),
FloatingActionButton(
onPressed: _manager.disconnectDevice,
child: const Icon(Icons.bluetooth_disabled),
),
],
),
);
}
}