import 'package:flutter/material.dart'; import 'package:chicken_farm/components/vb_select.dart'; import 'package:chicken_farm/stores/dict_stroe.dart'; import 'package:chicken_farm/modes/system/dict.dart'; /// 基于字典数据的选择器组件 /// 传入dict_type获取字典数据并显示为下拉选项 class VberDictSelect extends StatefulWidget { /// 字典类型 final String dictType; /// 当前选中的值 final String? value; /// 值改变回调 final Function(String?)? onChanged; /// 提示文字 final String? hint; /// 是否启用 final bool enabled; /// 是否显示"全部"选项 final bool showAll; /// 是否隐藏下划线 final bool hideUnderline; /// 是否显示清空按钮 final bool showClearButton; const VberDictSelect({ super.key, required this.dictType, this.value, this.onChanged, this.hint, this.enabled = true, this.showAll = false, this.hideUnderline = false, this.showClearButton = false, }); @override State createState() => _VberDictSelectState(); } class _VberDictSelectState extends State { @override Widget build(BuildContext context) { return VberSelect( fetchData: () async { final dictList = await DictStore().getDictByType(widget.dictType); return dictList ?? []; }, converter: (DictDataModel data) { return SelectOption( label: data.dictLabel, value: data.dictValue, extra: data, ); }, value: widget.value, // 直接传递widget.value以确保更新 onChanged: widget.onChanged, hint: widget.hint, enabled: widget.enabled, showAll: widget.showAll, hideUnderline: widget.hideUnderline, showClearButton: widget.showClearButton, ); } }