123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- import 'package:fis_measure/interfaces/process/items/item_metas.dart';
- import 'package:fis_measure/interfaces/process/items/types.dart';
- import 'package:fis_ui/index.dart';
- import 'package:fis_ui/interface/interactive_container.dart';
- import 'package:flutter/material.dart';
- import '../measure_tool.dart';
- import 'normal_child.dart';
- import 'pisa.dart';
- import 'rvsp.dart';
- class CustomComboItemGroup extends FStatelessWidget {
- static List<String> get specialItemTypes =>
- specialItemChildTypes.keys.toList();
- static final Map<String, List<String>> specialItemChildTypes = {
- MeasureTypes.RVSP: ["Rap"],
- MeasureTypes.PISA: ["AlsVel"],
- };
- final FInteractiveContainer businessParent;
- final ItemMeta itemMeta;
- final int activeIndex;
- final ValueChanged<int> onChildClick;
- const CustomComboItemGroup({
- super.key,
- required this.businessParent,
- required this.onChildClick,
- required this.itemMeta,
- required this.activeIndex,
- });
- @override
- FWidget build(BuildContext context) {
- List<FWidget> children = [];
- for (var i = 0; i < itemMeta.childItems.length; i++) {
- final childItem = itemMeta.childItems[i];
- children.add(
- NormalChildButton(
- businessParent: businessParent,
- activeIndex: activeIndex,
- index: i,
- itemMeta: childItem,
- onClick: () {
- onChildClick.call(i);
- },
- ),
- );
- }
- final specialWidgets = _buildSpecialWidgets();
- if (specialWidgets != null && specialWidgets.isNotEmpty) {
- children.addAll(specialWidgets);
- }
- return FContainer(
- decoration: const BoxDecoration(
- color: LeftSiderSelectMeasureState.childContainerBackground,
- borderRadius: BorderRadius.only(
- bottomLeft: Radius.circular(5), bottomRight: Radius.circular(5)),
- ),
- padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 5),
- child: FColumn(
- children: children,
- ),
- );
- }
- List<FWidget>? _buildSpecialWidgets() {
- final type = itemMeta.measureType;
- final childNames = specialItemChildTypes[type];
- if (childNames != null) {
- return childNames
- .map((e) => _SpecialChildItemWidget(typeName: e))
- .toList();
- }
- return null;
- }
- }
- class _SpecialChildItemWidget extends FStatelessWidget {
- late final Map<String, FWidgetBuilder> _specialWidgetMap = {
- "Rap": buildRap,
- "AlsVel": buildAlsVel,
- };
- final String typeName;
- _SpecialChildItemWidget({required this.typeName});
- @override
- FWidget build(BuildContext context) {
- final builder = _specialWidgetMap[typeName]!;
- final widget = builder(context);
- return widget;
- }
- FWidget buildRap(BuildContext context) {
- return const RapItemButton();
- }
- FWidget buildAlsVel(BuildContext context) {
- return const AlsVelItemButton();
- }
- }
|