diff --git a/packages/wyatt_form_bloc/example/lib/app/app.dart b/packages/wyatt_form_bloc/example/lib/app/app.dart index f9000f08..63c35292 100644 --- a/packages/wyatt_form_bloc/example/lib/app/app.dart +++ b/packages/wyatt_form_bloc/example/lib/app/app.dart @@ -30,12 +30,12 @@ class App extends StatelessWidget { static List getNormalEntries() { return [ - FormInput(formFieldName, const Name.pure(), + FormInput(formFieldName, const Name.pure('Test'), metadata: const FormInputMetadata(extra: blue)), FormInput(formFieldEmail, const Email.pure(), metadata: const FormInputMetadata(extra: blue)), - FormInput(formFieldList, - const ListOption.pure(defaultValue: 'c3')), + FormInput( + formFieldList, const ListOption.pure(choices: ['c1', 'c2', 'c3'],defaultValue: 'c3')), FormInput(formFieldRadio, const TextString.pure()), FormInput(formFieldPro, const Boolean.pure(), metadata: const FormInputMetadata(name: 'business')), @@ -54,20 +54,35 @@ class App extends StatelessWidget { } static WyattForm getNormalFormData() { - return WyattFormImpl(getNormalEntries()); + return WyattFormImpl(getNormalEntries(), name: formSignUp); } static WyattForm getProFormData() { - return WyattFormImpl(getBusinessEntries()); + return WyattFormImpl(getBusinessEntries(), name: formSignUp); } @override Widget build(BuildContext context) { - SimpleCustomFormCubit formCubit = SimpleCustomFormCubit(getNormalFormData()); + FormRepository formRepository = FormRepositoryImpl() + ..registerForm(getNormalFormData()); + + // FormRepository formRepository = FormRepositoryImpl() + // ..registerForm(WyattFormImpl([ + // FormInput(formFieldName, const Name.pure('Test'), + // metadata: const FormInputMetadata(extra: blue)), + // ], name: formSignUp)); - return BlocProvider( - create: (context) => formCubit, - child: const WidgetTree(), + SimpleCustomFormCubit formCubit = SimpleCustomFormCubit( + formRepository, + formSignUp, + ); + + return RepositoryProvider.value( + value: formRepository, + child: BlocProvider( + create: (context) => formCubit, + child: const WidgetTree(), + ), ); } } diff --git a/packages/wyatt_form_bloc/example/lib/constants.dart b/packages/wyatt_form_bloc/example/lib/constants.dart index 573b5ef6..a52efc92 100644 --- a/packages/wyatt_form_bloc/example/lib/constants.dart +++ b/packages/wyatt_form_bloc/example/lib/constants.dart @@ -14,6 +14,8 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +const String formSignUp = 'signUp'; + const String formFieldName = 'name'; const String formFieldPhone = 'phone'; const String formFieldEmail = 'email'; diff --git a/packages/wyatt_form_bloc/example/lib/sign_up/widgets/sign_up_form.dart b/packages/wyatt_form_bloc/example/lib/sign_up/widgets/sign_up_form.dart index 14ac7fbc..c1727ce5 100644 --- a/packages/wyatt_form_bloc/example/lib/sign_up/widgets/sign_up_form.dart +++ b/packages/wyatt_form_bloc/example/lib/sign_up/widgets/sign_up_form.dart @@ -36,9 +36,10 @@ Color computeColor(Metadata? meta) { class _NameInput extends StatelessWidget { @override Widget build(BuildContext context) { - return InputBuilderMetadata( + return InputBuilderTextController( field: formFieldName, - builder: (context, cubit, state, field, inputValid, metadata) { + builder: + (context, cubit, state, field, inputValid, controller, metadata) { final meta = state.form.metadataOf(field).extra; final color = computeColor(meta); return Row( @@ -57,6 +58,7 @@ class _NameInput extends StatelessWidget { SizedBox( width: MediaQuery.of(context).size.width - 45, child: TextField( + controller: controller, onChanged: (value) => cubit.dataChanged(field, Name.dirty(value)), keyboardType: TextInputType.name, diff --git a/packages/wyatt_form_bloc/example/lib/sign_up/widgets/simple_sign_up_form.dart b/packages/wyatt_form_bloc/example/lib/sign_up/widgets/simple_sign_up_form.dart new file mode 100644 index 00000000..a3a93310 --- /dev/null +++ b/packages/wyatt_form_bloc/example/lib/sign_up/widgets/simple_sign_up_form.dart @@ -0,0 +1,57 @@ +// 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 . + +import 'package:flutter/material.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:wyatt_form_bloc/wyatt_form_bloc.dart'; + +class _NameInput extends StatelessWidget { + @override + Widget build(BuildContext context) { + return InputBuilderTextController( + field: formFieldName, + builder: + (context, cubit, state, field, inputValid, controller, metadata) { + return TextField( + controller: controller, + onChanged: (value) => cubit.dataChanged(field, Name.dirty(value)), + keyboardType: TextInputType.name, + decoration: InputDecoration( + labelText: 'name', + helperText: '', + errorText: !inputValid ? 'invalid name' : null, + ), + ); + }, + ); + } +} + +class SimpleSignUpForm extends StatelessWidget { + const SimpleSignUpForm({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Column( + children: [ + _NameInput(), + const SizedBox(height: 8), + ], + ); + } +} diff --git a/packages/wyatt_form_bloc/example/lib/simple_custom_form_cubit/simple_custom_form_cubit.dart b/packages/wyatt_form_bloc/example/lib/simple_custom_form_cubit/simple_custom_form_cubit.dart index b8b0dfca..bb23ed9a 100644 --- a/packages/wyatt_form_bloc/example/lib/simple_custom_form_cubit/simple_custom_form_cubit.dart +++ b/packages/wyatt_form_bloc/example/lib/simple_custom_form_cubit/simple_custom_form_cubit.dart @@ -19,7 +19,7 @@ import 'dart:developer'; import 'package:wyatt_form_bloc/wyatt_form_bloc.dart'; class SimpleCustomFormCubit extends FormDataCubitImpl { - SimpleCustomFormCubit(super.form) : super(); + SimpleCustomFormCubit(super._formRepository, super._formName) : super(); @override Future submit() {