glade_forms 4.0.0 copy "glade_forms: ^4.0.0" to clipboard
glade_forms: ^4.0.0 copied to clipboard

A universal way to define form validators with support of translations.

example/lib/example.dart

import 'package:flutter/material.dart';
import 'package:glade_forms/glade_forms.dart';

// ! When updating dont forget to update README.md quickstart as well
class _Model extends GladeModel {
  late GladeStringInput name;
  late GladeIntInput age;
  late GladeStringInput email;
  late GladeIntInput income;

  @override
  List<GladeInput<Object?>> get inputs => [name, age, email, income];

  @override
  void initialize() {
    name = GladeStringInput(inputKey: 'name');
    age = GladeIntInput(value: 0, inputKey: 'age');
    email = GladeStringInput(validator: (validator) => (validator..isEmail()).build(), inputKey: 'email');
    income = GladeIntInput(
      value: 10000,
      validator: (validator) => (validator..isMin(min: 1000)).build(),
      inputKey: 'income',
    );

    super.initialize();
  }
}

class Example extends StatelessWidget {
  const Example({super.key});

  @override
  Widget build(BuildContext context) {
    return GladeFormBuilder.create(
      // ignore: avoid-undisposed-instances, handled by GladeFormBuilder
      create: (context) => _Model(),
      builder: (context, model, _) => Padding(
        padding: const EdgeInsets.all(32),
        child: Form(
          autovalidateMode: AutovalidateMode.onUserInteraction,
          child: Column(
            children: [
              TextFormField(
                controller: model.name.controller,
                validator: model.name.textFormFieldInputValidator,
                decoration: const InputDecoration(labelText: 'Name'),
              ),
              TextFormField(
                controller: model.age.controller,
                validator: model.age.textFormFieldInputValidator,
                decoration: const InputDecoration(labelText: 'Age'),
              ),
              TextFormField(
                controller: model.email.controller,
                validator: model.email.textFormFieldInputValidator,
                decoration: const InputDecoration(labelText: 'Email'),
              ),
              TextFormField(
                controller: model.income.controller,
                validator: model.income.textFormFieldInputValidator,
                decoration: const InputDecoration(labelText: 'income'),
              ),
              const SizedBox(height: 10),
              ElevatedButton(
                // ignore: no-empty-block, empty function, just for example
                onPressed: model.isValid ? () {} : null,
                child: const Text('Save'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
copied to clipboard
17
likes
150
points
264
downloads
screenshot

Publisher

verified publishernetglade.cz

Weekly Downloads

2024.09.26 - 2025.04.10

A universal way to define form validators with support of translations.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

clock, collection, equatable, flutter, meta, netglade_utils, provider

More

Packages that depend on glade_forms