颤动验证单选按钮

2024-06-05

如何将验证器函数添加到单选按钮列表中以便让它们验证(例如TextFormFields with _formKey.currentState.validate())用户提交后Form?


您可以复制粘贴运行下面的完整代码
您可以使用包https://pub.dev/packages/flutter_form_builder https://pub.dev/packages/flutter_form_builder
它支持内置validators例如FormBuilderValidators.required()你可以直接使用
你也可以使用custom validator function https://pub.dev/packages/flutter_form_builder#custom-validator-function https://pub.dev/packages/flutter_form_builder#custom-validator-function

FormBuilderRadio(
                      decoration:
                          InputDecoration(labelText: 'My chosen language'),
                      attribute: "best_language",
                      leadingInput: true,
                      onChanged: _onChanged,
                      validators: [FormBuilderValidators.required()],
                      options:
                          ["Dart", "Kotlin", "Java", "Swift", "Objective-C"]
                              .map((lang) => FormBuilderFieldOption(
                                    value: lang,
                                    child: Text('$lang'),
                                  ))
                              .toList(growable: false),
                    ),

工作演示

完整代码

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_form_builder/flutter_form_builder.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter FormBuilder Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        inputDecorationTheme: InputDecorationTheme(
          labelStyle: TextStyle(color: Colors.purple),
        ),
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  MyHomePageState createState() {
    return MyHomePageState();
  }
}

class MyHomePageState extends State<MyHomePage> {
  var data;
  bool autoValidate = true;
  bool readOnly = false;
  bool showSegmentedControl = true;
  final GlobalKey<FormBuilderState> _fbKey = GlobalKey<FormBuilderState>();
  final GlobalKey<FormFieldState> _specifyTextFieldKey =
      GlobalKey<FormFieldState>();

  ValueChanged _onChanged = (val) => print(val);
  var genderOptions = ['Male', 'Female', 'Other'];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("FormBuilder Example"),
      ),
      body: Padding(
        padding: EdgeInsets.all(10),
        child: SingleChildScrollView(
          child: Column(
            children: <Widget>[
              FormBuilder(
                // context,
                key: _fbKey,
                autovalidate: true,
                initialValue: {
                  'movie_rating': 5,
                },
                readOnly: false,
                child: Column(
                  children: <Widget>[
                    FormBuilderRadio(
                      decoration:
                          InputDecoration(labelText: 'My chosen language'),
                      attribute: "best_language",
                      leadingInput: true,
                      onChanged: _onChanged,
                      validators: [FormBuilderValidators.required()],
                      options:
                          ["Dart", "Kotlin", "Java", "Swift", "Objective-C"]
                              .map((lang) => FormBuilderFieldOption(
                                    value: lang,
                                    child: Text('$lang'),
                                  ))
                              .toList(growable: false),
                    ),
                  ],
                ),
              ),
              Row(
                children: <Widget>[
                  Expanded(
                    child: MaterialButton(
                      color: Theme.of(context).accentColor,
                      child: Text(
                        "Submit",
                        style: TextStyle(color: Colors.white),
                      ),
                      onPressed: () {
                        if (_fbKey.currentState.saveAndValidate()) {
                          print(_fbKey.currentState.value);
                        } else {
                          print(_fbKey.currentState.value);
                          print("validation failed");
                        }
                      },
                    ),
                  ),
                  SizedBox(
                    width: 20,
                  ),
                  Expanded(
                    child: MaterialButton(
                      color: Theme.of(context).accentColor,
                      child: Text(
                        "Reset",
                        style: TextStyle(color: Colors.white),
                      ),
                      onPressed: () {
                        _fbKey.currentState.reset();
                      },
                    ),
                  ),
                ],
              ),
            ],
          ),
        ),
      ),
    );
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

颤动验证单选按钮 的相关文章

