美文网首页
401--Flutter for iOS 9--表单输入

401--Flutter for iOS 9--表单输入

作者: 修_远 | 来源:发表于2021-07-26 10:55 被阅读0次

[TOC]

表单输入

1. Flutter 中表单怎么工作?我怎么拿到用户的输入?

我们已经提到 Flutter 使用不可变的 widget,并且状态是分离的,你可能会好奇在这种情境下怎么处理用户的输入。在 iOS 中,你经常在需要提交数据时查询组件当前的状态或动作,但这在 Flutter 中是怎么工作的呢?

在表单处理的实践中,就像在 Flutter 中任何其他的地方一样,要通过特定的 widgets。如果你有一个 TextField 或是 TextFormField,你可以通过 TextEditingController 来获得用户输入:

class _MyFormState extends State<MyForm> {
  // Create a text controller and use it to retrieve the current value.
  // of the TextField!
  final myController = TextEditingController();

  @override
  void dispose() {
    // Clean up the controller when disposing of the Widget.
    myController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Retrieve Text Input'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: TextField(
          controller: myController,
        ),
      ),
      floatingActionButton: FloatingActionButton(
        // When the user presses the button, show an alert dialog with the
        // text the user has typed into our text field.
        onPressed: () {
          return showDialog(
            context: context,
            builder: (context) {
              return AlertDialog(
                // Retrieve the text the user has typed in using our
                // TextEditingController
                content: Text(myController.text),
              );
            },
          );
        },
        tooltip: 'Show me the value!',
        child: Icon(Icons.text_fields),
      ),
    );
  }
}

你可以在这里获得更多信息,或是完整的代码列表: Retrieve the value of a text field,来自 Flutter Cookbook

2. Text field 中的 placeholder 相当于什么?

在 Flutter 中,你可以轻易地通过向 Text widget 的装饰构造器参数重传递 InputDecoration 来展示“小提示”,或是占位符文字:

body: Center(
  child: TextField(
    decoration: InputDecoration(hintText: "This is a hint"),
  ),
)

3. 我怎么展示验证错误信息?

就像展示“小提示”一样,向 Text widget 的装饰器构造器参数中传递一个 InputDecoration

然而,你并不想在一开始就显示错误信息。相反,当用户输入了验证信息,更新状态,并传入一个新的 InputDecoration 对象:

class SampleApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Sample App',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: SampleAppPage(),
    );
  }
}

class SampleAppPage extends StatefulWidget {
  SampleAppPage({Key key}) : super(key: key);

  @override
  _SampleAppPageState createState() => _SampleAppPageState();
}

class _SampleAppPageState extends State<SampleAppPage> {
  String _errorText;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Sample App"),
      ),
      body: Center(
        child: TextField(
          onSubmitted: (String text) {
            setState(() {
              if (!isEmail(text)) {
                _errorText = 'Error: This is not an email';
              } else {
                _errorText = null;
              }
            });
          },
          decoration: InputDecoration(hintText: "This is a hint", errorText: _getErrorText()),
        ),
      ),
    );
  }

  _getErrorText() {
    return _errorText;
  }

  bool isEmail(String em) {
    String emailRegexp =
        r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$';

    RegExp regExp = RegExp(p);

    return regExp.hasMatch(em);
  }
}

相关文章

  • 401--Flutter for iOS 9--表单输入

    [TOC] 表单输入 1. Flutter 中表单怎么工作?我怎么拿到用户的输入? 我们已经提到 Flutter ...

  • 移动端-弹出键盘和CSS的fixed布局影响输入的解决方案

    背景: Html5登录表单,但是登录表单下面有内容是固定在页面最底部。这种布局下,当键盘弹出输入时,ios手机上是...

  • iOS表单键盘遮挡问题

    iOS表单键盘遮挡问题 iOS表单键盘遮挡问题

  • IOS TextField设置大全

    在iOS应用中,文本框UITextField是一种常见的信息输入控件,类似于Web表单中的表单字段。当在文本框中输...

  • HTML 表单的用法

    表单表单作用:HTML表单用于搜集不同类型的用户输入。 表单的工作机制访问一个含有表单的页面输入数据后,提交表单→...

  • HTML表单的用法

    HTML表单的用法 表单表单作用:HTML表单用于搜集不同类型的用户输入。表单的工作机制访问一个含有表单的页面输入...

  • HTML基础语法(下)

    表单(用户输入) 表单 标签。表单是给用户提供输入和操作的那些控件。 表单都是input标签,但是根据类型的不同,...

  • 表单输入

    学习完整课程请移步 互联网 Java 全栈工程师 本节视频 【视频】Vue 渐进式 JavaScript 框架-V...

  • html - 表单(form)&input

    定义及作用 表单是包含表单元素的区域,而表单元素允许在表单中输入内容。 表单是用来收集不同类型的用户输入。 标签 ...

  • HTML学习笔记(四)

    一:HTML 表单 HTML 表单用于搜集不同类型的用户输入。 元素 HTML 表单用于收集用户输入。 HTML ...

网友评论

      本文标题:401--Flutter for iOS 9--表单输入

      本文链接:https://www.haomeiwen.com/subject/wzbzjktx.html