StepServiceIOS class

A step tracking service implementation for iOS using HealthKit and Pedometer.

StepServiceIOS manages step tracking sessions, session history, and persistence for iOS devices. It interacts with HealthKit to fetch step data, handles session state, and provides real-time updates via streams. The service supports background recovery, auto-saving, and notification integration.

Features

  • Tracks steps using HealthKit and Pedometer.
  • Manages session state, including start/stop, session steps, and total steps.
  • Persists session data and history using SharedPreferences.
  • Recovers steps taken while the app was not running.
  • Emits updates via a broadcast stream.
  • Handles app lifecycle events to ensure accurate step counting.
  • Integrates with iOS notifications for tracking status.

Usage

Important Methods

Lifecycle Handling

Implements WidgetsBindingObserver to respond to app lifecycle changes, ensuring step data is accurate even when the app is backgrounded or resumed.

Persistence

Uses SharedPreferences to persist session state and history, enabling recovery after app restarts or interruptions.

Notifications

Integrates with NotificationUtilsIOS to display tracking notifications.

Inheritance
Mixed-in types

Constructors

StepServiceIOS.new()

Properties

hashCode int
The hash code for this object.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
stepUpdates Stream<StepUpdate>
no setteroverride

Methods

clearSessionHistory() Future<bool>
override
clearTotalSteps() Future<bool>
override
didChangeAccessibilityFeatures() → void
Called when the system changes the set of currently active accessibility features.
inherited
didChangeAppLifecycleState(AppLifecycleState state) → void
Called when the system puts the app in the background or returns the app to the foreground.
override
didChangeLocales(List<Locale>? locales) → void
Called when the system tells the app that the user's locale has changed. For example, if the user changes the system language settings.
inherited
didChangeMetrics() → void
Called when the application's dimensions change. For example, when a phone is rotated.
inherited
didChangePlatformBrightness() → void
Called when the platform brightness changes.
inherited
didChangeTextScaleFactor() → void
Called when the platform's text scale factor changes.
inherited
didChangeViewFocus(ViewFocusEvent event) → void
Called whenever the PlatformDispatcher receives a notification that the focus state on a view has changed.
inherited
didHaveMemoryPressure() → void
Called when the system is running low on memory.
inherited
didPopRoute() Future<bool>
Called when the system tells the app to pop the current route, such as after a system back button press or back gesture.
inherited
didPushRoute(String route) Future<bool>
Called when the host tells the application to push a new route onto the navigator.
inherited
didPushRouteInformation(RouteInformation routeInformation) Future<bool>
Called when the host tells the application to push a new RouteInformation and a restoration state onto the router.
inherited
didRequestAppExit() Future<AppExitResponse>
Called when a request is received from the system to exit the application.
inherited
dispose() Future<bool>
override
fetchTotalStepsFromSystem() Future<void>
Fetches the total number of steps from the system's health data for the current day.
getSessionHistory() Future<List<StepSession>>
override
getSessionSteps() Future<int>
override
getTotalSteps() Future<int>
override
getTotalStepsFromSystem() Future<int>
override
handleCancelBackGesture() → void
Called when a predictive back gesture is canceled, indicating that no navigation should occur.
inherited
handleCommitBackGesture() → void
Called when a predictive back gesture is finished successfully, indicating that the current route should be popped.
inherited
handleStartBackGesture(PredictiveBackEvent backEvent) bool
Called at the start of a predictive back gesture.
inherited
handleUpdateBackGestureProgress(PredictiveBackEvent backEvent) → void
Called when a predictive back gesture moves.
inherited
hasHealthKitPermission() Future<bool>
override
initialize({StepLoggerConfig? config}) Future<bool>
Initializes the step tracking service.
override
isBackgroundServiceRunning() Future<bool>
override
isTracking() Future<bool>
override
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
requestHealthKitAuthorization() Future<bool>
override
startBackgroundService() Future<bool>
override
startStepTracking() Future<bool>
Starts step tracking on iOS devices.
override
stopBackgroundService() Future<bool>
override
stopStepTracking() Future<bool>
Stops the step tracking session.
override
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited