// 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:flutter_bloc/flutter_bloc.dart';
import 'package:form_bloc_example/constants.dart';
import 'package:form_bloc_example/cubit/custom_form_cubit.dart';
import 'package:form_bloc_example/sign_up/sign_up_page.dart';
import 'package:wyatt_form_bloc/wyatt_form_bloc.dart';
class App extends StatelessWidget {
  const App({Key? key}) : super(key: key);
  static List getNormalEntries() {
    return const [
      FormEntry(formFieldName, Name.pure()),
      FormEntry(formFieldEmail, Email.pure()),
      FormEntry(formFieldPhone, Phone.pure()),
      FormEntry(
          formFieldList, ListOption.pure(defaultValue: ['checkbox3'])),
      FormEntry(formFieldRadio, TextString.pure()),
      FormEntry(formFieldPro, Boolean.pure(), name: 'business'),
      FormEntry(formFieldHidden, Boolean.pure(), export: false),
    ];
  }
  static List getBusinessEntries() {
    const entries = [
      FormEntry(formFieldSiren, Siren.pure()),
      FormEntry(formFieldIban, Iban.pure()),
    ];
    return getNormalEntries() + entries;
  }
  static FormData getNormalFormData() {
    return FormData(getNormalEntries());
  }
  static FormData getProFormData() {
    return FormData(getBusinessEntries());
  }
  @override
  Widget build(BuildContext context) {
    FormDataCubit _formCubit = CustomFormCubit(entries: getNormalFormData());
    return BlocProvider(
      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(),
    );
  }
}