a-mabe / a-mabe/background_hiit_timer

[Feature/Improvement] Migrate to audio_service from flutter_background_service

Open
#37 0 comments 0 reactions 1 assignee Claimed by @a-mabe View on GitHub
enhancement
Dominant language
Dart
Stars
5
Forks
3
PR merge metrics
No merged PRs in 30d

Description

# Overview

This issue describes the plan to replace `flutter_background_service` with `audio_service` as the background execution mechanism.

The current implementation uses [flutter_background_service](https://pub.dev/packages/flutter_background_service). It uses [SQFlite](https://pub.dev/packages/sqflite) for passing interval data, [SharedPreferences](https://pub.dev/packages/shared_preferences) for the pause flag, and service events (`service.invoke("stop");`). Migrating to audio_service will replace these with a single Dart stream.

## audio_service

[Tutorial](https://github.com/ryanheise/audio_service/wiki/Tutorial).

`audio_service` is built for long-running audio. It registers the app with the OS as a media player, which grants it a foreground service slot and lock-screen controls without any extra configuration. The BaseAudioHandler subclass runs in the same Dart isolate as the UI, so the interval list can be passed by reference in memory.

## Design

`HiitAudioHandler` - Extends the `BaseAudioHandler` class. Defines pause/play/skip, playSound, broadcasts state. This will replace flutter_background_service.

`Countdown` - Stateful widget, contains the streambuilder.

`CountdownController` - Public-facing controller that translates user calls into handler methods.

`IntervalType` - Unchanged.

`TimerState` - Unchanged.

Contributor guide

Open the contributing guide

Research direction

The issue describes replacing flutter_background_service with audio_service. Start by reading the linked audio_service tutorial. Examine the current service implementation and the proposed HiitAudioHandler class. The work involves understanding how to pass interval data via a Dart stream instead of SQFlite and SharedPreferences. Test the migration by running the app's background timer functionality.

Written by the indexing model from the issue text.

Assessment

Tech stack
dart, flutter
Domain
audio-video-rtc, mobile
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
40/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.