Files
ZenXercise/lib/main.dart
T
CedricandClaude Opus 5.5 971ff64117 Stage 4: guided Player for both Modes and the Session summary
- buildSegments lays a Plan out as holds with Transitions (get ready,
  switch sides, next round, next exercise) or sets with count-up Rests;
  Supersets alternate members and rest per round unless asked otherwise
- SessionRunner drives segments against an injected clock: auto-advance
  with a chime, pause, skip, back, rep sets confirmed with logged reps
  and kg, timed sets started on demand, early end
- Player screen: countdown ring, accent pulse in the last 3 s, Flip
  Animation, next-up cards, Rest Screen, mute toggle, screen kept on
- Sessions table (schema v2 migration) keeps a Plan snapshot and Set
  Logs; nothing is saved when no hold or set was done
- Summary with time, exercises or sets logged, and every Set Log
- Synthesised quiet cue sounds (tools/sounds), status bar per Mode

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 00:20:16 +01:00

36 lines
1.2 KiB
Dart

import 'package:drift_flutter/drift_flutter.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:provider/provider.dart';
import 'src/app.dart';
import 'src/database/database.dart';
import 'src/exercises/exercise_library.dart';
import 'src/history/session_repository.dart';
import 'src/plans/plan_repository.dart';
import 'src/player/player_effects.dart';
import 'src/settings/settings_controller.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]);
final db = AppDatabase(driftDatabase(name: 'zenxercise'));
final library = await ExerciseLibrary.load(rootBundle);
final settings = SettingsController(SettingsService());
await settings.loadSettings();
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider.value(value: settings),
Provider.value(value: library),
Provider.value(value: PlanRepository(db)),
Provider.value(value: SessionRepository(db)),
Provider<PlayerEffects>(create: (_) => DevicePlayerEffects()),
],
child: const ZenXerciseApp(),
),
);
}