mirror of
https://github.com/kuhyx/screen-locker.git
synced 2026-11-11 16:53:58 +01:00
Some checks are pending
dependency freshness / dependencies on newest stable (push) Waiting to run
md-naming / markdown naming convention (push) Waiting to run
pre-commit / pre-commit (${{ matrix.group }}) (flutter, flutter-analyze, ) (push) Waiting to run
pre-commit / pre-commit (${{ matrix.group }}) (mypy, mypy, ) (push) Waiting to run
pre-commit / pre-commit (${{ matrix.group }}) (pylint, pylint, ) (push) Waiting to run
pre-commit / pre-commit (${{ matrix.group }}) (rest, , mypy,pylint,flutter-analyze) (push) Waiting to run
Tests / test (push) Waiting to run
Tests / lock-popup-safety (push) Waiting to run
Tests / flutter test (shard ${{ matrix.shard }}) (0) (push) Waiting to run
Tests / flutter test (shard ${{ matrix.shard }}) (1) (push) Waiting to run
Tests / flutter test (shard ${{ matrix.shard }}) (2) (push) Waiting to run
Tests / flutter test (shard ${{ matrix.shard }}) (3) (push) Waiting to run
Tests / flutter test (shard ${{ matrix.shard }}) (4) (push) Waiting to run
Tests / flutter test (shard ${{ matrix.shard }}) (5) (push) Waiting to run
Tests / flutter test (shard ${{ matrix.shard }}) (6) (push) Waiting to run
Tests / flutter test (shard ${{ matrix.shard }}) (7) (push) Waiting to run
Tests / flutter test (shard ${{ matrix.shard }}) (8) (push) Waiting to run
Tests / flutter test (shard ${{ matrix.shard }}) (9) (push) Waiting to run
Tests / flutter-coverage (push) Blocked by required conditions
Tests / web-coverage (push) Waiting to run
release-apk / release (APK) (push) Waiting to run
repo-contract / repo contract (push) Waiting to run
Revert 6777656; the app again writes zero distance across a gap over 30 s. Also drop the importer-test skip for its fixture. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WzxdWYwyP67ppvkeie3X1F
45 lines
1.6 KiB
Dart
45 lines
1.6 KiB
Dart
/// The seam between the recorder and the platform's location provider.
|
|
///
|
|
/// Everything above this interface (recorder, map, sandbox replay) is pure
|
|
/// Dart and runs on the Linux test host and the desktop target; only
|
|
/// `GeolocatorPositionSource` touches the geolocator plugin.
|
|
library;
|
|
|
|
import 'package:workout_app/services/gps_filter.dart';
|
|
|
|
/// Whether the app may read the location right now.
|
|
enum LocationAccess {
|
|
/// Permission granted and the location service is on.
|
|
granted,
|
|
|
|
/// Permission refused this time; asking again may work.
|
|
denied,
|
|
|
|
/// Permission refused for good; only the system settings can change it.
|
|
deniedForever,
|
|
|
|
/// Permission is fine but the device's location switch is off.
|
|
serviceOff;
|
|
|
|
/// Whether fixes can be read right now.
|
|
bool get isGranted => this == LocationAccess.granted;
|
|
}
|
|
|
|
/// A stream of GPS fixes plus the permission handshake that guards it.
|
|
abstract class PositionSource {
|
|
/// Asks for location permission (this may show the system prompt); never
|
|
/// throws for a refusal.
|
|
Future<LocationAccess> requestAccess();
|
|
|
|
/// Reads the access as it stands, without ever prompting. For re-checks
|
|
/// when the app comes back to the foreground: the permission dialog itself
|
|
/// backgrounds the app, so re-asking there would loop.
|
|
Future<LocationAccess> checkAccess();
|
|
|
|
/// Fixes roughly every [interval], best accuracy, until cancelled.
|
|
///
|
|
/// [interval] must stay well under the PC's 30 s credit gap
|
|
/// (`kMaxCreditGapSeconds`): a quieter stream earns nothing.
|
|
Stream<GpsFix> fixes({Duration interval = const Duration(seconds: 2)});
|
|
}
|