- nir_utils: normalizeNir, formatNir, validateNir (format + clé), Corse 2A/2B - NirInputFormatter: formatage auto à la saisie (espaces + tiret) - NirTextField: widget réutilisable pour champ NIR - professional_info_form_screen: NIR 15 car., affichage formaté à l'init - custom_app_text_field: paramètre inputFormatters Refs: #102 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,
|
||
);
|
||
}
|
||
}
|