| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- 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<VberDictSelect> createState() => _VberDictSelectState();
- }
- class _VberDictSelectState extends State<VberDictSelect> {
- @override
- Widget build(BuildContext context) {
- return VberSelect<DictDataModel>(
- 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,
- );
- }
- }
|