flutter_floc 0.0.0-dev.9 copy "flutter_floc: ^0.0.0-dev.9" to clipboard
flutter_floc: ^0.0.0-dev.9 copied to clipboard

Flutter Floc helps you to create a form within a minute, reducing the boilerplate and providing helpers to link the view to the form state.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_floc/flutter_floc.dart';
import 'package:flutter_floc_example/blocs/example_form_bloc.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Home(),
    );
  }
}

class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SingleChildScrollView(
        child: Container(
          padding: EdgeInsets.all(16),
          height: MediaQuery.of(context).size.height,
          child: BlocProvider(
            create: (context) => ExampleFormBloc(),
            child: ExampleForm(),
          ),
        ),
      ),
    );
  }
}

class ExampleForm extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return FormBlocListener<ExampleFormBloc, String>(
      onSubmitting: (context, state) {
        print('Loading...');
      },
      onSuccess: (context, state) {
        print('Success !');
        print(state.response);
      },
      onFailure: (context, state) {
        print('Failure !');
        print(state.response);
      },
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          TimePickerFieldBlocBuilder<ExampleFormBloc>(
            fieldName: 'time',
            format: 'HH:mm',
            decoration: InputDecoration(hintText: 'Time selector'),
            clearable: true,
          ),
          DatePickerFieldBlocBuilder<ExampleFormBloc>(
            fieldName: 'date',
            format: 'dd/MM/yyyy',
            decoration: InputDecoration(hintText: 'Date selector'),
            clearable: true,
          ),
          DateRangePickerFieldBlocBuilder<ExampleFormBloc>(
              fieldName: 'dateRange',
              format: 'dd/MM/yyyy',
              decoration: InputDecoration(hintText: 'Date range selector'),
              clearable: true),
          DropdownButtonFormFieldBlocBuilder<ExampleFormBloc, int>(
            fieldName: 'dropdown',
            hint: Text('Select an option'),
            items: [1, 2, 3, 4, 6],
            itemBuilder: (context, item) {
              return DropdownMenuItem(
                child: Text(item.toString()),
                value: item,
              );
            },
          ),
          TextFieldBlocBuilder<ExampleFormBloc>(
            fieldName: 'username',
            decoration: InputDecoration(hintText: 'Username'),
          ),
          TextFieldBlocBuilder<ExampleFormBloc>(
            fieldName: 'password',
            obscureText: true,
            suffixButton: SuffixButton.obscureText,
            decoration: InputDecoration(hintText: 'Password'),
          ),
          TextFieldBlocBuilder<ExampleFormBloc>(
            fieldName: 'confirmPassword',
            obscureText: true,
            decoration: InputDecoration(
              hintText: 'Confirm password',
            ),
          ),
          SwitchFieldBlocBuilder<ExampleFormBloc>(
            fieldName: 'acceptSwitch',
            body: Text('Accept ?'),
          ),
          CheckboxFieldBlocBuilder<ExampleFormBloc>(
            fieldName: 'acceptCheckbox',
            body: Text('Accept ?'),
          ),
          MaterialButton(
            onPressed: () {
              context.read<ExampleFormBloc>().validate();
            },
            child: Text('Validate'),
          ),
          MaterialButton(
            onPressed: () {
              context.read<ExampleFormBloc>().reset();
            },
            child: Text('Reset'),
          ),
          MaterialButton(
            onPressed: () {
              context.read<ExampleFormBloc>().submit();
            },
            child: Text('Submit'),
          )
        ],
      ),
    );
  }
}
10
likes
110
pub points
0%
popularity

Publisher

verified publisherbilik.fr

Flutter Floc helps you to create a form within a minute, reducing the boilerplate and providing helpers to link the view to the form state.

Repository (GitHub)
View/report issues

Documentation

API reference

License

BSD-3-Clause (LICENSE)

Dependencies

bloc_test, equatable, flutter, flutter_bloc, intl, meta

More

Packages that depend on flutter_floc