import 'package:flutter/cupertino.dart'; import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; import 'package:SEFER/constant/box_name.dart'; class MyTextForm extends StatelessWidget { const MyTextForm({ Key? key, required this.controller, required this.label, required this.hint, required this.type, }) : super(key: key); final TextEditingController controller; final String label, hint; final TextInputType type; @override Widget build(BuildContext context) { return Padding( padding: const EdgeInsets.only(bottom: 10), child: SizedBox( width: Get.width * .8, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( label.tr, style: const TextStyle( color: CupertinoColors.label, fontSize: 16, fontWeight: FontWeight.w600, ), ), const SizedBox(height: 8), CupertinoTextField( controller: controller, keyboardType: type, placeholder: hint.tr, padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), decoration: BoxDecoration( color: CupertinoColors.systemBackground, border: Border.all(color: CupertinoColors.systemGrey4), borderRadius: BorderRadius.circular(8), ), style: const TextStyle(color: CupertinoColors.label), placeholderStyle: const TextStyle(color: CupertinoColors.placeholderText), ), const SizedBox(height: 4), ValueListenableBuilder( valueListenable: controller, builder: (context, value, child) { String? errorText = _getErrorText(value.text); return errorText != null ? Text( errorText, style: const TextStyle( color: CupertinoColors.destructiveRed, fontSize: 12), ) : const SizedBox.shrink(); }, ), ], ), ), ); } String? _getErrorText(String value) { if (value.isEmpty) { return '${'Please enter'.tr} $label'.tr; } if (type == TextInputType.emailAddress) { if (!value.contains('@')) { return 'Please enter a valid email.'.tr; } } else if (type == TextInputType.phone) { final box = GetStorage(); if (box.read(BoxName.countryCode) == 'Egypt') { if (value.length != 11) { return 'Please enter a valid phone number.'.tr; } } else if (value.length != 10) { return 'Please enter a valid phone number.'.tr; } } return null; } }