feat(online): partage sortant et boîte de réception (ticket #69)

Ajoute l'écran de partage sortant (presentation/share_screen.dart) et
la boîte de réception des partages (presentation/share_inbox_screen.dart),
avec les points d'entrée sur profile_screen.dart, home_screen.dart,
program_screen.dart et workout_template_screen.dart. flutter analyze
propre (mêmes infos préexistantes), 132/132 tests verts, build APK
debug validé. Dernier ticket de développement du chantier "Ajouter
les features serveur au client" (#63) — il ne reste que la QA finale
(#70).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-20 07:23:14 +02:00
parent eee4348b52
commit d16a017743
11 changed files with 1598 additions and 22 deletions

View File

@ -2,17 +2,20 @@ import 'package:flutter/material.dart';
import '../application/application.dart';
import '../domain/domain.dart';
import 'share_inbox_screen.dart';
import 'theme.dart';
final class ProfileScreen extends StatefulWidget {
const ProfileScreen({
required this.authUseCases,
required this.syncUseCases,
required this.shareUseCases,
super.key,
});
final AuthUseCases authUseCases;
final SyncUseCases syncUseCases;
final ShareUseCases shareUseCases;
@override
State<ProfileScreen> createState() => _ProfileScreenState();
@ -122,7 +125,10 @@ final class _ProfileScreenState extends State<ProfileScreen> {
void _openReceivedShares(BuildContext context) {
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => const ReceivedSharesScreen()),
MaterialPageRoute(
builder: (context) =>
ShareInboxScreen(shareUseCases: widget.shareUseCases),
),
);
}
@ -672,26 +678,6 @@ final class _RegisterScreenState extends State<RegisterScreen> {
}
}
final class ReceivedSharesScreen extends StatelessWidget {
const ReceivedSharesScreen({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Partages reçus')),
body: const Center(
child: Padding(
padding: EdgeInsets.all(24),
child: Text(
"Les programmes et séances qu'on t'envoie apparaîtront ici.",
textAlign: TextAlign.center,
),
),
),
);
}
}
final class _AuthFormScaffold extends StatelessWidget {
const _AuthFormScaffold({required this.child});