flutter_fa_form_builder 0.9.2 copy "flutter_fa_form_builder: ^0.9.2" to clipboard
flutter_fa_form_builder: ^0.9.2 copied to clipboard

An advanced UI wrapper extension package for Flutter FormBuilder components and tailored custom form controls, specifically optimized for the FlutterArtist ecosystem layouts.

example/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_fa_form_builder/flutter_fa_form_builder.dart';
import 'package:flutter_form_builder/flutter_form_builder.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: const Text("All Custom Fields"),
      ),
      body: SingleChildScrollView(
        child: Padding(
          padding: const EdgeInsets.all(10),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              const SizedBox(height: 20),
              _buildRowSimpleTextField(),
              const SizedBox(height: 20),
              _buildRowSimpleNumberTextField(),
              const SizedBox(height: 20),
              _buildRowSimpleDropdown(),
              const SizedBox(height: 20),
              _buildRowSimpleGroupedDropdown(),
              const SizedBox(height: 20),
              _buildRowSimpleMultiDropdown(),
              const SizedBox(height: 20),
              _buildRowSimpleCheckbox(),
              //
              //
              const SizedBox(height: 20),
              _buildRowSimpleSwitch(),
              //
              const SizedBox(height: 20),
              _buildRowSimpleSwitchNoDecoration(),
              const SizedBox(height: 20),
              _buildRowSimpleCheckboxGroup(),
              const SizedBox(height: 20),
              _buildRowSimpleRadioGroup(),
              const SizedBox(height: 20),
              _buildRowFormBuilderFilterChip(),
              const SizedBox(height: 20),
              _buildFormBuilderDateTimePicker(),
            ],
          ),
        ),
      ),
    );
  }

  Widget _buildInfo(String info) {
    return Text(info, style: const TextStyle(color: Colors.blue));
  }

  Widget _buildFormBuilderDateTimePicker() {
    return _buildBox(
      info: "SimpleDateTimePicker():",
      fieldWithHint: const FaFormBuilderDateTimePicker.topLabel(
        name: 'name1',
        hintText: 'Hint Text',
        labelText: "DateTimePicker",
        initialValue: null,
      ),
      fieldWithValue: FaFormBuilderDateTimePicker.topLabel(
        name: 'name2',
        labelText: "DateTimePicker",
        initialValue: DateTime.now(),
      ),
    );
  }

  Widget _buildRowFormBuilderFilterChip() {
    return _buildBox(
      info: "SimpleFilterChip():",
      fieldWithHint: const FaFormBuilderFilterChips<String>.topLabel(
        name: 'name1',
        hintText: 'Hint Text',
        labelText: "FilterChip",
        initialValue: null,
        options: [
          FormBuilderChipOption(value: 'Option 1', child: Text("Option 1")),
          FormBuilderChipOption(value: 'Option 2', child: Text("Option 2")),
        ],
      ),
      fieldWithValue: const FaFormBuilderFilterChips<String>.topLabel(
        name: 'name2',
        labelText: "FilterChip",
        initialValue: ['Option 1'],
        options: [
          FormBuilderChipOption(value: 'Option 1', child: Text("Option 1")),
          FormBuilderChipOption(value: 'Option 2', child: Text("Option 2")),
        ],
      ),
    );
  }

  Widget _buildRowSimpleCheckboxGroup() {
    return _buildBox(
      info: "SimpleCheckboxGroup():",
      fieldWithHint: FaFormBuilderCheckboxGroup<String>.topLabel(
        name: 'name1',
        hintText: 'Hint Text',
        labelText: "CheckboxGroup",
        initialValue: null,
        options: const ['Option 1', 'Option 2'],
        getItemText: (String item) {
          return item;
        },
      ),
      fieldWithValue: FaFormBuilderCheckboxGroup<String>.topLabel(
        name: 'name2',
        labelText: "CheckboxGroup",
        options: const ['Option 1', 'Option 2'],
        getItemText: (String item) {
          return item;
        },
      ),
    );
  }

  Widget _buildRowSimpleRadioGroup() {
    return _buildBox(
      info: "SimpleRadioGroup():",
      fieldWithHint: FaFormBuilderRadioGroup<String>.topLabel(
        name: 'name1',
        hintText: 'Hint Text',
        labelText: "RadioGroup",
        initialValue: null,
        options: const ['Option 1', 'Option 2'],
        getItemText: (String item) {
          return item;
        },
      ),
      fieldWithValue: FaFormBuilderRadioGroup<String>.topLabel(
        name: 'name2',
        labelText: "RadioGroup",
        options: const ['Option 1', 'Option 2'],
        getItemText: (String item) {
          return item;
        },
      ),
    );
  }

  Widget _buildRowSimpleSwitch() {
    return _buildBox(
      info: "SimpleSwitch():",
      fieldWithHint: const FaFormBuilderScalableSwitch.topLabel(
        name: 'name1',
        hintText: 'Hint Text',
        labelText: "Switch",
        title: Text("Title"),
        initialValue: null,
      ),
      fieldWithValue: const FaFormBuilderScalableSwitch.topLabel(
        name: 'name2',
        title: Text("Title"),
        labelText: "Switch",
        initialValue: true,
      ),
    );
  }

  Widget _buildRowSimpleSwitchNoDecoration() {
    return _buildBox(
      info: "SimpleSwitch.withoutDecoration():",
      fieldWithHint: const FaFormBuilderScalableSwitch.withoutDecoration(
        name: 'name1',
        title: Text("Title"),
        initialValue: null,
      ),
      fieldWithValue: const FaFormBuilderScalableSwitch.withoutDecoration(
        name: 'name2',
        title: Text("Title"),
        initialValue: true,
      ),
    );
  }

  Widget _buildRowSimpleCheckbox() {
    return _buildBox(
      info: "SimpleCheckbox():",
      fieldWithHint: const FaFormBuilderCheckbox.topLabel(
        name: 'name1',
        hintText: 'Hint Text',
        labelText: "Checkbox",
        title: Text("Title"),
        initialValue: null,
      ),
      fieldWithValue: const FaFormBuilderCheckbox.topLabel(
        name: 'name2',
        title: Text("Title"),
        labelText: "Checkbox",
        initialValue: true,
      ),
    );
  }

  Widget _buildRowSimpleDropdown() {
    return _buildBox(
      info: "SimpleDropdown():",
      fieldWithHint: FaFormBuilderDropdown<String>.topLabel(
        name: 'name1',
        hintText: 'Hint Text',
        labelText: "Dropdown",
        items: const [],
        getItemText: (String item) {
          return item;
        },
      ),
      fieldWithValue: FaFormBuilderDropdown<String>.topLabel(
        name: 'name2',
        labelText: "Dropdown",
        initialValue: "Test",
        getItemText: (String item) {
          return item;
        },
        items: const ["Test", "Test 2"],
      ),
    );
  }

  Widget _buildRowSimpleGroupedDropdown() {
    return _buildBox(
      info: "SimpleGroupedDropdown():",
      fieldWithHint: FaFormBuilderGroupedDropdown<String>.topLabel(
        name: 'name1',
        hintText: 'Hint Text',
        labelText: "GroupedDropdown",
        // emptyItem: "",
        groups: const [],
        getItemText: (String item) {
          return item;
        },
      ),
      fieldWithValue: FaFormBuilderGroupedDropdown<String>.topLabel(
        name: 'name2',
        labelText: "GroupedDropdown",
        initialValue: "Item 1.1",
        getItemText: (String item) {
          return item;
        },
        // emptyItem: "",
        groups: [
          CustomDropdownMenuGroup(
            title: 'Group 1',
            items: ["Item 1.1", "Item 1.2"],
          ),
          CustomDropdownMenuGroup(
            title: 'Group 2',
            items: ["Item 2.1", "Item 2.2"],
          ),
        ],
      ),
    );
  }

  Widget _buildRowSimpleMultiDropdown() {
    return _buildBox(
      info: "SimpleMultiDropdown():",
      fieldWithHint: FaFormBuilderMultiDropdown<String>.topLabel(
        name: 'name1',
        hintText: 'Hint Text',
        labelText: "MultiDropdown",
        dropdownTitle: 'Dropdown Title',
        items: const [],
        getItemText: (String item) {
          return item;
        },
      ),
      fieldWithValue: FaFormBuilderMultiDropdown<String>.topLabel(
        name: 'name2',
        labelText: "MultiDropdown",
        dropdownTitle: 'Dropdown Title',
        getItemText: (String item) {
          return item;
        },
        items: const [
          "This is Option 1",
          "This is very very very very long Option 2",
          "This is Option 3",
          "This is  very very very very long Option 4",
          "This is Option 5",
          "This is Option 6",
          "This is Option 7",
          "This is Option 8",
        ],
      ),
    );
  }

  Widget _buildRowSimpleNumberTextField() {
    return _buildBox(
      info: "SimpleNumberTextField():",
      fieldWithHint: const FaFormBuilderNumberTextField.topLabel(
        name: '_test',
        hintText: 'Hint Text',
        labelText: "NumberTextField",
      ),
      fieldWithValue: const FaFormBuilderNumberTextField.topLabel(
        name: '_test',
        hintText: 'Hint Text',
        labelText: "NumberTextField",
        initialValue: 1234567,
      ),
    );
  }

  Widget _buildRowSimpleTextField() {
    return _buildBox(
      info: "SimpleTextField():",
      fieldWithHint: const FaFormBuilderTextField.topLabel(
        name: '_test',
        hintText: 'Hint Text',
        labelText: "TextField",
      ),
      fieldWithValue: FaFormBuilderTextField.topLabel(
        name: '_test',
        hintText: 'Hint Text',
        labelText: "TextField",
        initialValue: "This is a Text",
      ),
    );
  }

  Widget _buildBox({
    required String info,
    required Widget fieldWithHint,
    required Widget fieldWithValue,
  }) {
    return Container(
      padding: const EdgeInsets.all(10),
      decoration: BoxDecoration(
        color: Colors.indigo.withAlpha(20),
        borderRadius: BorderRadius.circular(4),
        border: Border.all(color: Colors.indigo.withAlpha(30)),
      ),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          _buildInfo(info),
          const SizedBox(height: 10),
          Row(
            crossAxisAlignment: CrossAxisAlignment.end,
            children: [
              const Expanded(child: FaFormBuilderTextField(name: '_test')),
              const SizedBox(width: 10),
              Expanded(child: fieldWithHint),
              const SizedBox(width: 10),
              Expanded(child: fieldWithValue),
            ],
          ),
        ],
      ),
    );
  }
}
0
likes
130
points
156
downloads

Documentation

API reference

Publisher

verified publishero7planning.org

Weekly Downloads

An advanced UI wrapper extension package for Flutter FormBuilder components and tailored custom form controls, specifically optimized for the FlutterArtist ecosystem layouts.

Homepage

License

BSD-3-Clause (license)

Dependencies

collection, flutter, flutter_form_builder, form_builder_autocomplete, form_builder_file_picker, form_builder_image_picker, form_builder_multi_dropdown, form_builder_number_text_field, form_builder_validators, image_picker, intl

More

Packages that depend on flutter_fa_form_builder