- Backend: DTO NIR 15 car 2A/2B, validation format+clé, warning cohérence - BDD: nir_chiffre NOT NULL, migration pour bases existantes - Seeds: 02 nir_chiffre, 03 Marie 2A / Fatima 99 - Frontend: nir_utils, nir_text_field, formulaire pro, mock inscription AM Made-with: Cursor
56 lines
1.7 KiB
Dart
56 lines
1.7 KiB
Dart
import 'package:flutter/material.dart';
|
||
|
||
import '../utils/nir_utils.dart';
|
||
import 'custom_app_text_field.dart';
|
||
|
||
/// Champ de saisie dédié au NIR (Numéro d'Inscription au Répertoire – 15 caractères).
|
||
/// Format affiché : 1 12 34 56 789 012-34 ou 1 12 34 2A 789 012-34 pour la Corse.
|
||
/// La valeur envoyée au [controller] est formatée ; utiliser [normalizeNir](controller.text) à la soumission.
|
||
class NirTextField extends StatelessWidget {
|
||
final TextEditingController controller;
|
||
final String labelText;
|
||
final String hintText;
|
||
final String? Function(String?)? validator;
|
||
final double fieldWidth;
|
||
final double fieldHeight;
|
||
final double labelFontSize;
|
||
final double inputFontSize;
|
||
final bool enabled;
|
||
final bool readOnly;
|
||
final CustomAppTextFieldStyle style;
|
||
|
||
const NirTextField({
|
||
super.key,
|
||
required this.controller,
|
||
this.labelText = 'N° Sécurité Sociale (NIR)',
|
||
this.hintText = '15 car. (ex. 1 12 34 56 789 012-34 ou 2A Corse)',
|
||
this.validator,
|
||
this.fieldWidth = double.infinity,
|
||
this.fieldHeight = 53.0,
|
||
this.labelFontSize = 18.0,
|
||
this.inputFontSize = 18.0,
|
||
this.enabled = true,
|
||
this.readOnly = false,
|
||
this.style = CustomAppTextFieldStyle.beige,
|
||
});
|
||
|
||
@override
|
||
Widget build(BuildContext context) {
|
||
return CustomAppTextField(
|
||
controller: controller,
|
||
labelText: labelText,
|
||
hintText: hintText,
|
||
fieldWidth: fieldWidth,
|
||
fieldHeight: fieldHeight,
|
||
labelFontSize: labelFontSize,
|
||
inputFontSize: inputFontSize,
|
||
keyboardType: TextInputType.text,
|
||
validator: validator ?? validateNir,
|
||
inputFormatters: [NirInputFormatter()],
|
||
enabled: enabled,
|
||
readOnly: readOnly,
|
||
style: style,
|
||
);
|
||
}
|
||
}
|