flutter_form_builder 10.2.0
flutter_form_builder: ^10.2.0 copied to clipboard
This package helps in creation of forms in Flutter by removing the boilerplate code, reusing validation, react to changes, and collect final user input.
import 'package:example/sources/conditional_fields.dart'; import 'package:example/sources/decorated_radio_checkbox.dart'; import 'package:example/sources/dynamic_fields.dart'; import 'package:example/sources/grouped_radio_checkbox.dart'; import 'package:example/sources/related_fields.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:form_builder_validators/form_builder_validators.dart'; import 'code_page.dart'; import 'sources/complete_form.dart'; import 'sources/custom_fields.dart'; import 'sources/signup_form.dart'; void main() => runApp(const MyApp()); class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter FormBuilder Demo', debugShowCheckedModeBanner: false, localizationsDelegates: const [ FormBuilderLocalizations.delegate, ...GlobalMaterialLocalizations.delegates, GlobalWidgetsLocalizations.delegate, ], supportedLocales: FormBuilderLocalizations.supportedLocales, theme: ThemeData.light().copyWith( appBarTheme: const AppBarTheme().copyWith( backgroundColor: Colors.blue.shade200, ), ), home: const _HomePage(), ); } } class _HomePage extends StatelessWidget { const _HomePage(); @override Widget build(BuildContext context) { return CodePage( title: 'Flutter Form Builder', child: ListView( children: <Widget>[ ListTile( title: const Text('Complete Form'), trailing: const Icon(Icons.arrow_right_sharp), onTap: () { Navigator.of(context).push( MaterialPageRoute( builder: (context) { return const CodePage( title: 'Complete Form', child: CompleteForm(), ); }, ), ); }, ), const Divider(), ListTile( title: const Text('Custom Fields'), trailing: const Icon(Icons.arrow_right_sharp), onTap: () { Navigator.of(context).push( MaterialPageRoute( builder: (context) { return const CodePage( title: 'Custom Fields', child: CustomFields(), ); }, ), ); }, ), const Divider(), ListTile( title: const Text('Signup Form'), trailing: const Icon(Icons.arrow_right_sharp), onTap: () { Navigator.of(context).push( MaterialPageRoute( builder: (context) { return const CodePage( title: 'Signup Form', child: SignupForm(), ); }, ), ); }, ), const Divider(), ListTile( title: const Text('Dynamic Form'), trailing: const Icon(Icons.arrow_right_sharp), onTap: () { Navigator.of(context).push( MaterialPageRoute( builder: (context) { return const CodePage( title: 'Dynamic Form', child: DynamicFields(), ); }, ), ); }, ), const Divider(), ListTile( title: const Text('Conditional Form'), trailing: const Icon(Icons.arrow_right_sharp), onTap: () { Navigator.of(context).push( MaterialPageRoute( builder: (context) { return const CodePage( title: 'Conditional Form', child: ConditionalFields(), ); }, ), ); }, ), const Divider(), ListTile( title: const Text('Related Fields'), trailing: const Icon(Icons.arrow_right_sharp), onTap: () { Navigator.of(context).push( MaterialPageRoute( builder: (context) { return const CodePage( title: 'Related Fields', child: RelatedFields(), ); }, ), ); }, ), const Divider(), ListTile( title: const Text('Radio Checkbox itemDecorator'), trailing: const Icon(Icons.arrow_right_sharp), onTap: () { Navigator.of(context).push( MaterialPageRoute( builder: (context) { return const CodePage( title: 'ItemDecorators', child: DecoratedRadioCheckbox(), ); }, ), ); }, ), const Divider(), ListTile( title: const Text('GroupedRadio and GroupedCheckbox Orientation'), trailing: const Icon(Icons.arrow_right_sharp), onTap: () { Navigator.of(context).push( MaterialPageRoute( builder: (context) { return const CodePage( title: 'GroupedRadio and GroupedCheckbox', child: GroupedRadioCheckbox(), ); }, ), ); }, ), ], ), ); } }