107 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| // Copyright (C) 2022 WYATT GROUP
 | |
| // Please see the AUTHORS file for details.
 | |
| //
 | |
| // This program is free software: you can redistribute it and/or modify
 | |
| // it under the terms of the GNU General Public License as published by
 | |
| // the Free Software Foundation, either version 3 of the License, or
 | |
| // any later version.
 | |
| //
 | |
| // This program is distributed in the hope that it will be useful,
 | |
| // but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 | |
| // GNU General Public License for more details.
 | |
| //
 | |
| // You should have received a copy of the GNU General Public License
 | |
| // along with this program. If not, see <https://www.gnu.org/licenses/>.
 | |
| 
 | |
| import 'package:flutter/material.dart';
 | |
| import 'package:flutter_bloc/flutter_bloc.dart';
 | |
| import 'package:form_bloc_example/app/metadata.dart';
 | |
| import 'package:form_bloc_example/constants.dart';
 | |
| import 'package:form_bloc_example/simple_custom_form_cubit/simple_custom_form_cubit.dart';
 | |
| import 'package:form_bloc_example/sign_up/sign_up_page.dart';
 | |
| import 'package:wyatt_form_bloc/wyatt_form_bloc.dart';
 | |
| 
 | |
| const blue = Metadata(category: Category.perso);
 | |
| const red = Metadata(category: Category.business);
 | |
| 
 | |
| class App extends StatelessWidget {
 | |
|   const App({Key? key}) : super(key: key);
 | |
| 
 | |
|   static List<FormInput> getNormalEntries() {
 | |
|     return [
 | |
|       FormInput(formFieldName, const Name.pure('Test'),
 | |
|           metadata: const FormInputMetadata<Metadata>(extra: blue)),
 | |
|       FormInput(formFieldEmail, const Email.pure(),
 | |
|           metadata: const FormInputMetadata<Metadata>(extra: blue)),
 | |
|       FormInput(
 | |
|           formFieldList, const ListOption<String>.pure(choices: ['c1', 'c2', 'c3'],defaultValue: 'c3')),
 | |
|       FormInput(formFieldRadio, const TextString.pure()),
 | |
|       FormInput(formFieldPro, const Boolean.pure(),
 | |
|           metadata: const FormInputMetadata<Metadata>(name: 'business')),
 | |
|       FormInput(formFieldHidden, const Boolean.pure(),
 | |
|           metadata:
 | |
|               const FormInputMetadata<Metadata>(export: false, extra: blue)),
 | |
|     ];
 | |
|   }
 | |
| 
 | |
|   static List<FormInput> getBusinessEntries() {
 | |
|     final entries = [
 | |
|       FormInput(formFieldPhone, const Phone.pure(),
 | |
|           metadata: const FormInputMetadata<Metadata>(extra: red)),
 | |
|     ];
 | |
|     return getNormalEntries() + entries;
 | |
|   }
 | |
| 
 | |
|   static WyattForm getNormalFormData() {
 | |
|     return WyattFormImpl(getNormalEntries(), name: formSignUp);
 | |
|   }
 | |
| 
 | |
|   static WyattForm getProFormData() {
 | |
|     return WyattFormImpl(getBusinessEntries(), name: formSignUp);
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     FormRepository formRepository = FormRepositoryImpl()
 | |
|       ..registerForm(getNormalFormData());
 | |
|     
 | |
|     // FormRepository formRepository = FormRepositoryImpl()
 | |
|     //   ..registerForm(WyattFormImpl([
 | |
|     //     FormInput(formFieldName, const Name.pure('Test'),
 | |
|     //         metadata: const FormInputMetadata<Metadata>(extra: blue)),
 | |
|     //   ], name: formSignUp));
 | |
| 
 | |
|     SimpleCustomFormCubit formCubit = SimpleCustomFormCubit(
 | |
|       formRepository,
 | |
|       formSignUp,
 | |
|     );
 | |
| 
 | |
|     return RepositoryProvider<FormRepository>.value(
 | |
|       value: formRepository,
 | |
|       child: BlocProvider<SimpleCustomFormCubit>(
 | |
|         create: (context) => formCubit,
 | |
|         child: const WidgetTree(),
 | |
|       ),
 | |
|     );
 | |
|   }
 | |
| }
 | |
| 
 | |
| class WidgetTree extends StatelessWidget {
 | |
|   const WidgetTree({Key? key}) : super(key: key);
 | |
| 
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     return MaterialApp(
 | |
|       theme: ThemeData(
 | |
|         primarySwatch: Colors.blue,
 | |
|         buttonTheme: const ButtonThemeData(
 | |
|           buttonColor: Colors.blue,
 | |
|           textTheme: ButtonTextTheme.primary,
 | |
|         ),
 | |
|       ),
 | |
|       home: const SignUpPage(),
 | |
|     );
 | |
|   }
 | |
| }
 |