tolyui_form 0.0.2
tolyui_form: ^0.0.2 copied to clipboard
Compact, composable form controls for Toly UI.
tolyui_form #
面向 Toly UI 的紧凑、可组合 Flutter 表单控件。
组件规范 #
tolyui-form 组件规范用于逐项定义通用表单控件。第一项为类型动作选择器,已在当前源码中实现,从0.0.2起提供。具体契约、参数与行为见规范正文。已确认的节点字段、字形、留白和动作区尺寸见紧凑表单基础尺寸。
类型动作选择器 #
TolyTypeActionSelector<T> 将类型下拉与动作图标合并为一行。TolyTypeActionOption<T> 定义类型值、标签、动作图标和提示。
TolyTypeActionSelector<String>(
value: sourceType,
options: const [
TolyTypeActionOption(
value: 'file',
label: '系统文件',
actionIcon: Icon(Icons.folder_open_outlined),
actionLabel: '选择系统文件',
),
TolyTypeActionOption(
value: 'library',
label: '媒体库',
actionIcon: Icon(Icons.photo_library_outlined),
actionLabel: '从媒体库选择图片',
),
],
onTypeChanged: changeSourceType,
onAction: requestSource,
autoTriggerOnSelect: true,
actionRunning: isChoosingSource,
)
宿主在onTypeChanged接收并更新value。onAction每次拿到本次操作的类型;如需异步选择文件或截图,由宿主执行并同步设置actionRunning,组件会保留原图标并禁用两区,不展示 loading。取消或失败由宿主处理,不回滚类型、不自动重试。
默认autoTriggerOnSelect: false,初始化、回填和修改开关不会自动执行;开启后每次选择菜单项执行一次,包括重复选择当前类型。actionEnabled: false仅禁用动作,enabled: false整体禁用。主题和密度沿用TolyFormThemeData,紧凑默认28px;可将主题compactHeight设为24px。类型文字默认11px,动作区26px,支持Tab、方向键、Enter/Space与Esc。
独立示例组件展示三种图片来源、自动触发开关和回调记录。它是可嵌入展示应用的Widget,不是带平台宿主的独立App。
flutter test --no-pub
flutter analyze --no-pub lib test example/type_action_selector.dart
尺寸输入器 #
TolyDimensionInput将W/H输入与比例锁合成一行。TolyDimensionInputStyle支持字段宽高、文字、圆角、光标、选区与动作区尺寸;未覆盖项沿用表单主题。详见F002规范和可嵌入示例。
TolyDimensionInput(
widthController: widthController,
heightController: heightController,
widthFocusNode: widthFocus,
heightFocusNode: heightFocus,
locked: lockAspectRatio,
onLockChanged: changeLock,
onWidthChanged: changeWidthDraft,
onHeightChanged: changeHeightDraft,
onWidthSubmitted: commitWidth,
onHeightSubmitted: commitHeight,
style: const TolyDimensionInputStyle(height: 28),
)
宿主拥有并销毁控制器与焦点。组件只返回草稿/回车/比例请求,不自动联动另一侧;失焦提交、Form校验、单位、范围及实际尺寸计算由宿主提供。固定fieldWidth时包裹内容,空值时均分有界宽度。默认没有Tooltip和loading。当前源码已实现,从0.0.2起提供。