Ajoute l'écran de programme (presentation/program_screen.dart) et un écran d'accueil (presentation/home_screen.dart) pour la navigation, avec les ajustements application/domaine/repositories nécessaires. flutter analyze propre, 11/11 tests verts, build APK debug validé. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
55 lines
1.6 KiB
Dart
55 lines
1.6 KiB
Dart
import '../infrastructure/local/local.dart';
|
|
import 'application.dart';
|
|
|
|
final class AppBootstrap {
|
|
AppBootstrap._({
|
|
required this.database,
|
|
required this.exerciseUseCases,
|
|
required this.mediaUseCases,
|
|
required this.programUseCases,
|
|
});
|
|
|
|
final AppDatabase database;
|
|
final ExerciseUseCases exerciseUseCases;
|
|
final MediaUseCases mediaUseCases;
|
|
final ProgramUseCases programUseCases;
|
|
|
|
static Future<AppBootstrap> create() async {
|
|
final database = AppDatabase.open();
|
|
await database.customSelect('SELECT 1').get();
|
|
final exerciseRepository = DriftExerciseRepository(database);
|
|
final mediaRepository = DriftMediaAssetRepository(database);
|
|
final programRepository = DriftProgramRepository(database);
|
|
final ids = LocalIdGenerator();
|
|
const clock = SystemClock();
|
|
const originDeviceId = 'local-device';
|
|
|
|
return AppBootstrap._(
|
|
database: database,
|
|
exerciseUseCases: ExerciseUseCases(
|
|
repository: exerciseRepository,
|
|
clock: clock,
|
|
ids: ids,
|
|
originDeviceId: originDeviceId,
|
|
),
|
|
mediaUseCases: MediaUseCases(
|
|
mediaRepository: mediaRepository,
|
|
exerciseRepository: exerciseRepository,
|
|
storage: const PathProviderLocalMediaStorage(),
|
|
clock: clock,
|
|
ids: ids,
|
|
originDeviceId: originDeviceId,
|
|
),
|
|
programUseCases: ProgramUseCases(
|
|
programRepository: programRepository,
|
|
exerciseRepository: exerciseRepository,
|
|
clock: clock,
|
|
ids: ids,
|
|
originDeviceId: originDeviceId,
|
|
),
|
|
);
|
|
}
|
|
|
|
Future<void> dispose() => database.close();
|
|
}
|