Flutter随笔

textfield.dart阅读

2020-09-19  本文已影响0人  嘛尼嘛哄

TextField

文本输入框

相关的组件

DiagnosticableTree (diagnostics.dart)
    Widget (framework.dart)
        StatefulWidget (framework.dart)
            TextField (text_field.dart)
ChangeNotifier (change_notifier.dart)
    ValueNotifier (change_notifier.dart)
        TextEditingController (editable_text.dart)
            _TextSpanEditingController (selectable_text.dart)
ShapeBorder (borders.dart)
    InputBorder (input_border.dart)
        _NoInputBorder (input_border.dart)
        OutlineInputBorder (input_border.dart)
        UnderlineInputBorder (input_border.dart)

ShapeBorder (borders.dart)
    BeveledRectangleBorder (beveled_rectangle_border.dart)
    BoxBorder (box_border.dart)
        Border (box_border.dart)
        BorderDirectional (box_border.dart)
    CircleBorder (circle_border.dart)
    ContinuousRectangleBorder (continuous_rectangle_border.dart)
    RoundedRectangleBorder (rounded_rectangle_border.dart)
    _RoundedRectangleToCircleBorder (rounded_rectangle_border.dart)
    _StadiumToCircleBorder (stadium_border.dart)
    StadiumBorder (stadium_border.dart)
    _StadiumToRoundedRectangleBorder (stadium_border.dart)
    InputBorder (input_border.dart)
        _NoInputBorder (input_border.dart)
        OutlineInputBorder (input_border.dart)
        UnderlineInputBorder (input_border.dart)
    _OutlineBorder (outline_button.dart)
    _CompoundBorder (borders.dart

flutter/keyevent channel提供key的输入事件
pointerRouter 来处理点击事件

FocusNode (focus_manager.dart)
    FocusScopeNode (focus_manager.dart)
FocusManager (focus_manager.dart)
   RawKeyboard.instance
   GestureBinding.instance.pointerRouter
TextInputFormatter (text_formatter.dart)
    _WhitespaceDirectionalityFormatter (editable_text.dart)
    _DateTextInputFormatter (input_date_picker.dart)
    BlacklistingTextInputFormatter (text_formatter.dart)
    LengthLimitingTextInputFormatter (text_formatter.dart)
    _SimpleTextInputFormatter (text_formatter.dart)
    WhitelistingTextInputFormatter (text_formatter.dart)

构建相关类

DiagnosticableTree (diagnostics.dart)
    Widget (framework.dart)
        RenderObjectWidget (framework.dart)
            SingleChildRenderObjectWidget (framework.dart)
                RepaintBoundary (basic.dart) //独立绘制内容,不受parent的干扰

IgnorePointer //(控制是否冻结)
-> MouseRegion //(监听鼠标移动)
   -> AnimatedBuilder (_selectionGestureDetectorBuilder) //选择动画
     -> AnimatedBuilder (InputDecorator builder) //装饰动画
        -> InputDecorator 
          -> RepaintBoundary  //单独绘制
             -> EditableText    //绘制最终的文本
                -> Scrollable (viewportBuilder)
                   -> CompositedTransformTarget
                     -> _Editable(LeafRenderObjectWidget)
//渲染
AbstractNode (node.dart)
    RenderObject (object.dart)
        RenderBox (box.dart)
            RenderEditable (editable.dart)

属性介绍

const TextField({   
Key key,    //唯一标示
this.controller,    //设置和监听文本
this.focusNode,     //控制焦点, 显示/隐藏键盘
this.decoration = const InputDecoration(), //装饰
TextInputType keyboardType,     //设置键盘类型
this.textInputAction,   //设置键盘右下角按钮
this.textCapitalization = TextCapitalization.none, //键盘大小写设置
this.style,     //文本样式
this.strutStyle,    //设置文本框的垂直布局
this.textAlign = TextAlign.start,   //设置输入文本的方向
this.textAlignVertical,     //设置文本是否垂直对齐
this.textDirection,     //文字方向
this.readOnly = false,  //文字内容是否可变
ToolbarOptions toolbarOptions,  //长按时的菜单栏显示项配置
this.showCursor,    //是否显示游标
this.autofocus = false,     //是否自动聚焦
this.obscureText = false,   //安全输入,隐藏文字
this.autocorrect = true,    //自动检查
SmartDashesType smartDashesType,    //破折号样式
SmartQuotesType smartQuotesType,    //引号样式
this.enableSuggestions = true,  //是否允许自动提示
this.maxLines = 1,  //最大行
this.minLines,  //最小行
this.expands = false,   //是否延展
this.maxLength,     //限定文本最大长
this.maxLengthEnforced = true,  //限定超出指定长度时时禁止文字继续增长
this.onChanged,     //文本变更时回调
this.onEditingComplete,     //编辑完成时
this.onSubmitted,   //提交输入内容时
this.inputFormatters,   //设置正则校验内容
this.enabled,   //是否冻结文本框
this.cursorWidth = 2.0,     //光标宽度设置
this.cursorRadius,  //光标的半径设置
this.cursorColor,   //光标的颜色设置
this.selectionHeightStyle = ui. BoxHeightStyle.tight,   //控制选择高亮显示框的高度
this.selectionWidthStyle = ui. BoxWidthStyle.tight,     //控制选择高亮显示框的宽度
this.keyboardAppearance,    //键盘的样式
this.scrollPadding = const EdgeInsets.all(20.0),    //华动区域的内边距
this.dragStartBehavior = DragStartBehavior.start,   //设置拖拽触发的方向
this.enableInteractiveSelection = true,     //是否允许长按显示菜单
this.onTap,     //点击事件监听
this.buildCounter,  //构造长度/最大长度widget
this.scrollController,  //控制文本框内部的滑动事件
this.scrollPhysics,     //垂直滚动输入框的行为
});

const InputDecoration({ 
this.icon,  最左边的icon
this.labelText,     输入描述文字
this.labelStyle,    输入描述文字的样式
this.helperText,    帮助文字
this.helperStyle,   帮助文字的样式
this.helperMaxLines,    帮助文字的最大行
this.hintText,  默认输入文字
this.hintStyle,     默认输入文字的样式
this.hintMaxLines,  默认输入文字的最大行
this.errorText,     错误文字
this.errorStyle,    错误文字样式
this.errorMaxLines,     错误文字的最大行
@Deprecated(    
'Use floatingLabelBehaviour instead. '  
'This feature was deprecated after v1.13.2.'    
)   
this.hasFloatingPlaceholder = true, // ignore: deprecated_member_use_from_same_package  是否有浮动的占位label
this.floatingLabelBehavior = FloatingLabelBehavior.auto,    //浮动占位label的行为
this.isDense,   //内容是否是锁紧
this.contentPadding,    //内容边距设定
this.prefixIcon,    //文字输入区域前面的icon
this.prefixIconConstraints,     //文字输入区域前面的icon的大小约束
this.prefix,    //前缀
this.prefixText,    //前缀文字
this.prefixStyle,   //前缀文字样式
this.suffixIcon,    //尾部icon
this.suffix,    //尾部widgt
this.suffixText,    //尾部文本
this.suffixStyle,   //尾部文本样式
this.suffixIconConstraints,     //尾部文本约束
this.counter,   //文本长度widget
this.counterText,   //文本长度占比文字
this.counterStyle,  //文本长度占比文字样式
this.filled,    //填充装饰的container
this.fillColor,     //填充颜色
this.focusColor,    //对焦的颜色
this.hoverColor,    //鼠标盘旋的颜色
this.errorBorder,   //错误的边框掩饰
this.focusedBorder,     //聚焦的边框样式
this.focusedErrorBorder,    //聚焦的错误的边框央视
this.disabledBorder,    //禁止时的边框样式
this.enabledBorder,     //激活时的边框央视
this.border,    //装饰容器的形状边框
this.enabled = true,    //是否允许其他提示
this.semanticCounterText,   //语义文字提示
this.alignLabelWithHint,    //多行时文本对齐
上一篇 下一篇

猜你喜欢

热点阅读