T15-T18, T20, T23: app shell, three screens, and the first UI tests
Theme, go_router shell, record screen, trips list with selection, trip detail with stats and charts, rename/delete/merge. 15 widget tests -- the first this project has ever had, closing the gap docs/v3/BACKLOG.md names as v2's largest. The theme sets bodyColor and displayColor explicitly rather than relying on a wrapping widget, so the black-on-black regression cannot recur by someone removing a container, and a widget test now asserts the headline names a colour distinct from the ground. Those tests immediately found a real layout bug: with a ride active the record screen grows to six stat rows and overflows a short screen. Compose clipped this silently, so it may be latent in the native app; Flutter reports it. Fixed by making the screen scrollable while still centring when there is room. Two harness lessons. pumpAndSettle never settles against a repeating timer, so the elapsed clock now runs only while a ride is active -- better behaviour anyway, since an idle screen has no clock to advance. And flutter_test asserts no Timer is pending after disposal, which Drift's stream-query keep-alive cache trips; tests now tear the tree down and pump past that window. 160 tests passing, analyze clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -16,6 +16,7 @@ import '../domain/models.dart';
|
||||
import '../recording/geolocator_location_source.dart';
|
||||
import '../recording/location_source.dart';
|
||||
import '../recording/recording_engine.dart';
|
||||
import '../telemetry/live_telemetry.dart';
|
||||
|
||||
/// The Drift database, opened against app-private storage.
|
||||
///
|
||||
@@ -47,6 +48,10 @@ final recordingEngineProvider = Provider<RecordingEngine>((ref) {
|
||||
return engine;
|
||||
});
|
||||
|
||||
/// The live speedo feed, published from the fix callback at GPS rate.
|
||||
final liveTelemetryProvider =
|
||||
Provider<LiveTelemetry>((ref) => LiveTelemetry.instance);
|
||||
|
||||
// --- Reactive state ---------------------------------------------------------
|
||||
|
||||
/// The in-progress ride, straight from the database.
|
||||
|
||||
Reference in New Issue
Block a user