Skip to main content
Version: 2.0.0

Flutter SDK Guide

The Impilo Mobile SDK enables faster and unified integration of remote patient monitoring (RPM) devices for mobile applications. Our Flutter SDK handles connecting and communicating with RPM devices while providing you with standardized interactions and data.

Installation

Add the SDK to your pubspec.yaml and import it:

import 'package:impilo_mobile_sdk/impilo_mobile_sdk.dart';

SDK Initialization

Initialize the SDK:

final sdk = await ImpiloSDK.initialize();

Discovering Devices

Call discover on the desired device type. When a device is discovered, the callback will be invoked:

TranstekBBZ32BB01.discover(sdk)((device) {
print('Found device: ${device.bluetoothIdentifier()}');
});

Pairing Devices

A discovered device can be paired with. To pair, call pair on the discovered device:

unpairedDevice.pair((pairedDevice) {
print('Device paired successfully!');
});

To remember a device for later, store its identifier:

final identifier = device.bluetoothIdentifier();

If the device was previously paired, you can skip the pairing process:

final pairedDevice = unpairedDevice.skipPairing();

Getting Readings

Call monitorForReading() to receive readings when they are available:

pairedDevice.monitorForReading((reading) {
print('BP: ${reading.data.systolicInMmHg}/${reading.data.diastolicInMmHg} mmHg');
});

Complete Example

import 'package:impilo_mobile_sdk/impilo_mobile_sdk.dart';

final sdk = await ImpiloSDK.initialize();

TranstekBBZ32BB01.discover(sdk)((unpairedDevice) {
unpairedDevice.pair((pairedDevice) {
pairedDevice.monitorForReading((reading) {
print('BP: ${reading.data.systolicInMmHg}/${reading.data.diastolicInMmHg} mmHg');
});
});
});

How Data is Managed

The SDK does not store any data—it only forwards received data to you. You are responsible for handling and storing readings as needed in your application.

Working with Apple Health (iOS)

Request access to Apple Health from the user:

await sdk.appleHealth.requestAccess(
readTypes: [
AppleHealthReadingType.bloodPressure,
AppleHealthReadingType.heartRate,
],
writeTypes: [],
);

Query readings from Apple Health:

final query = HealthQuery(
startDate: DateTime.now().subtract(Duration(days: 7)),
endDate: DateTime.now(),
limit: 100,
);

final readings = await sdk.appleHealth.bloodPressure.query(query);

Insert readings to Apple Health:

await sdk.appleHealth.bloodPressure.insert(reading);

Supported Reading Types

  • Blood Pressure
  • Blood Glucose
  • Blood Oxygen
  • Body Weight
  • Body Temperature
  • Peak Flow
  • Heart Rate
  • Step Count
  • Heart Rate Variability

Working with Health Connect (Android)

Request access to Health Connect from the user:

await sdk.androidHealthConnect.requestAccess(
readTypes: [
AndroidHealthConnectReadingType.bloodPressure,
AndroidHealthConnectReadingType.heartRate,
],
writeTypes: [],
);

Query readings from Health Connect:

final query = HealthQuery(
startDate: DateTime.now().subtract(Duration(days: 7)),
endDate: DateTime.now(),
limit: 100,
);

final readings = await sdk.androidHealthConnect.bloodPressure.query(query);

Insert readings to Health Connect:

await sdk.androidHealthConnect.bloodPressure.insert(reading);

Supported Reading Types

  • Blood Pressure
  • Blood Glucose
  • Blood Oxygen
  • Body Weight
  • Body Temperature
  • Peak Flow
  • Heart Rate
  • Step Count
  • Heart Rate Variability

Looking for More Device Integrations?

For additional device integration requests, please reach out to sales@impilo.health.