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
복사

.png&blockId=c3e9debc-a044-4d31-9905-355d527bffa6)
.png&blockId=c3e9debc-a044-4d31-9905-355d527bffa6&width=256)
