form_builder 0.0.5 copy "form_builder: ^0.0.5" to clipboard
form_builder: ^0.0.5 copied to clipboard

outdated

flutter form builder, used to quickly build a row-column based form

flutter_form_builder #

basic usage #

FormManagement formManagement = FormManagement();

Widget form = FormBuilder(
      {bool readOnly,//set form's readonly state
      bool visible, // set form's visible state
      FormThemeData? formThemeData, //set themedata of form 
      this.formManagement,
      FormInitCallback? initCallback})
	.textField(
          controlKey: 'username',
          labelText: 'username',
          clearable: true,
          validator: (value) =>
              value.isEmpty ? 'username can not be empty !' : null,
        )
        .switchInline(
          controlKey: 'switch1',
          onChanged: (value) => print('switch1 value changed $value'),
        )
        .nextLine()
        .textField(
            controlKey: 'password',
            hintText: 'password',
            obscureText: true,
            passwordVisible: true,
            clearable: true,
            toolbarOptions: ToolbarOptions(copy: false, paste: false),
            onChanged: (value) => print('password value changed $value'),
            flex: 1)
        .textButton(
            onPressed: () {
              formManagement
                  .getFormFieldManagement('password')
                  .textSelectionManagement
                  .selectAll();
            },
            label: 'button',
            controlKey: 'button')
        .nextLine()
        .numberField(
          controlKey: 'age',
          hintText: 'age',
          clearable: true,
          flex: 3,
          min: -18,
          max: 99,
          decimal: 0,
          onChanged: (value) => print('age value changed $value'),
          validator: (value) => value == null ? 'not empty' : null,
        )
        .checkboxGroup(
          items: FormBuilder.toCheckboxGroupItems(['male', 'female']),
          controlKey: 'checkbox',
          split: 2,
          label: 'sex',
          onChanged: (value) => print('checkbox value changed $value'),
          validator: (value) => value.isEmpty ? 'pls select sex' : null,
        );

methods #

FormManagement #

check whether form is initialled or not

bool initialled = formManagement.initialled;

check whether form is visible or not

bool visible = formManagement.visible;

hide|show form

formManagement.visible = true|false;

check whether form is readOnly or not

bool readOnly = formManagement.readOnly;

set form readonly|editable

formManagement.readOnly = true|false;

get current form themedata

FormThemeData formThemeData = formManagement.formThemeData;

set form theme

formManagement.formThemeData = FormThemeData(themeData);// system theme
formManagement.formThemeData = DefaultFormTheme(); //default theme from  https://github.com/mitesh77/Best-Flutter-UI-Templates/blob/master/best_flutter_ui_templates/lib/hotel_booking/filters_screen.dart

get form data

formManagement.data; // auto remove null
formManagement.getData({bool removeNull = false});

reset form

formManagement.reset();

validate form

formManagement.validate();

request focus on first invalid field

formManagement.focusOnFirstInvalidField()

check whether form is valid or not

unlike validate method, this method won't display error msg

formManagement.isValid

check whether form has a controlKey or not

bool exists = formManagement.hasControlKey(String controlKey);

get FormFieldManagement

FormFieldManagement formFieldManagement = formManagement.getFormFieldManagement(String controlKey)

get FormLayoutManagement

FormLayoutManagement formLayoutManagement = formManagement.formLayoutManagement;

get FormWidgetTreeManagement

FormWidgetTreeManagement formWidgetTreeManagement = formManagement.formWidgetTreeManagement

FormFieldManagement #

check whether a field is ValueField or not

bool isValueField = formFieldManagement.isValueField;

check whether a field is readOnly or not

bool readOnly = formFieldManagement.readOnly;

set readOnly on formFieldManagement

formFieldManagement.readOnly = true|false

check whether a field is removed or not

bool removed = formFieldManagement.removed;

remove|unremove a form field

formFieldManagement.remove = true|false

check whether a field is visible or not

bool visible = formFieldManagement.visible;

set visible on form field

formFieldManagement.visible = true|false

set autovalidateMode on value field


formFieldManagement.autovalidateMode = AutovalidateMode;

set initialValue on value field

formFieldManagement.initialValue = value;

validate a value field


bool isValid = formFieldManagement.validate();

check whether a value field is valid or not

unlike validate method, this method won't display error msg

bool isValid = formFieldManagement.isValid;

reset value field

formFieldManagement.reset();

get padding of a form field

EdgeInsets padding = formFieldManagement.padding;

set padding of a form field


formFieldManagement.padding = padding;

check whether a value field is focused or not

bool hasFocus = formFieldManagement.focus;

Focus|unfocus a form field

formFieldManagement.focus = true|false

get value of a value field

dynamic value = formFieldManagement.value;

set value on a value field

