Skip to content

'Construyendo un formulario con validaciones' page issue #609

@pacomgh

Description

@pacomgh

Page URL: https://flutter-es.io/docs/cookbook/forms/validation.html
Page source: https://github.com/flutter-es/website/tree/dash/src_es/docs/cookbook/forms/validation.md

No es precisamente un bug en la página pero vi que hay algunos widgets deprecados mientras estaba haciendo esta práctica(No sabia por donde comentar eso).

El código que he hecho es el siguiente en donde están algunas cosas corregidas como el botón, el snackbar y algunas otras; además, agregue un icono y estilos al textformfield para que se vea como los diseños más recientes de android.

El código con correcciones esta subido en este repositorio:
Form con validaciones

Anexo el código que he creado y complementado.

código
import 'package:flutter/material.dart';
import 'dart:ui';

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

class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);

@OverRide
Widget build(BuildContext context) {
final appTitle = 'Mi primera app en flutter';

return MaterialApp(
title: appTitle,
home: Scaffold(
appBar: AppBar(
title: Text(appTitle),
),
body: MiForm(),
),
);
}
}

//widget del form
class MiForm extends StatefulWidget {
@OverRide
MiFormState createState() {
return MiFormState();
}
}

//esta clase contendra los datos relacionados al formulario
class MiFormState extends State{
//clave identificación del widget, con esta validamos el form
final _formKey = GlobalKey();

@OverRide
Widget build(BuildContext context) {
//creamos el form usando el key que creamos antes
return Form(
key: _formKey,
child: Container(
padding: EdgeInsets.symmetric(horizontal: 15),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
TextFormField(
decoration: const InputDecoration(
labelText: 'Nombre',
hintText: 'Ingresa tu nombre',
icon: Icon(Icons.person)
),
validator: (value){
if(value!.isEmpty)
return "Por favor ingresa algún texto";
}
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 16.0),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Colors.blue,
onPrimary: Colors.white,
elevation: 8.0,
padding: EdgeInsets.symmetric(vertical: 15.0),
),
onPressed: (){
//devuelve true si el formulario es valido
if(_formKey.currentState!.validate()){
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text("Formulario valido")));
}
else
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("Algún campo esta vacío")));
},
child: Text("Enviar"),
),
)
]
),
)
);
}
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions