ec_validations 0.0.14 copy "ec_validations: ^0.0.14" to clipboard
ec_validations: ^0.0.14 copied to clipboard

A library for validating Ecuadorian identification documents (ID card and RUC).

example/main.dart

import 'package:flutter/material.dart';

import 'package:ec_validations/ec_validations.dart';

void main() => runApp(const MyApp());

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

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: 'EC Validations DNI',
      debugShowCheckedModeBanner: false,
      home: DniValidatorPage(),
    );
  }
}

class DniValidatorPage extends StatefulWidget {
  const DniValidatorPage({super.key});

  @override
  State<DniValidatorPage> createState() => _DniValidatorPageState();
}

class _DniValidatorPageState extends State<DniValidatorPage> {
  final _formKey = GlobalKey<FormState>();

  final List<String> identifications = [
    '0195566046',
    '0105566039',
    '0105566046',
    '01A5566046',
    '3212121212',
    '3212121212',
    '2712121212',
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text(
            'EC DNI Validator',
            style: TextStyle(color: Colors.white),
          ),
          backgroundColor: Colors.purple,
        ),
        body: SingleChildScrollView(
          child: Padding(
            padding: const EdgeInsets.all(8.0),
            child: Column(
              mainAxisAlignment: MainAxisAlignment.start,
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                const Text(
                  'Form',
                  style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
                ),
                Form(
                    key: _formKey,
                    child: Column(
                      children: [
                        const SizedBox(
                          height: 6,
                        ),
                        TextFormField(
                          keyboardType: TextInputType.number,
                          decoration: InputDecoration(
                              labelText: 'DNI',
                              hintText: '0100000000',
                              hintStyle: const TextStyle(color: Colors.grey),
                              border: OutlineInputBorder(
                                borderRadius: BorderRadius.circular(24),
                              ),
                              errorMaxLines: 3,
                          ),
                          validator: (value) {
                            final result = DniValidator.isValid(value ?? '');
                            return result.isValid ? null : result.errorMessage;
                          },
                        ),
                        const SizedBox(height: 10),
                        _formKey.currentState?.validate() == true
                        ? const Text(
                          'Valid Dni',
                          style: TextStyle(
                            color: Colors.green,
                            fontWeight: FontWeight.w400,
                            fontSize: 20,
                          )
                        )
                        : const SizedBox(),
                        ElevatedButton(
                          onPressed: () {
                            _formKey.currentState?.validate();
                            setState(() {});
                          },
                          child: const Text('Validate'),
                        ),
                        TextButton(
                          onPressed: () {
                            _formKey.currentState?.reset();
                          },
                          child: const Text(
                            'Reset',
                            style: TextStyle(
                              color: Colors.purple,
                            ),
                          ),
                        )
                      ],
                    )),
                const Text(
                  'Examples',
                  style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
                ),
                ListView.builder(
                  itemCount: identifications.length,
                  shrinkWrap: true,
                  physics: const NeverScrollableScrollPhysics(),
                  itemBuilder: (context, index) {
                    final identification = identifications[index];
                    final result = DniValidator.isValid(identification);
                    return Card(
                      child: ListTile(
                        title: Text(identification),
                        subtitle: Column(
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: [
                            Text('isValid: ${result.isValid.toString()}',
                                style: const TextStyle()),
                            Text(
                                'Error code: ${result.typeCodeError?.toString() ?? ''}',
                                style: const TextStyle()),
                            Text('Error message: ${result.errorMessage ?? ''}',
                                style: const TextStyle()),
                          ],
                        ),
                      ),
                    );
                  },
                ),
              ],
            ),
          ),
        ));
  }
}
1
likes
160
points
78
downloads

Publisher

unverified uploader

Weekly Downloads

A library for validating Ecuadorian identification documents (ID card and RUC).

Homepage
Repository (GitHub)
View/report issues

Topics

#ecuador #dni #ruc #validator #cedula

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on ec_validations