configure_select.dart 1.3 KB

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