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
- Call initialize to set up the service.
- Use startStepTracking and stopStepTracking to control tracking sessions.
- Listen to stepUpdates for real-time step data.
- Access session history with getSessionHistory.
- Clear session history or steps using clearSessionHistory and clearTotalSteps.
Important Methods
- initialize: Initializes the service and loads persisted data.
- startStepTracking: Starts a new step tracking session.
- stopStepTracking: Stops the current session and saves it to history.
- fetchTotalStepsFromSystem: Fetches the current day's steps from HealthKit.
- getTotalSteps: Returns the total steps counted across all sessions.
- getSessionSteps: Returns the steps counted in the current session.
- stepUpdates: Stream of StepUpdate events for UI updates.
- clearSessionHistory: Clears all session history while preserving total steps.
- requestHealthKitAuthorization: Requests HealthKit permissions.
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
-
- Object
- PlatformInterface
- StepTrackerPlatform
- StepServiceIOS
- Mixed-in types
Constructors
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