smart_textform_validator 1.0.4
smart_textform_validator: ^1.0.4 copied to clipboard
A simple and reusable Flutter package for validating text form fields. Includes common validators like required, email, password strength, min/max length, pattern match, and more. Also provides a fl [...]
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:smart_textform_validator/smart_textform_validator.dart';
void main() => runApp(const ExampleApp());
class ExampleApp extends StatelessWidget {
const ExampleApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Validator Example',
home: Scaffold(
appBar: AppBar(title: const Text('Validator Example')),
body: const Padding(
padding: EdgeInsets.all(16.0),
child: ExampleForm(),
),
),
);
}
}
class ExampleForm extends StatefulWidget {
const ExampleForm({super.key});
@override
State<ExampleForm> createState() => _ExampleFormState();
}
class _ExampleFormState extends State<ExampleForm> {
final _formKey = GlobalKey<FormState>();
final _confirmPassword = TextEditingController();
@override
Widget build(BuildContext context) {
return Form(
key: _formKey,
child: Column(
children: [
TextFormField(
decoration: const InputDecoration(labelText: 'Email'),
validator: ValidatorBuilder().required().email().build(),
),
const SizedBox(height: 16),
TextFormField(
decoration: const InputDecoration(labelText: 'Password'),
obscureText: true,
validator:
ValidatorBuilder().required().password().minLength(8).build(),
onChanged: (_) => setState(() {}),
),
const SizedBox(height: 16),
TextFormField(
controller: _confirmPassword,
decoration: const InputDecoration(labelText: 'Confirm Password'),
obscureText: true,
validator: ValidatorBuilder()
.required()
.match(() => _confirmPassword.text)
.build(),
),
const SizedBox(height: 24),
ElevatedButton(
onPressed: () {
if (_formKey.currentState?.validate() ?? false) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('All fields valid!')),
);
}
},
child: const Text('Submit'),
)
],
),
);
}
}