formFieldManagement.setValue(dynamic value,{bool trigger = true});

trigger whether trigger field's onChange callback or not

rebuild a form field's state

see supported states for every field here

formFieldManagement.state = {};

update a form field's state

see supported states for every field here

formFieldManagement.update({});

remove form field's states

see supported states for every field here

formFieldManagement.removeState(Set<String> keys); 

get TextSelectionManagement

TextSelectionManagement textSelectionManagement = formFieldManagement.textSelectionManagement;

set focuslistener on a form field`

formFieldManagement.focusListener = FocusListener();

you should call this method in FormBuilder's initCallback

FormLayoutManagement #

get rows of form


int rows = formLayoutManagement.rows;

get FormLayoutRowManagement

FormLayoutRowManagement formLayoutRowManagement = formLayoutManagement.getFormLayoutRowManagement(int row);

get FormFieldManagement

FormFieldManagement formFieldManagement = formLayoutManagement.getFormFieldManagement(int row,int column);

FormLayoutRowManagement #

get columns of a row

int columns = formLayoutRowManagement.columns;

check whether a row is visible or not

bool visible = formLayoutRowManagement.visible;

set visiable on a row

formLayoutRowManagement.visible = true|false;

set readOnly on a row

formLayoutRowManagement.readOnly = true|false;

remove|unremove a row


formLayoutRowManagement.remove = true|false;

FormWidgetTreeManagement #

check whether a layout is editing or not

bool isEditing = formWidgetTreeManagement.isEditing;

get rows of currrent editing layout

int rows = formWidgetTreeManagement.rows;

get columns of a row in current editing layout

int columns = formWidgetTreeManagement.getColumns(int row);

remove a field in widget tree

formWidgetTreeManagement.remove(String controlKey);

remove a row|field in widget tree

formWidgetTreeManagement.removeAtPosition(int row,{int column});

insert a row at position

void insert(
      {int column,
      int row,
      String controlKey,
      int flex = 1,
      bool visible = true,
      EdgeInsets padding,
      @required Widget field,
      bool inline = true,
      bool insertRow = false})

swap two rows

formWidgetTreeManagement.swapRow(int oldRow, int newRow)

start edit current layout

formWidgetTreeManagement.startEdit();

apply edited layout

formWidgetTreeManagement.apply();

cancel editing layout

formWidgetTreeManagement.cancel();

field states #

ClearableTextFormField #

name Type nullable
labelText String true
hintText String true
keyboardType TextInputType true
autofocus bool false
maxLines int true
maxLength int true
clearable bool false
prefixIcon Widget true
inputFormatters List< TextInputFormatter> true
style TextStyle true
toolbarOptions ToolbarOptions true
selectAllOnFocus bool false
suffixIcons List< Widget> true
textInputAction TextInputAction true
inputDecorationTheme InputDecorationTheme true

DateTimeFormField #

name Type nullable
labelText String true
hintText String true
maxLines int false
useTime bool false
formatter DateTimeFormatter true
style TextStyle true
inputDecorationTheme InputDecorationTheme true

NumberFormField #

name Type nullable
labelText String true
hintText String true
autofocus bool false
clearable bool false
prefixIcon Widget true
style TextStyle true
suffixIcons List< Widget> true
textInputAction TextInputAction true
inputDecorationTheme InputDecorationTheme true
decimal int false
max max true
min min true

CheckboxGroup #

name Type nullable
label String true
split int false
items List< CheckboxGroupItem> false
errorTextPadding EdgeInsets false

RadioGroup #

name Type nullable
label String true
split int false
items List< RadioGroupItem> false
errorTextPadding EdgeInsets false

Selector #

name Type nullable
labelText String true
hintText String true
multi bool false
clearable bool false
inputDecorationTheme InputDecorationTheme true

Slider #

name Type nullable
label String true
max double false
min double false
divisions int false
contentPadding EdgeInsets false

RangeSlider #

name Type nullable
label String true
max double false
min double false
divisions int false
contentPadding EdgeInsets false

SwitchGroup #

name Type nullable
label String true
items List< SwitchGroupItem> false
hasSelectAllSwitch bool false
selectAllPadding EdgeInsets false
errorTextPadding EdgeInsets false

currently support fields #

field return value nullable
TextField string false
CheckboxGroup List< int> false
RadioGroup< T> < T> true
DateTimeField DateTime true
Selector List false
SwitchGroup List< int> false
SwitchInline bool false
NumberField num true
Slider double false
RangeSlider RangeValues false

build your own form field #

TODO

developing

develop plan #

  1. performance test
  2. support more fields
1
likes
0
points
240
downloads

Publisher

unverified uploader

Weekly Downloads

flutter form builder, used to quickly build a row-column based form

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter

More

Packages that depend on form_builder