refactor(form): refactor simple example

This commit is contained in:
2022-11-10 01:06:25 -05:00
parent 7a056ac38e
commit 68a582c3ad
5 changed files with 88 additions and 12 deletions
@@ -36,9 +36,10 @@ Color computeColor(Metadata? meta) {
class _NameInput extends StatelessWidget {
@override
Widget build(BuildContext context) {
return InputBuilderMetadata<SimpleCustomFormCubit, Metadata>(
return InputBuilderTextController<SimpleCustomFormCubit, String?, Metadata>(
field: formFieldName,
builder: (context, cubit, state, field, inputValid, metadata) {
builder:
(context, cubit, state, field, inputValid, controller, metadata) {
final meta = state.form.metadataOf<Metadata>(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,
@@ -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 <https://www.gnu.org/licenses/>.
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<SimpleCustomFormCubit, String?, Metadata>(
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),
],
);
}
}