jui 0.2.6 jui: ^0.2.6 copied to clipboard
A Flutter Ui component library, divided into four modules, general, data presentation, data entry, feedback, containing buttons, labels, text, headers, border containers, no_content placeholders and o [...]
Flutter UI组件文档 #
在线文档:https://www.yuque.com/jui_flutter/kb/howistv001f1ghp9
目录 #
通用组件 #
按钮 #
JuiButton 组件用于创建各种样式和大小的按钮。
代码示例
JuiButton(
colorType: JuiButtonColorType.blue,
sizeType: JuiButtonSizeType.large,
text: "大号蓝色按钮",
onTap: () {},
)
主要参数
onTap
: 点击按钮时触发的回调函数text
: 按钮上显示的文本sizeType
: 按钮的大小类型colorType
: 按钮的颜色类型visibility
: 按钮是否可见disable
: 按钮是否禁用width
: 按钮的宽度(可选)height
: 按钮的高度(可选)fontSize
: 按钮文本的字体大小(可选)circular
: 按钮的圆角半径fontHeight
: 字体的高度比例backGroundColor
: 按钮的背景颜色(可选)
虚线边框 #
JuiDashedBorder 组件用于创建带有虚线边框的容器。
代码示例
JuiDashedBorder(
dashColor: Colors.blue,
dashWidth: 3,
dashHeight: 1,
dashSpace: 3,
borderRadius: 10,
onTap: () {
print('Container tapped!');
},
child: Padding(
padding: EdgeInsets.all(16),
child: Text('Hello, Dashed Border!'),
),
)
主要参数
dashColor
: 虚线的颜色dashWidth
: 虚线的宽度dashHeight
: 虚线的高度dashSpace
: 虚线之间的间距borderRadius
: 边框的圆角半径child
: 虚线边框内部包含的子组件onTap
: 当用户点击虚线边框时触发的回调函数
数据展示 #
展开收起文本 #
JuiExpandableText 组件用于显示可展开和收起的长文本。
代码示例
JuiExpandableText(
text: "这是一段超过最大行数的文本点击展开" * 30,
)
主要参数
text
: 文本内容maxLines
: 最大行数canPackUp
: 是否支持收起contentTextStyle
: 文本样式expandedTextStyle
: 展开/收起按钮文本样式expandText
: 展开按钮文本collapseText
: 收起按钮文本
高亮文本 #
JuiHighlightedText 组件用于在文本中突出显示特定部分,支持不可点击和可点击两种模式。
通用参数
text
: 要显示的完整文本内容 (String)textStyle
: 普通文本的样式 (TextStyle?)highlightStyle
: 高亮文本的默认样式 (TextStyle?)maxLines
: 文本显示的最大行数 (int)overflow
: 文本溢出时的处理方式 (TextOverflow)
不可点击的高亮文本
代码示例
JuiHighlightedText.buildNoTapHighlight(
text: "这是一行文字",
textStyle: const TextStyle(color: Colors.black),
highlightStyle: const TextStyle(color: Colors.blue),
highlightText: "文字"
)
特有参数
highlightText
: 需要高亮显示的文本 (String)
可点击的高亮文本
代码示例
JuiHighlightedText(
text: "这是一行可点击的文字",
textStyle: TextStyle(color: Colors.black),
highlightStyle: TextStyle(color: Colors.blue),
highlights: [
HighlightWord("文", onTap: () {
print("文");
}, highlightStyle: TextStyle(color: Colors.red)),
HighlightWord("字", onTap: () {
print("字");
}, highlightStyle: TextStyle(color: Colors.orange)),
HighlightWord("行", onTap: () {
print("行");
}),
HighlightWord("可点击", onTap: () {
print("点击");
}, highlightStyle: TextStyle(color: Colors.green)),
]
)
特有参数
highlights
: 高亮单词列表 (List
HighlightWord 类
word
: 要高亮显示的单词 (String)onTap
: 点击该单词时触发的回调函数 (VoidCallback)highlightStyle
: 该单词的特定高亮样式 (TextStyle?)
标签 #
JuiTag 组件用于显示各种样式的标签。
代码示例
JuiTag(
text: "标签",
tagColorType: JuiTagColorType.blue,
)
主要参数
text
: 标签文本tagColorType
: 标签颜色类型tagShapeType
: 标签形状类型icon
: 标签图标(可选)
空页面 #
JuiNoContent 组件用于显示空内容页面。
代码示例
JuiNoContent(
type: JuiNoContentType.list,
)
主要参数
paddingTop
: 顶部填充imageWidth
: 图片宽度text
: 显示的文本内容imagePath
: 图片路径(可选)type
: JuiNoContent组件的类型
数据录入 #
复选框 #
JuiCheckBox 组件用于创建复选框。
代码示例
JuiCheckBox(
type: JuiCheckBoxType.square,
flag: ValueNotifier<bool>(true),
)
主要参数
flag
: 复选框状态的通知器type
: 复选框的类型isDisabled
: 复选框是否被禁用onChanged
: 当复选框状态改变时的回调函数
选择器 #
JuiSelectPicker 组件用于创建各种类型的选择器。
通用参数
context
: 构建上下文config
: JuiSelectPicker的配置信息items
: 选择器中显示的项目列表onSelect
: 当用户选择一个项目时调用的回调函数initialSelection
: 初始选中的项目列表(默认为空)onCancel
: 当用户取消选择时调用的回调函数(可选)
滚动选择器
代码示例
void _showWheelPicker(BuildContext context) {
final items = [
JuiSelectPickerItemUI(data: JuiSelectPickerItemData(key: '1', value: 'Apple')),
JuiSelectPickerItemUI(data: JuiSelectPickerItemData(key: '2', value: 'Banana')),
JuiSelectPickerItemUI(data: JuiSelectPickerItemData(key: '3', value: 'Cherry')),
JuiSelectPickerItemUI(data: JuiSelectPickerItemData(key: '4', value: 'Date')),
];
showJuiSelectPicker(
context: context,
config: JuiSelectPickerConfig(
layout: JuiSelectPickerLayout.wheel,
headerConfig: JuiPickerHeaderConfig(title: 'Select a Fruit'),
),
items: items,
initialSelection: [items[1].data],
onSelect: (selectedKeys, selectedValues) {
print('Selected: $selectedValues');
},
);
}
列表选择器
代码示例
void _showListPicker(BuildContext context) {
final items = [
JuiSelectPickerItemUI(data: JuiSelectPickerItemData(key: 'red', value: 'Red')),
JuiSelectPickerItemUI(data: JuiSelectPickerItemData(key: 'blue', value: 'Blue')),
JuiSelectPickerItemUI(data: JuiSelectPickerItemData(key: 'green', value: 'Green')),
JuiSelectPickerItemUI(data: JuiSelectPickerItemData(key: 'yellow', value: 'Yellow')),
JuiSelectPickerItemUI(data: JuiSelectPickerItemData(key: 'purple', value: 'Purple')),
JuiSelectPickerItemUI(data: JuiSelectPickerItemData(key: 'orange', value: 'Orange')),
];
showJuiSelectPicker(
context: context,
config: JuiSelectPickerConfig(
layout: JuiSelectPickerLayout.list,
selectionMode: SelectionMode.multiple,
headerConfig: JuiPickerHeaderConfig(title: 'Select Colors'),
),
items: items,
initialSelection: [items[0].data, items[2].data],
onSelect: (selectedKeys, selectedValues) {
print('Selected: $selectedValues');
},
);
}
动作选择器
代码示例
void _showActionPicker(BuildContext context) {
final items = [
JuiSelectPickerItemUI(data: JuiSelectPickerItemData(key: 'red', value: 'Red')),
JuiSelectPickerItemUI(data: JuiSelectPickerItemData(key: 'blue', value: 'Blue')),
JuiSelectPickerItemUI(data: JuiSelectPickerItemData(key: 'green', value: 'Green')),
JuiSelectPickerItemUI(data: JuiSelectPickerItemData(key: 'yellow', value: 'Yellow')),
JuiSelectPickerItemUI(data: JuiSelectPickerItemData(key: 'purple', value: 'Purple')),
JuiSelectPickerItemUI(data: JuiSelectPickerItemData(key: 'orange', value: 'Orange')),
];
showJuiSelectPicker(
context: context,
config: JuiSelectPickerConfig(
layout: JuiSelectPickerLayout.action,
selectionMode: SelectionMode.single,
headerConfig: JuiPickerHeaderConfig(title: 'Select Colors'),
),
items: items,
initialSelection: [items[0].data],
onSelect: (selectedKeys, selectedValues) {
print('Selected: $selectedValues');
},
);
}
时间选择器 #
CustomTimePicker 组件用于创建各种类型的时间选择器。
通用参数
context
: 上下文环境,用于构建UItype
: 时间选择器的类型(TimePickerType枚举)mode
: 时间选择器的模式,默认为单选模式(TimePickerMode枚举)initialTime
: 初始时间,仅在单选模式下使用initialStartTime
: 初始开始时间,仅在范围选择模式下使用initialEndTime
: 初始结束时间,仅在范围选择模式下使用minTime
: 可选的最小时间限制maxTime
: 可选的最大时间限制
年月选择器
代码示例
showCustomTimePicker(
context: context,
type: TimePickerType.yearMonthSeparate,
mode: TimePickerMode.single,
initialTime: DateTime(2023, 6),
)
年月日选择器
代码示例
showCustomTimePicker(
context: context,
type: TimePickerType.yearMonthDaySeparate,
mode: TimePickerMode.single,
initialTime: DateTime(2023, 6, 15),
minTime: DateTime(2020, 10, 10),
maxTime: DateTime(2025, 10, 10),
)
时间范围选择器
代码示例
showCustomTimePicker(
context: context,
type: TimePickerType.yearMonthDayHourMinuteSeparate,
mode: TimePickerMode.range,
initialStartTime: DateTime(2023, 1, 1, 9, 0),
initialEndTime: DateTime(2023, 1, 2, 17, 0),
)
组合年月日选择器
代码示例
showCustomTimePicker(
context: context,
type: TimePickerType.yearMonthDayCombined,
mode: TimePickerMode.single,
initialTime: DateTime(2023, 6, 15),
)
组合年月日时分选择器
代码示例
showCustomTimePicker(
context: context,
type: TimePickerType.yearMonthDayHourMinuteCombined,
mode: TimePickerMode.single,
initialTime: DateTime(2023, 6, 15, 14, 30),
minTime: DateTime.now(),
maxTime: DateTime.now().add(const Duration(days: 7)),
)
反馈 #
对话框 #
JuiDialog 组件用于创建各种类型的对话框,包括标准对话框、输入对话框和自定义对话框。
通用参数
JuiDialogConfig 类用于配置对话框的通用参数:
title
: 对话框的标题confirmButtonText
: 确认按钮的文本cancelButtonText
: 取消按钮的文本onConfirm
: 点击确认按钮时的回调函数onCancel
: 点击取消按钮时的回调函数showCancelButton
: 是否显示取消按钮dialogWidth
: 对话框的宽度
标准对话框
代码示例
showJuiDialog(
context,
JuiDialogType.standard,
JuiDialogConfig(
title: "标准对话框",
confirmButtonText: "确定",
cancelButtonText: "取消",
onConfirm: () {
print("用户点击了确定");
},
onCancel: () {
print("用户点击了取消");
},
),
content: "这是一个标准对话框的内容。您可以在这里放置一些文本信息。",
);
特有参数
content
: 对话框内容,类型为 String
输入对话框
代码示例
showJuiDialog(
context,
JuiDialogType.input,
JuiDialogConfig(
title: "输入对话框",
confirmButtonText: "提交",
cancelButtonText: "取消",
onConfirm: () {
print("用户提交了输入");
},
onCancel: () {
print("用户取消了输入");
},
),
hintText: "请输入您的名字",
maxLength: 20,
allowEmoji: false,
onConfirmInput: (inputText) {
print("用户输入的文本是: $inputText");
},
onChange: (value) {
print("输入的内容变化: $value");
},
);
特有参数
hintText
: 提示文本,用于指导用户输入textController
: 文本控制器,用于管理文本输入allowEmoji
: 是否允许输入表情,默认为truemaxLength
: 输入内容的最大长度,可选focusNode
: 焦点节点,用于控制文本输入框的焦点onChange
: 文本变化回调函数,当文本改变时调用onConfirmInput
: 确认输入回调函数,当用户确认输入时调用
自定义对话框
代码示例
showJuiDialog(
context,
JuiDialogType.custom,
JuiDialogConfig(
title: "自定义对话框",
confirmButtonText: "好的",
showCancelButton: false,
onConfirm: () {
print("用户确认了自定义对话框");
},
),
customContent: Column(
children: [
Icon(Icons.info, size: 48, color: Colors.blue),
SizedBox(height: 16),
Text("这是一个自定义内容的对话框。"),
Text("您可以在这里放置任何 Widget。"),
],
),
);
特有参数
customContent
: 自定义对话框内容,类型为 Widget
表单 #
表单通用参数 #
JuiItemConfig 类用于配置表单项的通用参数。
主要参数包括:
isRequired
: 是否为必填项isDisabled
: 是否禁用titleSuffixWidget
: 标题后缀小部件titleBeforeRequiredWidget
: 标题前的必填标记小部件requiredMarker
: 必填标记小部件customTitleStyle
: 自定义标题样式showDivider
: 是否显示分隔线padding
: 内边距dividerPadding
: 分隔线内边距showTips
: 是否显示提示tipText
: 提示文本onTap
: 点击回调semanticsLabel
: 语义标签
自定义表单 #
JuiCustomItem 组件用于创建完全自定义的表单项,允许你插入任何自定义 Widget 作为内容。
代码示例
JuiCustomItem(
title: 'Custom Item',
content: const Text('This is a custom item'),
config: JuiItemConfig(
isRequired: true,
showTips: true,
tipText: '这是一个提示',
onTap: () {
debugPrint('Item tapped');
},
),
)
主要参数
title
: 自定义UI项的标题 (String)content
: 自定义UI项的内容 (Widget)config
: 自定义UI项的配置信息 (JuiItemConfig)
文本详情表单 #
JuiTextDetailItem 组件用于展示详细的文本信息,通常用于只读的信息展示。
代码示例
JuiTextDetailItem(
title: "Text Detail Item",
contentText: 'This is a text detail item',
config: JuiItemConfig(
onTap: () {
debugPrint('Item tapped');
},
),
)
主要参数
title
: 表单项的标题 (String)contentText
: 表单项的内容文本 (String)config
: 表单项的配置信息 (JuiItemConfig)
点击表单 #
JuiTapItem 组件用于创建可点击的表单项,通常用于触发某些操作或导航到其他页面。
代码示例
JuiTapItem(
title: "Tap Item",
contentText: 'This is a detail item',
hintText: '请点击',
config: JuiItemConfig(
onTap: () {
debugPrint('Item tapped');
},
isRequired: true,
),
)
主要参数
title
: 用于显示的标题文本 (String)contentText
: 主要内容的文本 (String)hintText
: 当内容文本不显示时,用于提示的文本 (String)maxLines
: 内容文本显示的最大行数 (int)trailing
: 可选的尾部组件,例如图标或按钮 (Widget?)config
: JuiTapItem的配置信息 (JuiItemConfig)
范围表单 #
JuiRangeItem 组件用于创建范围选择表单项,允许用户输入一个范围的最小值和最大值。
代码示例
const JuiRangeItem(
title: "Range Item",
minValue: "1",
maxValue: "10",
maxHintText: "最大值",
minHintText: "最小值",
config: JuiItemConfig(
isRequired: true,
showTips: true,
tipText: '请输入1-10之间的范围',
),
)
主要参数
title
: 标题 (String)minValue
: 最小值,可选参数 (String?)maxValue
: 最大值,可选参数 (String?)minHintText
: 最小值提示文本 (String)maxHintText
: 最大值提示文本 (String)separator
: 分隔符,可选参数 (Widget?)config
: JuiRangeItem的配置信息 (JuiItemConfig)
文本输入表单 #
JuiTextInputItem 组件用于创建文本输入表单项,允许用户输入文本。
代码示例
JuiTextInputItem(
title: "用户名",
hintText: "请输入用户名",
controller: TextEditingController(),
showClearButton: true,
config: JuiItemConfig(
isRequired: true,
showTips: true,
tipText: '用户名长度应在3-20个字符之间',
),
)
主要参数
title
: 标题 (String)hintText
: 提示文本 (String)controller
: 文本控制器 (TextEditingController)focusNode
: 焦点节点,可选 (FocusNode?)keyboardType
: 键盘类型 (TextInputType)maxLines
: 最大行数 (int)maxLength
: 最大长度,可选 (int?)onlyNumbers
: 是否只允许输入数字 (bool)onChanged
: 文本改变时的回调函数,可选 (ValueChangedonEditingComplete
: 编辑完成时的回调函数,可选 (VoidCallback?)onSubmitted
: 提交文本时的回调函数,可选 (ValueChangedconfig
: JuiTextInputItem的配置信息 (JuiItemConfig)showClearButton
: 是否显示清除按钮 (bool)