healthrian_ble_support_for_cardio_em_cdc 0.0.34 copy "healthrian_ble_support_for_cardio_em_cdc: ^0.0.34" to clipboard
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),
          ),
        ],
      ),
    );
  }
}
0
likes
45
points
120
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A Very Good Project created by Very Good CLI.

Homepage
Repository (GitHub)

License

MIT (license)

Dependencies

healthrian_ble_interface, healthrian_usb_support, rxdart

More

Packages that depend on healthrian_ble_support_for_cardio_em_cdc