spike_flutter_sdk 1.2.10 copy "spike_flutter_sdk: ^1.2.10" to clipboard
spike_flutter_sdk: ^1.2.10 copied to clipboard

Spike Health data reader for Android and iOS platforms.

example/main.dart

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

// Your API credentials
const authToken = '{YOUR_AUTH_TOKEN}';
const appId = '{YOUR_APP_ID}';
const customerEndUserId = '{YOUR_CUSTOMER_END_USER_ID}';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  SpikeConnection? _connection;
  SpikeHeartData? _lastData;

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Health Kit Api'),
        ),
        body: SingleChildScrollView(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              const Text(
                'Actions',
                style: TextStyle(
                  fontSize: 16.0,
                  fontWeight: FontWeight.bold,
                ),
              ),
              const Divider(),
              SingleChildScrollView(
                scrollDirection: Axis.horizontal,
                child: IntrinsicHeight(
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: [
                      TextButton(
                        onPressed: _createConnection,
                        child: const Text('Create connection'),
                      ),
                      const VerticalDivider(),
                      TextButton(
                        onPressed: _readData,
                        child: const Text('Read data'),
                      ),
                    ],
                  ),
                ),
              ),
              const Divider(),
              const Text(
                'Authorization data',
                style: TextStyle(
                  fontSize: 16.0,
                  fontWeight: FontWeight.bold,
                ),
              ),
              const Divider(),
              Row(
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: [
                  const Text(
                    'Authorized',
                    style: TextStyle(
                      fontWeight: FontWeight.bold,
                    ),
                  ),
                  Text(_connection != null ? 'Yes' : 'No'),
                ],
              ),
              Row(
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: [
                  const Text(
                    'Integration user ID',
                    style: TextStyle(
                      fontWeight: FontWeight.bold,
                    ),
                  ),
                  Text(_connection?.customerEndUserId ?? 'Not integrated, yet'),
                ],
              ),
              const Divider(),
              const Text(
                'Activity data',
                style: TextStyle(
                  fontSize: 16.0,
                  fontWeight: FontWeight.bold,
                ),
              ),
              const Divider(),
              if (_lastData?.entries?.isEmpty == true)
                const Text('No heart data read.'),
              if (_lastData?.entries != null)
                ..._lastData!.entries!
                    .map((record) => _getHeartDataCard(record)),
              const Divider(),
              const Text(
                'Last send data response',
                style: TextStyle(
                  fontSize: 16.0,
                  fontWeight: FontWeight.bold,
                ),
              ),
              const Divider(),
            ],
          ),
        ),
      ),
    );
  }

  Widget _getHeartDataCard(SpikeHeartDataEntry data) {
    return Container(
      color: Colors.amber,
      margin: const EdgeInsets.all(4.0),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: [
              const Text(
                'Date',
                style: TextStyle(
                  fontWeight: FontWeight.bold,
                ),
              ),
              Text(data.date ?? 'Unset'),
            ],
          ),
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: [
              const Text(
                'Average HR',
                style: TextStyle(
                  fontWeight: FontWeight.bold,
                ),
              ),
              Text(data.averageHeartRate.toString()),
            ],
          ),
        ],
      ),
    );
  }

  Future<void> _createConnection() async {
    _connection = await SpikeSDK.createConnection(
      appId: appId,
      authToken: authToken,
      customerEndUserId: customerEndUserId,
    );

    await _connection!.ensurePermissionsAreGranted(
      types: [SpikeDataType.heart],
    );

    setState(() {});
  }

  Future<void> _readData() async {
    if (_connection == null) {
      return;
    }

    final data = await _connection!.extractData(SpikeDataType.heart);
    _lastData = data;

    setState(() {});
  }
}
5
likes
120
pub points
69%
popularity

Publisher

verified publisherspikeapi.com

Spike Health data reader for Android and iOS platforms.

Homepage

Documentation

API reference

License

MIT (LICENSE)

Dependencies

flutter, get_it, shared_preferences, update

More

Packages that depend on spike_flutter_sdk