configure_select.dart 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import 'package:fis_i18n/i18n.dart';
  2. import 'package:fis_ui/index.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:fis_theme/theme.dart';
  5. class FConfigureSelect extends FStatefulWidget {
  6. static const C_SELECT_HEIGHT = 38.0;
  7. final List<FSelectModel> source;
  8. final ValueCallback onChanged;
  9. final bool? readOnly;
  10. String? value;
  11. FConfigureSelect({
  12. required this.source,
  13. required this.onChanged,
  14. this.value,
  15. this.readOnly,
  16. });
  17. @override
  18. FState<FConfigureSelect> createState() => _FConfigureSelectState();
  19. }
  20. class _FConfigureSelectState extends FState<FConfigureSelect> {
  21. @override
  22. void initState() {
  23. super.initState();
  24. }
  25. @override
  26. FWidget build(BuildContext context) {
  27. final select = FSelect<FSelectModel, String>(
  28. source: widget.source,
  29. fontFamily: FTheme.ins.localeSetting.fontFamily,
  30. hintText: i18nBook.remedical.select.t,
  31. value: widget.value == '' ? null : widget.value,
  32. clearable: true,
  33. height: FConfigureSelect.C_SELECT_HEIGHT,
  34. optionLabelExtractor: (data) => data.name,
  35. optionValueExtractor: (data) => data.code,
  36. onSelectChanged: (value, index) {
  37. widget.onChanged(value);
  38. },
  39. );
  40. return FExpanded(child: select);
  41. }
  42. }