junny_form 0.0.9
junny_form: ^0.0.9 copied to clipboard
A flexible Flutter form management library that supports centralized field management, async validation, and custom field types.
Changelog #
2025-01-15 - v0.0.9 #
- 🐛 重要修复:选择类组件 hintText 重叠显示问题
- 🔧 修复重叠 hintText 渲染 • 修复选择类组件(JunnyChoiceField、JunnyDateField、JunnyChipsField 等)出现重叠 hintText 的问题 • 移除 buildContent 中手动的 hintText 渲染逻辑,统一由 InputDecorator 处理 • 确保所有组件的 hintText 样式完全一致 • 包括字典多选、标签多选、地址选择等所有选择类组件
- 🏷️ 全局配置字段重命名优化
- 📝 简化字段命名
•
filterPlaceholderBuilder→filterHintBuilder•pleaseSelectPlaceholderBuilder→pleaseSelectHintBuilder•pleaseEnterPlaceholderBuilder→pleaseEnterHintBuilder• 统一使用HintBuilder后缀,提升代码可读性 - 🔄 向后兼容性 • 需要更新初始化代码中的参数名 • 功能保持完全不变,仅为命名优化
- 🔧 JunnySelectionFieldState.buildContent 修复 • 修复选择类组件(JunnyChoiceField、JunnyDateField 等)当值为空时不显示 hintText 的问题 • 当 formatValue(value) 为空且存在 hintText 时,正确显示带有 hintStyle 样式的提示文本 • 保持现有值不为空时的显示逻辑不变 • 确保选择类组件与输入类组件具有一致的 hintText 显示行为
- 🏷️ 全局配置字段重命名
• 将
pleaseSelectBuilder重命名为pleaseSelectPlaceholderBuilder• 将pleaseEnterBuilder重命名为pleaseEnterPlaceholderBuilder• 更新所有相关引用,包括 JunnyFormGlobalConfig.init 方法参数 • 统一占位符构建器的命名规范,符合pleaseXXXPlaceholderBuilder格式 - 🛡️ 向后兼容性 • 功能修复不影响现有 API 使用方式 • 字段重命名需要更新初始化代码中的参数名 • 保持所有组件的默认行为和样式不变
- 📝 简化字段命名
•
- 🔖 版本
- 升级版本至
0.0.9
- 升级版本至
2025-06-11 - v0.0.8 #
- 🐛 重要修复:Filter 组件状态恢复错误
- 🔧 FilterSearchBar 异常处理增强 • 修复 FilterSearchBar._getHintText 方法中访问 field.effectiveInputDecoration 时的 RestorableValue.value 错误 • 添加异常处理机制,当状态恢复失败时使用备用的 hintText 获取方案 • 确保筛选弹窗可以正常重复打开,不会因状态恢复问题导致应用崩溃 • 解决 TextField 第一次输入正常,再次打开筛选弹窗时出现错误的问题
- 🛡️ 稳定性提升 • 向后兼容,不影响现有功能 • 安全可靠,避免状态访问异常 • 确保始终有合理的 placeholder 显示
- ✨ 新功能:字典多选字段数组格式支持
- 🎯 JunnyDictChipsField 数据格式扩展
• 新增
saveAsArray参数,允许将值保存为List<String>格式 • 支持灵活的数据保存格式配置,同时保持向后兼容 • 默认保存为逗号分隔字符串,可配置为数组格式 - 📊 智能数据处理
• 调整
_initValueByCodes和onValueChanged方法,兼容字符串和数组两种数据格式 • 自动识别外部数据类型,根据配置明确表单数据类型 • 优化类型安全性,避免不必要的类型转换 - 🔧 参数模型完善
• 更新
JunnyFormDictChipsParams类,添加saveAsArray字段配置 • 包括构造函数、copyWith、toMap、fromMap、相等性比较的完整支持
- 🎯 JunnyDictChipsField 数据格式扩展
• 新增
- ✨ 新功能:智能默认 hintText 生成
- 🎯 自动提示文本生成 • 输入类组件:自动生成 '请输入' + title • 选择类组件:自动生成 '请选择' + title • 基于虚方法的类型安全设计,零侵入性实现
- 🔧 技术实现优化 • 在基类 JunnyFormFieldState 中定义虚方法 getDefaultHintText() • 在 JunnyInputFieldState 和 JunnySelectionFieldState 中重写此方法 • 通过 inputDecoration getter 动态注入默认 hintText • 保持用户自定义 hintText 的优先级
- 📊 全局配置扩展 • 新增 pleaseSelectPlaceholderBuilder 和 pleaseEnterPlaceholderBuilder 配置项 • 支持自定义默认提示文本生成规则 • 减少重复的 hintText 设置工作
- 🔧 优化:选择字段参数系统重构
- ✨ 参数类型体系完善 • 新增 SelectionTapParams
- 🎯 功能特性增强 • 支持选项禁用条件 (disabledWhen) • 支持选项隐藏条件 (hiddenWhen) • 支持自定义选项标题构建器 (optionTitleBuilder) • 为 JunnyChoiceField 添加完整的 selectionParams 支持
- 🛠️ 代码质量提升
- 修复 BoxConstraints 错误:确保 maxWidth >= minWidth
- 统一 hintText 显示行为:默认和自定义获得相同处理路径
- 类型安全(无 dynamic 类型),编译时检查(无运行时反射)
- 高扩展性(新组件只需重写一个方法),性能优秀(只在初始化时计算一次)
- 🔖 版本
- 升级版本至
0.0.8
- 升级版本至
2025-05-29 - v0.0.7 #
- ✨ 新增功能:附件组件自定义字段名支持
- 🔧 JunnyAttachmentField 增强
• 新增
attachmentsFieldName参数,默认为 'attachments',支持自定义为 'testAttachments' 等 • 新增deleteAttachmentsFieldName参数,默认为 'deleteAttachments',支持自定义为 'testDeleteAttachments' 等 • 适配特殊页面中使用非标准字段名的业务需求(如同时存在 attachments 和 testAttachments) • 保持完全向后兼容性,默认行为不变 - 📊 数据处理优化
• 更新
_getAttachmentsFromFormData()方法支持自定义字段名 • 更新_updateAttachmentsToFormData()方法支持自定义字段名 • 更新_syncInitialData()方法支持自定义字段名 • 更新_updateDeletedAttachments()方法支持自定义删除字段名 - 🛠️ 参数配置增强
• 更新
JunnyFormAttachmentParams类,添加字段名配置选项 • 提供默认值,确保大多数情况下无需显式配置 • 完善类型安全和参数验证 - 📝 文档和示例 • 更新组件文档注释,说明自定义字段名功能 • 在示例页面中添加自定义字段名使用演示 • 更新 README 文件,提供详细的使用说明和数据结构示例
- 🔧 JunnyAttachmentField 增强
• 新增
- 🔖 版本
- 升级版本至
0.0.7
- 升级版本至
2025-05-29 - v0.0.6 #
- 🚀 重大更新:附件组件v3版本适配
- ✨ 全面重构
JunnyAttachmentField以支持v3版本API数据结构 • 支持完整附件元数据存储,不再仅保存fileId • 按照v3数据结构存储:attachments.{fieldName}和deleteAttachments.{fieldName}• 自动处理删除附件跟踪,无需手动管理 • 优化数据获取性能,减少不必要的网络请求 - 🔧 性能优化 • 修复重复的值变化触发问题 • 移除重复的监听器添加,避免内存泄漏 • 解决循环调用风险,优化数据获取逻辑 • 实现延迟更新机制(200ms防抖),减少频繁UI刷新
- 📊 数据管理增强 • 双重数据存储策略:同时支持字段本身和attachments字段 • 自动数据同步:初始化时智能同步v3格式数据 • 完善的删除跟踪:自动记录和管理删除的附件ID
- 🛠️ 代码质量提升 • 优化生命周期管理,正确处理定时器清理 • 改进错误边界处理,增强稳定性 • 完善文档注释,提供详细的使用说明和示例
- ✨ 全面重构
- 📝 配置更新
- 更新
AttachmentTapParams参数结构以适配新的数据格式 - 优化全局配置中的附件相关方法签名
- 更新
- 🔖 版本
- 升级版本至
0.0.6
- 升级版本至
2025-05-16 - v0.0.5 #
- 📝 文档
- 完善
JunnyFormFieldState中parentDecorationEnabledgetter 的文档注释,阐明其与enabled和readOnly状态的交互行为
- 完善
- ⚙️ 杂项
- 将示例项目的 Android
.cxx目录添加到.gitignore - 停止追踪示例项目的 Android
.cxx目录
- 将示例项目的 Android
- 🔖 版本
- 升级版本至
0.0.5
- 升级版本至
2025-05-15 - v0.0.4+2 #
- ✨ 新增功能:表单字段类型转换器
- 🔧 FormFieldTypeConverter 实现
• 实现基础类型、集合类型的安全转换
• 支持可空性和泛型元素类型处理
• 集成到
JunnyFormFieldState中进行值转换
- 🔧 FormFieldTypeConverter 实现
• 实现基础类型、集合类型的安全转换
• 支持可空性和泛型元素类型处理
• 集成到
- ♻️ 重构优化
- 🛠️ JunnyFormFieldState 重构 • 调整类成员顺序和注释,符合最新规范 • 优化部分 Getter 和私有方法的实现
- 🎯 JunnyWidgetField 布局控制增强
• 允许用户通过
JunnyFormWidgetParams中的preventChildExpansion和defaultChildAlignment参数更精细地控制自定义子组件的布局行为 • 如果builder返回Align组件,则直接使用用户的Align设置 • 非Align组件默认情况下会防止意外拉伸并左对齐,但此行为可通过新参数配置 • 优化了内部hintText的处理逻辑,确保自定义组件上方提示的正确显示,并避免与InputDecorator的默认行为冲突
- 📝 代码质量提升
- 调整了
JunnyFormWidgetParams类中成员的声明顺序,以符合 Dart 编码规范 - 移除了
JunnyWidgetField构造函数中冗余的hintText: null参数 - 详细更新了
JunnyWidgetField和JunnyFormWidgetParams的文档注释,说明了新的布局参数和行为 - 提供了更清晰的示例代码来演示新功能
- 调整了
- 🔖 版本
- 升级版本至
0.0.4+2
- 升级版本至
2025-05-14 - v0.0.4+1 #
- 🔧 字段优化
- 优化了
JunnyFormFieldState中InputDecoration的hintText显示逻辑,以确保在特定条件下行为正确
- 优化了
- 🔖 版本
- 升级版本至
0.0.4+1
- 升级版本至
2025-05-14 - v0.0.4 #
- 📦 依赖更新
- 更新了多个直接和间接依赖项至其最新的兼容版本,包括
provider,device_info_plus,http等
- 更新了多个直接和间接依赖项至其最新的兼容版本,包括
- 🎨 代码风格
- 调整了
JunnyFormFieldState和InputState中的注释结构以符合代码风格指南
- 调整了
- 🔖 版本
- 升级版本至
0.0.4
- 升级版本至
2025-05-13 - v0.0.3 #
- 🔧 全局配置优化
- nullErrorMessageBuilder 函数现在接收 BuildContext 参数
- selectAttachments 函数添加了 BuildContext 参数
- subtableLengthBuilder 函数添加了 BuildContext 参数
- 🛠️ 代码结构优化
- 优化代码结构,移除多余的区域注释
- 更新示例代码中的函数签名
- 🔖 版本
- 升级版本至
0.0.3
- 升级版本至
2025-05-09 - v0.0.2 #
- 🔧 表单控制器优化
- 优化表单控制器代码结构和注释
- 改进代码可读性和可维护性
- 添加详细的函数级文档注释
- 🔖 版本
- 升级版本至
0.0.2
- 升级版本至
2024-11-20 - v0.0.1 #
- 🎉 初始版本
- 项目初始化
- 基础表单组件实现
- 🔖 版本
- 初始版本
0.0.1
- 初始版本