feat(j0.3): socle transverse (Result/Failure, theme, router, DI)
- core/error : Result<S> maison (Ok/Err) + Failure scellee avec egalite de valeur - core/theme : AppTheme Material 3 (palette coucher, cibles tactiles enfant) - core/router : routes nommees child/parentGate/parent (Navigator 1, placeholders) - core/di : conventions providers - CLAUDE.md §7 : Result maison & Navigator 1 actes (YAGNI) - ROADMAP : 0.3 cochee, Jalon 0 termine - corrections code review : egalite Failure, assertions tests, Map.unmodifiable Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
/// Routes nommées de l'application.
|
||||
///
|
||||
/// Pas de `go_router` pour l'instant — Navigator simple suffit (YAGNI).
|
||||
/// Les écrans réels seront branchés quand les features correspondantes
|
||||
/// seront implémentées.
|
||||
abstract final class AppRoutes {
|
||||
/// Espace enfant — route par défaut au démarrage.
|
||||
static const String child = '/';
|
||||
|
||||
/// Écran de saisie du code parental (accès à l'espace parent).
|
||||
static const String parentGate = '/parent-gate';
|
||||
|
||||
/// Espace parent (gestion podcasts, limites, réglages).
|
||||
static const String parent = '/parent';
|
||||
}
|
||||
|
||||
/// Table de routage de l'application.
|
||||
///
|
||||
/// À enrichir au fur et à mesure que les features sont implémentées.
|
||||
final Map<String, WidgetBuilder> appRoutes = Map.unmodifiable({
|
||||
AppRoutes.child: (_) => const _ChildPlaceholder(),
|
||||
AppRoutes.parentGate: (_) => const _ParentGatePlaceholder(),
|
||||
AppRoutes.parent: (_) => const _ParentPlaceholder(),
|
||||
});
|
||||
|
||||
class _ChildPlaceholder extends StatelessWidget {
|
||||
const _ChildPlaceholder();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) =>
|
||||
const Scaffold(body: Center(child: Text('Storytime')));
|
||||
}
|
||||
|
||||
class _ParentGatePlaceholder extends StatelessWidget {
|
||||
const _ParentGatePlaceholder();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) =>
|
||||
const Scaffold(body: Center(child: Text('Code parental')));
|
||||
}
|
||||
|
||||
class _ParentPlaceholder extends StatelessWidget {
|
||||
const _ParentPlaceholder();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) =>
|
||||
const Scaffold(body: Center(child: Text('Espace parent')));
|
||||
}
|
||||
Reference in New Issue
Block a user