InputTag 标签输入框
用于输入和管理多个标签。
实现原理
基于 TextField 实现,结合标签渲染、增删、事件回调等功能。
自定义 tag 样式
通过 tagBuilder
属性自定义标签的渲染样式。
自定义 prefix 和 suffix
通过 prefix
和 suffix
属性自定义输入框前后缀。
最大标签数量
通过 max
属性限制可输入的标签数量。
分隔符
通过 delimiter
属性自定义分隔符。
触发方式
通过 trigger
属性设置添加标签的触发方式(如 enter 或 space)。
saveOnBlur
通过 saveOnBlur
属性设置失去焦点时是否保存输入。
可清空
通过 clearable
属性控制是否显示清除按钮。
禁用和只读
通过 disabled
和 readOnly
属性控制输入框的禁用和只读状态。
不同尺寸
通过 size
属性设置输入框尺寸。
自定义样式
通过 customFontSize
、customHeight
、customBorderRadius
属性自定义样式。
自定义颜色
通过 customColor
、defaultColor
属性自定义颜色。
API/事件
展示所有常用事件和回调。
API
InputTag 属性
属性名 | 说明 | 类型 | 默认值 |
---|---|---|---|
value | 标签值 | List<String> | - |
onChanged | 标签变化时回调 | (List<String>?) => void | - |
tagBuilder | 自定义标签渲染 | Widget Function(BuildContext, String) | - |
prefix | 输入框前缀 | Widget? | - |
suffix | 输入框后缀 | Widget? | - |
max | 最大标签数量 | int? | - |
delimiter | 分隔符 | String? | - |
trigger | 触发方式 | EInputTagTrigger | space |
saveOnBlur | 失焦时是否保存输入 | bool | true |
clearable | 是否可清空 | bool | false |
disabled | 是否禁用 | bool | false |
readOnly | 是否只读 | bool | false |
size | 输入框尺寸 | ESizeItem | medium |
customFontSize | 自定义字体大小 | double? | - |
customHeight | 自定义高度 | double? | - |
customBorderRadius | 自定义圆角 | double? | - |
customColor | 自定义颜色 | Color? | - |
defaultColor | 默认颜色 | Color? | - |
InputTag 事件
事件名 | 说明 | 参数 |
---|---|---|
onChanged | 标签变化时触发 | (List<String>?) => void |
onFocus | 输入框获得焦点时触发 | () => void |
onBlur | 输入框失去焦点时触发 | () => void |
onAddTag | 添加标签时触发 | (String tag, List<String> value) |
onRemoveTag | 移除标签时触发 | (String tag, List<String> value) |
onClear | 清空标签时触发 | () => void |
</rewritten_file>