Flutter表单验证插件validation_form的使用

Flutter表单验证插件validation_form的使用

简化Flutter项目中的表单管理,可以使用Cubit架构。以下是使用validation_form插件的详细指南。

安装

要将此库添加到你的Flutter项目中,在pubspec.yaml文件中添加以下依赖项:

dependencies:
  validation_form: "^0.0.6"

然后运行flutter pub get以获取该库。

如何使用

首先在Dart代码中导入库:

import 'package:validation_form/validation_form.dart';

接下来是一个完整的示例,展示了如何使用validation_form插件来创建一个登录表单。

示例代码

import 'package:example/login.dart';
import 'package:example/profile.dart';
import 'package:flutter/material.dart';
import 'package:validation_form/validation_form.dart';

void main() => runApp(MaterialApp(title: 'Flutter Demo', home: const Home()));

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

  [@override](/user/override)
  State<Home> createState() => _HomeState();
}

class _HomeState extends State<Home> {
  [@override](/user/override)
  void initState() {
    // 自定义验证消息
    ValidationMessages.messages = {
      ValidationNames.required: (attribute, [_ = const []]) {
        return '字段 $attribute 是必填项';
      }
    };

    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Row(
          mainAxisAlignment: MainAxisAlignment.spaceAround,
          children: [
            ElevatedButton(
              child: const Text('登录'),
              onPressed: () {
                Navigator.of(context).push(
                  MaterialPageRoute(builder: (context) => const Login()),
                );
              },
            ),
            ElevatedButton(
              child: const Text('个人资料'),
              onPressed: () {
                Navigator.of(context).push(
                  MaterialPageRoute(builder: (context) => const Profile()),
                );
              },
            ),
          ],
        ),
      ),
    );
  }
}

登录页面示例代码

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

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

  [@override](/user/override)
  State<Login> createState() => _LoginState();
}

class _LoginState extends State<Login> {
  final _formKey = GlobalKey<FormState>();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('登录'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Form(
          key: _formKey,
          child: Column(
            children: [
              TextFormField(
                decoration: InputDecoration(labelText: '用户名'),
                validator: (value) {
                  if (value == null || value.isEmpty) {
                    return '请输入用户名';
                  }
                  return null;
                },
              ),
              TextFormField(
                decoration: InputDecoration(labelText: '密码'),
                obscureText: true,
                validator: (value) {
                  if (value == null || value.isEmpty) {
                    return '请输入密码';
                  }
                  return null;
                },
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: () {
                  if (_formKey.currentState!.validate()) {
                    // 表单验证通过,可以提交表单
                    ScaffoldMessenger.of(context).showSnackBar(
                      SnackBar(content: Text('登录成功')),
                    );
                  }
                },
                child: Text('提交'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

个人资料页面示例代码

import 'package:flutter/material.dart';

class Profile extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('个人资料'),
      ),
      body: Center(
        child: Text('个人资料页面'),
      ),
    );
  }
}

更多关于Flutter表单验证插件validation_form的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter表单验证插件validation_form的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter中使用validation_form插件进行表单验证的一个代码示例。validation_form插件提供了简洁的方法来创建和验证表单。以下是一个基本的示例,展示如何使用该插件。

首先,确保你的pubspec.yaml文件中已经添加了validation_form依赖:

dependencies:
  flutter:
    sdk: flutter
  validation_form: ^0.0.4  # 请注意版本号,使用最新版本

然后,运行flutter pub get来获取依赖。

接下来,在你的Flutter应用中,你可以按照以下方式使用validation_form

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Form Validation Example'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: ValidationForm(
            key: _formKey,
            child: Column(
              children: <Widget>[
                TextFormField(
                  decoration: InputDecoration(labelText: 'Email'),
                  validators: [
                    Validators.required('Email is required'),
                    Validators.email('Email is not valid'),
                  ],
                ),
                SizedBox(height: 16),
                TextFormField(
                  decoration: InputDecoration(labelText: 'Password'),
                  obscureText: true,
                  validators: [
                    Validators.required('Password is required'),
                    Validators.minLength(6, 'Password must be at least 6 characters long'),
                  ],
                ),
                SizedBox(height: 16),
                ElevatedButton(
                  onPressed: () async {
                    final form = _formKey.currentState!;
                    if (form.validate()) {
                      form.save();
                      // 处理表单提交逻辑,例如发送到服务器
                      ScaffoldMessenger.of(context).showSnackBar(
                        SnackBar(content: Text('Form submitted successfully')),
                      );
                    }
                  },
                  child: Text('Submit'),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

final GlobalKey<FormState> _formKey = GlobalKey<FormState>();

在这个示例中,我们做了以下事情:

  1. 导入必要的包flutter/material.dartvalidation_form/validation_form.dart
  2. 创建MyApp组件:这是应用的根组件。
  3. 使用ValidationForm组件:这个组件包装了我们的表单字段。我们传递了一个GlobalKey<FormState>ValidationForm,以便稍后验证表单。
  4. 创建表单字段:使用TextFormField,并为每个字段指定验证器。例如,电子邮件字段需要是非空且有效的电子邮件地址,密码字段需要是非空且至少6个字符长。
  5. 提交按钮:使用ElevatedButton,并在点击时调用表单的validate方法。如果验证通过,调用save方法(虽然在这个示例中我们没有定义保存逻辑,但你可以在这里添加)。

请注意,Validators类提供了许多预定义的验证器,但你也可以根据需要自定义验证器。

确保你使用的是最新版本的validation_form插件,因为API可能会随着版本更新而发生变化。

回到顶部