flutter_reactive_form
폼의 입력 및 검증을 처리합니다.
- 스타
- 0
- 포크
- 0
- 최근 푸시(UTC)
- 2025. 1. 17.
- 프로젝트 상태
- 활성
원본 README
아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.
Minimum Requirements
- Dart SDK: >=2.18.6 <4.0.0
- Flutter: >=1.17.0
Installation and Usage
Once you're familiar with Flutter you may install this package adding flutter_reactive_form to the dependencies list
of the pubspec.yaml file as follow:
dependencies:
flutter:
sdk: flutter
flutter_reactive_form: ^0.0.1
Then run the command flutter packages get on the console.
Creating a form
A form is composed by multiple field controls.
To declare a form with the fields name and birthday is as simple as:
- name have a default value.
- birthday is null by default.
final form = ReactiveForm(
onChanged: (formData, fieldChanged) {
/// Handle the change.
},
formGroup:{
"name": FormFieldControl<String>(
fieldEnum: "name",
name: "Name",
isRequired: true,
isEnabled: true,
data: "Nghi",
),
"birthday": FormFieldControl<DateTime?>(
fieldEnum: "birthday",
name: "Birthday",
isRequired: true,
isEnabled: true,
data: null,
),
},
);
How to get/set Form's data
You can get the value of a field:
String get name => _reactiveForm.getFieldData<String>(fieldEnum: 'name');
DateTime? get birthday => _reactiveForm.getFieldData<DateTime>(fieldEnum: 'birthday');
To set value to fields:
_reactiveForm.setFieldData(fieldEnum: 'name', data: "Kate");
Validations
Set up your validations as follows:
_reactiveForm.setFormatValidationMap({
'birthday': (birthday) {
if (birthday == null || birthday.isAfter(DateTime.now())) {
return "The time is invalid";
}
return '';
},
});
To validate a field:
final fieldControl = _reactiveForm.getField(fieldEnum: 'name');
final error = _reactiveForm.validateFormatField(fieldControl!);
To validate a form:
final errors = _reactiveForm.validateFormatFields();
Using mixin
There're available functions in ReactiveFormMixin that interface with the form internally:
class ProfileFormController with ReactiveFormMixin {
/// You can call it in state.initState()
void init() {
final form = ReactiveForm(
onChanged: (formData, fieldChanged) {
/// Handle the change.
},
formGroup: {
"name": FormFieldControl<String>(
fieldEnum: "name",
name: "Name",
isRequired: true,
isEnabled: true,
data: "Nghi",
),
"birthday": FormFieldControl<DateTime?>(
fieldEnum: "birthday",
name: "Birthday",
isRequired: true,
isEnabled: true,
data: null,
),
},
);
initForm(form);
setFormatValidationMap({
'birthday': (birthday) {
if (birthday == null || birthday.isAfter(DateTime.now())) {
return "The time is invalid";
}
return '';
},
});
}
/// Interact with UI
String? getName() {
return getFieldData<String>(fieldEnum: 'name');
}
DateTime? getBirthday() {
return getFieldData<DateTime>(fieldEnum: 'birthday')!;
}
void setName(String name) {
setFieldData(fieldEnum: 'name', data: name);
}
void setBirthday(DateTime birthday) {
setFieldData(fieldEnum: 'birthday', data: birthday);
}
///
}
언어C++CMakeDartSwiftCHTMLKotlinObjective-C
프로젝트에 맞는 저장소를 선택하려면?
사용 목적에 따라 검색하고 개발 활동을 비교한 뒤 원본 저장소에서 요구 사항을 확인하세요.
- 이름, 작성자 또는 설명으로 검색하고 기술 주제로 범위를 좁힙니다.
- 스타, 포크, 최근 푸시를 함께 비교하세요. 스타는 관심의 지표이며 품질을 보장하지 않습니다.
- 사용하기 전에 GitHub에서 README, 라이선스, Issues를 확인하세요.
출처 및 관리
“A repository is the most basic element of GitHub.”
GitHub Docs — About repositories ↗