随机推荐

  • 如何在发送的电子邮件上设置来源/发件人属性的名称?

    我正在使用 aws sdk for php 并使用 AmazonSES 发送电子邮件 问题是我想设置电子邮件的名称 例子 指定 lt email address gt 这是我的源代码 mailer new AmazonSES aws con
  • 使用 AntD 样式响应 Hook 表单

    我试图弄清楚如何将react hook form与antd前端一起使用 我已经制作了这个表单 它似乎正在工作 它是多部分表单向导的第 1 部分 只是不显示错误消息 谁能看到我在合并这两个表单系统时做错了什么 我没有收到任何错误 但我认为我已
  • VS Code 找不到类似的任务,只有最后一个

    最接近我的问题是这个问题 https stackoverflow com questions 35975641 could not find the prelaunch task build 但我认为这里还发生了其他事情 我有两个启动配置
  • dll:静态链接与隐式链接,一样吗?

    关于Dll链接 静态链接和隐式链接是一回事吗 我理解隐式链接和显式链接之间的区别 并且我认为静态与隐式链接同义 但我不确定 如果它们确实不同 它们之间有什么区别 以及我如何指定我想要哪一个 this link http msdn micro
  • 分配内存时线程争用

    在 C 中 我运行了一个创建许多小对象的玩具代码 我知道最好应该避免这种情况 我只是想研究这个问题 对于创建的对象总量相同 一个线程的运行速度比每个处理器一个线程 Parallel For 的运行速度快 原子操作包括创建一个包含 20k 个
  • 如何增加使用 SAX 解析 XML 文件的entityExpansionLimit

    我正在尝试使用 Java 中的 SAX 解析器解析一个 1 23 GB 的 XML 文件 我使用的是 Mac 操作系统和 JDK 1 7 0 51 不幸的是 我收到以下错误 The pasrser has encountered more
  • 尝试在 CMDER 中使用 WSL 2 启动控制台时出现问题

    我只是尝试使用 cmder 中的 WSL 时遇到此错误 wslbridge error failed to start backend process note backend error output v c line 0 unexpec
  • 将 MVC2 升级到 MVC3 - 仅在服务器上出现问题 [已关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我已使用此
  • 是否可以在 Golang 中 pickle 结构实例

    我正在 Golang 中做一些机器学习 我现在碰壁了 我训练有素的分类器需要将近半分钟的时间来训练 并且想要保存分类器的该实例 这样我就不必每次都从头开始训练 在 Golang 中应该如何去做呢 仅供参考 我的分类器是一个结构 当我用 py
  • 如何使用 Intellij Structural Search 查找使用两个命名类的所有方法?

    假设我有两个 Java 类 TradeType 和 InstrumentType 我知道在我的代码库中的某个地方有一个从 TradeType 映射到 InstrumentType 的方法 我如何在 Intellij 中使用结构搜索来表达 找
  • int arr[ ] 是有效的 C++ 吗?

    我试图理解是否写作int arr 在 C 中有效 举个例子 int a is this valid extern int b is this valid int ptrB is this valid struct Name int k is
  • Keycloak访问模拟API

    我们开始使用 keycloak 3 4 3 我们需要在我们的应用程序中引入模拟功能 我们发现 keycloak 有一个模拟 api 不幸的是它不会为用户返回令牌 而是返回一个重定向链接 用户可以 选择 自己的客户端 我们在这里找到了 htt
  • TypeScript 中类和命名空间的区别

    到底有什么区别classes and namespaces在打字稿中 我知道 如果您创建一个带有静态方法的类 您可以在不实例化该类的情况下访问它们 这正是我猜想的命名空间的要点之一 我还知道你可以创建多个同名的命名空间 并且它们的方法在编译
  • 系统间依赖关系的UML图

    哪种 UML 图最能显示我们的 IT 系统和其他外部 IT 系统之间的依赖关系 例如我想在图表上显示 系统A从系统B获取数据 系统B可以调用系统A的一些功能 我想知道组件图和序列图之间的关系 你怎么认为 你的问题不是很具体 因为所有 UML
  • SVN提交失败,访问被禁止

    最近我面临着提交SVN的问题 我使用的SVN服务器是VisualSVN Server 2 5 9 客户端是TortoiseSVN 1 7 12 起初 一个用户在将文件提交到 SVN 时遇到问题 但该用户仍然可以访问存储库并下载更新 第二台
  • 将 Swing 集成到简单的文本冒险游戏中

    我对 Java 中的一些中级概念相当陌生 最近 我制作了一款名为 DazzleQuest 的文本冒险游戏 它完全在开发者控制台 终端中运行 它涉及到我的朋友作为角色 所以我想向他们展示它 并通过将命令行的功能和控制台的输出转移到一个简单的
  • 如何找到可能直接或间接调用给定方法的所有单元测试? (。网)

    如何找到可能直接或间接调用给定方法的所有单元测试 当我改变方法时 我希望知道要运行的最佳测试 必须有一个工具可以做到这一点 由于我们有很多接口 所以我对所有在实现接口的类上至少有一个路径 var 植入方法时调用接口上的方法的单元测试感兴趣
  • 为什么我可以更改 const char *ptr 的内容?

    我传递了一个指针ptr到一个函数 其原型将其作为const foo const char str 根据我的理解 这意味着它将无法更改ptr通过了 就像下面的情况一样foo const int i If foo 试图改变的值i 编译器给出错误
  • 卡在 git 提交窗口

    我被困在这个窗口了 我做了一个git add a就在之前 然后git commit在 git cmd exe 中 我怎样才能离开这里 我写了我的提交消息并按回车键 但什么也没发生 我担心只是关闭窗口 我在互联网上找不到任何内容 官方网站没有
  • 颤动验证单选按钮

    如何将验证器函数添加到单选按钮列表中以便让它们验证 例如TextFormFields with formKey currentState validate 用户提交后Form 您可以复制粘贴运行下面的完整代码您可以使用包https pub