Search packages, repositories and app categories

Package detailsv1.0.1

fitness

Flutter plugin for reading step count data. Wraps HealthKit on iOS and GoogleFit on Android.

AndroidiOS
30-day downloads
50
Likes
29
Pub points
140

Install package

flutter pub add fitness

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

The fitness package is a Flutter plugin that enables access to step count data from native health platforms. On iOS, it integrates with HealthKit, and on Android, it connects to Google Fit. This allows developers to retrieve step count information in a cross-platform manner, simplifying health data integration into fitness or wellness applications. The plugin handles platform-specific setup and permissions automatically, providing a consistent API across devices.

Use cases

  • Tracking daily step counts
  • Building fitness dashboards
  • Integrating with health analytics
  • Enabling user activity goals
  • Supporting wellness apps

Key features

  • Cross-platform step count access
  • HealthKit (iOS) integration
  • Google Fit (Android) integration
  • Automatic permission handling
  • Simple API for step data retrieval

Suitable for

  • Fitness app developers
  • Wellness application creators
  • Health data integrators
  • Mobile developers targeting both iOS and Android

Considerations

  • Requires user permission on both platforms
  • Needs proper configuration in iOS and Android manifests
  • Limited to step count (not other health metrics)
  • Depends on user having HealthKit or Google Fit enabled
  • May require background execution setup for continuous tracking

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

Fitness

pub package

Flutter plugin for reading step count data. Wraps HealthKit on iOS and GoogleFit on Android.

Related Document

:point_right: Korean

Getting Started

Check out the example directory for a sample app.

Add pubspec.yaml

To use this plugin, add fitness as a dependency in your pubspec.yaml file.

Android Integration

Enable Fitness API and obtain an OAuth 2.0 client ID.

iOS Integration

Enable HealthKit and add NSHealthShareUsageDescription key to the Info.plist file.

Usage

Fitness.hasPermission

Check if the user has previously granted the necessary data access.

Note: Quite rightly so, Apple deems even the information as to whether a user accepted or denied the read permission for HealthKit as sensitive information. For this reason, HealthKit does not have a clear way to check permissions.

As a workaround, it checks whether you can read data within the last month or not to see if you actually have read access.

void _hasPermission() async {
  final result = await Fitness.hasPermission();
}
Fitness.requestPermission

Initiate the authorization flow.

  • Android: Request OAuth permission and request permission to read step count history from Google Fit. It also creates a subscription to synchronize step count data.

  • iOS: Request permission to read step count history from Health Kit. Since it returns whether the request for HKHealthStore.requestAuthorization was successful or not, it is recommended to use Fitness.hasPermission in the case of iOS to check if there is permission again.

void _requestPermission() async {
  final result = await Fitness.requestPermission();
}
Fitness.revokePermission
  • Android: All OAuth permissions granted to Googlt Fit are revoked and all subscriptions created in the app are removed.

  • iOS: Feature is not supported, so it always returns true.

void _revokePermission() async {
  final result = await Fitness.revokePermission();
}
Fitness.read

Requests user's step data with Google Fit or Health Kit.

When requested without any arguments, the daily step count is requested by default.

Parameters
  • timeRange
    • defaults: from 00:00:00 to 23:59:59
    • type: TimeRange [class]
  • bucketByTime
    • defaults: 1
    • type: int
  • timeUnit
    • defaults: TimeUnit.day
    • type: TimeUnit [enum]
// Request data for the last 7 days.
void _read() async {
  final now = DateTime.now();
  final results = await Fitness.read(
    timeRange: TimeRange(
      start: now.subtract(const Duration(days: 7)),
      end: now,
    ),
    bucketByTime: 1,
    timeUnit: TimeUnit.days,
  );
}

Categories

Source repository

Projects using this package

No data available yet.