纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

Flutter输入框TextField Flutter输入框TextField属性及监听事件介绍

老图拉丁   2021-11-29 我要评论
想了解Flutter输入框TextField属性及监听事件介绍的相关内容吗老图拉丁在本文为您仔细讲解Flutter输入框TextField的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Flutter输入框TextField,Flutter输入框,Flutter TextField下面大家一起来学习吧。

textField用于文本输入它提供了很多属性:

const TextField({
   ...
   TextEditingController controller, 
   FocusNode focusNode,
   InputDecoration decoration = const InputDecoration(),
   TextInputType keyboardType,
   TextInputAction textInputAction,
   TextStyle style,
   TextAlign textAlign = TextAlign.start,
   bool autofocus = false,
   bool obscureText = false,
   int maxLines = 1,
   int maxLength,
   this.maxLengthEnforcement,
   ToolbarOptions? toolbarOptions,
   ValueChanged<String> onChanged,
   VoidCallback onEditingComplete,
   ValueChanged<String> onSubmitted,
   List<TextInputFormatter> inputFormatters,
   bool enabled,
   this.cursorWidth = 2.0,
   this.cursorRadius,
   this.cursorColor,
   this.onTap,
   ...
 })
属性 类型 说明
controller TextEditingController 控制器通过它可以获取文本内容监听编辑文本事件大多数情况下我们需要主动提供一个控制器
focusNode InputDecoration 焦点控制
decoration InputDecoration 用于控制文本的外观如提示文本、背景色、边框等
keyboardType TextInputType 用于设置输入框的默认键盘类型
textInputAction TextInputAction 键盘动作图标按钮他是一个枚举值
style TextStyle 正在编辑的文本样式
textAlign TextAlign 文本框的在水平方向的对齐方式
autofocus bool 是否自动获取焦点
obscureText bool 是否隐藏正在编辑的文本用于密码输入场景
maxLines int 输入框的最大行数
maxlength int 文本框的最大长度
maxLengthEnforcement 当文本长度超出文本框长度时如何处理
toolbarOptions ToolbarOptions 长按时出现的选项
onChange ValueChanged<String> 输入框改变时候的回调函数也可以通过controller来监听
onEditingComplete VoidCallback 输入完后触发的回调函数不接受参数
onSubmitted ValueChanged<String> 接收ValueChanged<String>的参数
inputFormatters List<TextInputFormatter> 用于指定输入格式,可以用于检验格式
enable bool 为bool时输入框将变为禁用状态
cursorWidth、cursorRadius和cursorColor 这三个属性是用于自定义输入框光标宽度、圆角和颜色

示例:注意提示内容都是在InputDecoration中设置的

void mian()=>runApp(MyApp());
 ​
 class MyApp extends StatelessWidget
 {
 ​
   @override
   Widget build(BuildContext context) {
     return MaterialApp(
       title: "文本输出框",
       home:Scaffold(
         appBar: AppBar(title:const Text("文本输入框")),
         body:Column(
           children:const  <Widget>[
             TextField(
               autofocus: true,
               decoration: InputDecoration(
                 //文本
                 labelText:"用户名",
                 //提示信息
                 hintText: "用户名或邮箱",
                 //图标
                 prefixIcon: Icon(Icons.person),
               ),
               //设置最大行数
               maxLines: 1,
             ),
             TextField(
               autofocus: true,
               decoration: InputDecoration(
                 labelText:"密码",
                 hintText: "您的登录密码",
                 prefixIcon: Icon(Icons.lock),
               ),
               //隐藏文本
               obscureText: true,
             ),
           ],
         ),
       )
     );
   }
 }

监听事件:

获取内容的两种方式:

  • 定义两个变量用于保存用户名和密码然后再onChanged触发时各自保存输入内容
  • 通过Controller直接获取,onChanged是一种单纯的监听改变事件但Controller中还有一些其他方法可以使用。

第一种方式:

onChanged: (value){
                 print("你输入的内容为$value");
 }

第二种方式:

定义一个controller:

TextEditingController _unameController = TextEditingController();
     _unameController.addListener(() {
       print("你输入的内容为:${_unameController.text}");
 });

完整代码:

void main()=>runApp(MyApp());
 ​
 class MyApp extends StatelessWidget
 {
   @override
   Widget build(BuildContext context) {
     //定义一个controller
     TextEditingController _unameController = TextEditingController();
     //调用.addListener重写其中的方法
     _unameController.addListener(() {
       print("你输入的内容为:${_unameController.text}");
     });
     return MaterialApp(
       title: "文本输出框",
       home:Scaffold(
         appBar: AppBar(title:const Text("文本输入框")),
         body:Column(
           children: <Widget>[
             TextField(
                 //设置监听
               controller: _unameController,
               autofocus: true,
               decoration: const InputDecoration(
                 //文本
                 labelText:"用户名",
                 //提示信息
                 hintText: "用户名或邮箱",
                 //图标
                 prefixIcon: Icon(Icons.person),
               ),
               //设置最大行数
               maxLines: 1,
             ),
             TextField(
               autofocus: true,
               decoration:const  InputDecoration(
                 labelText:"密码",
                 hintText: "您的登录密码",
                 prefixIcon: Icon(Icons.lock),
               ),
               //隐藏文本
               obscureText: true,
                 //表单改变事件
               onChanged: (value){
                 print("你输入的内容为$value");
               },
             ),
           ],
         ),
       )
     );
   }
 }

到此这篇关于介绍Flutter输入框TextField属性及监听事件的文章就介绍到这了。希望对大家的学习有所帮助也希望大家多多支持。


相关文章

猜您喜欢

  • vue实现css过渡和动画 怎样利用vue实现css过渡和动画

    想了解怎样利用vue实现css过渡和动画的相关内容吗小豪boy在本文为您仔细讲解vue实现css过渡和动画的相关知识和一些Code实例欢迎阅读和指正我们先划重点:vue的transition过渡动画,vue实现css过渡和动画,vue实现动画效果下面大家一起来学习吧。..
  • Qt TreeWidget 嵌套节点 C/C++QtTreeWidget嵌套节点操作使用

    想了解C/C++QtTreeWidget嵌套节点操作使用的相关内容吗lyshark在本文为您仔细讲解QtTreeWidget嵌套节点的相关知识和一些Code实例欢迎阅读和指正我们先划重点:QtTreeWidget嵌套节点,QtTreeWidget嵌套下面大家一起来学习吧。..

网友评论

Copyright 2020 www.ducttapegames.com 【环球游戏网】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式