美文网首页Flutter圈子
给TextField 赋值

给TextField 赋值

作者: galafan | 来源:发表于2019-06-19 11:11 被阅读7次

    在Android开发中 EditTextView 复制直接调用setText()方法即可,那么在flutter中我遍历所有TextField 属性后发现没有setText这个方法!很困惑

    所有属性如下:
     const TextField({
        Key key,
        this.controller,    //编辑框的控制器,跟文本框的交互一般都通过该属性完成,如果不创建的话默认会自动创建
        this.focusNode,  //用于管理焦点
        this.decoration = const InputDecoration(),   //输入框的装饰器,用来修改外观
        TextInputType keyboardType,   //设置输入类型,不同的输入类型键盘不一样
        this.textInputAction,   //用于控制键盘动作(一般位于右下角,默认是完成)
        this.textCapitalization = TextCapitalization.none,
        this.style,    //输入的文本样式
        this.textAlign = TextAlign.start,   //输入的文本位置
        this.textDirection,    //输入的文字排列方向,一般不会修改这个属性
        this.autofocus = false,   //是否自动获取焦点
        this.obscureText = false,   //是否隐藏输入的文字,一般用在密码输入框中
        this.autocorrect = true,   //是否自动校验
        this.maxLines = 1,   //最大行
        this.maxLength,   //能输入的最大字符个数
        this.maxLengthEnforced = true,  //配合maxLength一起使用,在达到最大长度时是否阻止输入
        this.onChanged,  //输入文本发生变化时的回调
        this.onEditingComplete,   //点击键盘完成按钮时触发的回调,该回调没有参数,(){}
        this.onSubmitted,  //同样是点击键盘完成按钮时触发的回调,该回调有参数,参数即为当前输入框中的值。(String){}
        this.inputFormatters,   //对输入文本的校验
        this.enabled,    //输入框是否可用
        this.cursorWidth = 2.0,  //光标的宽度
        this.cursorRadius,  //光标的圆角
        this.cursorColor,  //光标的颜色
        this.keyboardAppearance,
        this.scrollPadding = const EdgeInsets.all(20.0),
        this.dragStartBehavior = DragStartBehavior.down,
        this.enableInteractiveSelection,
        this.onTap,    //点击输入框时的回调(){}
        this.buildCounter,
      })
    

    仔细看这个所有属性的话你会发现
    controller://编辑框的控制器,跟文本框的交互一般都通过该属性完成,如果不创建的话默认会自动创建

    给 _controller.value重新赋值就可以实现给TextField 赋值
      final _controller = TextEditingController();
     _controller.value = _controller.value.copyWith(
            text: text,
            selection:
                TextSelection(baseOffset: text.length, extentOffset: text.length),
            composing: TextRange.empty,
          );
        });
    

    完整代码

    // Flutter code sample for widgets.TextEditingController.1
    
    // This example creates a [TextField] with a [TextEditingController] whose
    // change listener forces the entered text to be lower case and keeps the
    // cursor at the end of the input.
    
    import 'package:flutter/material.dart';
    
    void main() => runApp(MyApp());
    
    /// This Widget is the main application widget.
    class MyApp extends StatelessWidget {
      static const String _title = 'Flutter Code Sample';
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: _title,
          home: MyStatefulWidget(),
        );
      }
    }
    
    class MyStatefulWidget extends StatefulWidget {
      MyStatefulWidget({Key key}) : super(key: key);
    
      @override
      _MyStatefulWidgetState createState() => _MyStatefulWidgetState();
    }
    
    class _MyStatefulWidgetState extends State<MyStatefulWidget> {
      final _controller = TextEditingController();
    
      void initState() {
        _controller.addListener(() {
          final text = _controller.text.toLowerCase();
          _controller.value = _controller.value.copyWith(
            text: text,
            selection:
                TextSelection(baseOffset: text.length, extentOffset: text.length),
            composing: TextRange.empty,
          );
        });
        super.initState();
      }
    
      void dispose() {
        _controller.dispose();
        super.dispose();
      }
    
      Widget build(BuildContext context) {
        return Scaffold(
          body: Container(
            alignment: Alignment.center,
            padding: const EdgeInsets.all(6),
            child: TextFormField(
              controller: _controller,
              decoration: InputDecoration(border: OutlineInputBorder()),
            ),
          ),
        );
      }
    }
    
    
    images.jpg

    相关文章

      网友评论

        本文标题:给TextField 赋值

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