Search

TextField / TextFormField

TextFormField( validator: (String? val){ } )
Dart
복사

Setup

1.
create TextFormField style
2.
Form widget manage the TextFormField
3.
Define key under State final GlobalKey<FormState> formKey = GlobalKey();
4.
Define key under Form key: formKey,
5.
Validator & Save
final GlobalKey<FormState> formKey = GlobalKey();
// can be anywhere as long as it wraps TextFormFields Form( key: formKey, autovalidateMode: AutovalidateMode.always, )
Dart
복사
// component/TextStyle.dart final bool isTime; TextFormField( /// features // called when saved formKey.currentState!.save(); onSaved: onSaved, // recieve as parameter // called when if(formKey.currentState!.validate()) {} is called validator: (String? val) { // check if value is null if (val == null || val.isEmpty) { // return Error message return "Enter Value"; } return null; }, // choose input keyboard type keyboardType: isTime ? TextInputType.number : TextInputType.multiline, // restrict input format inputFormatters: isTime ? [FilteringTextInputFormatter.digitsOnly] : [], /// styles // choose max line maxLines: isTime ? 1 : null, // expand height expands: isTime ? false : true, // move cursor location textAlignVertical: TextAlignVertical.top, cursorColor: Colors.grey, decoration: InputDecoration( labelText: labelText, border: OutlineInputBorder( borderRadius: BorderRadius.circular(3.0), ), filled: true, fillColor: Colors.grey[100], ), );
Dart
복사
// define variables under State int? startTime; int? endTime; String? content; // onSaved from TextFormField void onStartSaved(String? val) { startTime = int.parse(val!); } void onEndSaved(String? val) { endTime = int.parse(val!); } void onSaved(String? val) { content = val; }
Dart
복사
void onSavePressed() { // check if formKey is created but not implemented if (formKey.currentState == null) { return; } // run after validator if (formKey.currentState!.validate()) { // run all validator under same formKey // No Error formKey.currentState!.save(); // save Form (initiate all onSaved methods) GetIt.I<LocalDatabase>().createSchedul( await SchedulesCompanion( content: date: starttime: endTime: colorId: ), ); } else { // Error } }
Dart
복사
void onStartSaved(String? val) { startTime = int.parse(val!); } void onEndSaved(String? val) { endTime = int.parse(val!); } void onSaved(String? val) { content = val; }
Dart
복사

Reference