fix(frontend): Step3 - Amélioration genre + ajout fichiers Docker

- Suppression label 'Genre', boutons radio centrés (Fille/Garçon)
- Réduction espacements pour éviter dépassement
- Ajout docker-compose.yml et Dockerfiles depuis master

Ticket #38
This commit is contained in:
2025-12-02 15:40:46 +01:00
parent aee061f9bd
commit 9a6590c31b
6 changed files with 195 additions and 29 deletions
+16
View File
@@ -0,0 +1,16 @@
# Stage builder
FROM ghcr.io/cirruslabs/flutter:3.19.0 AS builder
WORKDIR /app
COPY pubspec.* ./
RUN flutter pub get
COPY . .
RUN flutter build web --release
# Stage production
FROM nginx:alpine
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /app/build/web /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
+1 -1
View File
@@ -1 +1 @@
flutter.sdk=C:\\Users\\marti\\dev\\flutter
flutter.sdk=/home/deploy/snap/flutter/common/flutter
@@ -408,7 +408,7 @@ class _ChildCardWidgetState extends State<_ChildCardWidget> {
),
),
),
const SizedBox(height: 12.0 * 1.1), // Augmenté pour plus d'espace après la photo
const SizedBox(height: 8.0 * 1.1),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
@@ -416,7 +416,7 @@ class _ChildCardWidgetState extends State<_ChildCardWidget> {
Switch(value: widget.childData.isUnbornChild, onChanged: widget.onToggleIsUnborn, activeColor: Theme.of(context).primaryColor),
],
),
const SizedBox(height: 9.0 * 1.1), // 9.9
const SizedBox(height: 6.0 * 1.1)
CustomAppTextField(
controller: _firstNameController,
labelText: 'Prénom',
@@ -432,33 +432,28 @@ class _ChildCardWidgetState extends State<_ChildCardWidget> {
enabled: true,
fieldHeight: 55.0 * 1.1, // 60.5
),
const SizedBox(height: 9.0 * 1.1), // 9.9
const SizedBox(height: 6.0 * 1.1),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Genre', style: GoogleFonts.merienda(fontSize: 16 * 1.1, fontWeight: FontWeight.w600)),
Row(
children: [
Radio<String>(
value: 'H',
groupValue: widget.childData.gender,
onChanged: (value) => widget.onGenderChanged(value!),
activeColor: Theme.of(context).primaryColor,
),
Text('H', style: GoogleFonts.merienda(fontSize: 16 * 1.1)),
const SizedBox(width: 20),
Radio<String>(
value: 'F',
groupValue: widget.childData.gender,
onChanged: (value) => widget.onGenderChanged(value!),
activeColor: Theme.of(context).primaryColor,
),
Text('F', style: GoogleFonts.merienda(fontSize: 16 * 1.1)),
],
Radio<String>(
value: 'F',
groupValue: widget.childData.gender,
onChanged: (value) => widget.onGenderChanged(value!),
activeColor: Theme.of(context).primaryColor,
),
Text('Fille', style: GoogleFonts.merienda(fontSize: 16 * 1.1)),
const SizedBox(width: 20),
Radio<String>(
value: 'H',
groupValue: widget.childData.gender,
onChanged: (value) => widget.onGenderChanged(value!),
activeColor: Theme.of(context).primaryColor,
),
Text('Garçon', style: GoogleFonts.merienda(fontSize: 16 * 1.1)),
],
),
const SizedBox(height: 9.0 * 1.1), // 9.9
const SizedBox(height: 6.0 * 1.1)
CustomAppTextField(
controller: _dobController,
labelText: widget.childData.isUnbornChild ? 'Date prévisionnelle de naissance' : 'Date de naissance',
@@ -468,7 +463,7 @@ class _ChildCardWidgetState extends State<_ChildCardWidget> {
suffixIcon: Icons.calendar_today,
fieldHeight: 55.0 * 1.1, // 60.5
),
const SizedBox(height: 11.0 * 1.1), // 12.1
const SizedBox(height: 8.0 * 1.1),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
@@ -476,14 +471,14 @@ class _ChildCardWidgetState extends State<_ChildCardWidget> {
label: 'Consentement photo',
value: widget.childData.photoConsent,
onChanged: widget.onTogglePhotoConsent,
checkboxSize: 22.0 * 1.1, // 24.2
checkboxSize: 22.0 * 1.1,
),
const SizedBox(height: 6.0 * 1.1), // 6.6
const SizedBox(height: 4.0 * 1.1),
AppCustomCheckbox(
label: 'Naissance multiple',
value: widget.childData.multipleBirth,
onChanged: widget.onToggleMultipleBirth,
checkboxSize: 22.0 * 1.1, // 24.2
checkboxSize: 22.0 * 1.1,
),
],
),
+13
View File
@@ -0,0 +1,13 @@
server {
listen 80;
server_name ynov.ptits-pas.fr;
location / {
root /usr/share/nginx/html;
index index.html;
try_files $uri $uri/ /index.html;
}
# Gestion des erreurs
error_page 404 /index.html;
}