buildPendant method
Widget?
buildPendant(
- List<
DecoratorPendant< list,T> > - DecoratorPendantPosition positioned,
- DecoratorBoxStatus<
T> status, { - Axis direction = Axis.horizontal,
Implementation
Widget? buildPendant(List<DecoratorPendant<T>> list, DecoratorPendantPosition positioned, DecoratorBoxStatus<T> status,
{Axis direction = Axis.horizontal}) {
final listPendant =
list.where((element) => element.positioned == positioned);
if (listPendant.isEmpty) return null;
Widget buildVisibilityPendant(DecoratorPendant<T> pendant) {
if (pendant.builder != null) {
return Visibility(
maintainAnimation: pendant.maintainSize,
maintainState: pendant.maintainSize,
maintainSize: pendant.maintainSize,
child: pendant.builder!(status));
}
bool isEditingVisible = true;
bool isHasFocusVisible = true;
bool isValueVisible = true;
if (pendant.needEditing != null) {
isEditingVisible = pendant.needEditing == status.isEditing;
}
if (pendant.needFocus != null) {
isHasFocusVisible = pendant.needFocus == status.hasFocus;
}
if (pendant.needValue != null) {
isValueVisible = pendant.needValue!(status.value);
}
return Visibility(
visible: isEditingVisible && isHasFocusVisible && isValueVisible,
maintainAnimation: pendant.maintainSize,
maintainState: pendant.maintainSize,
maintainSize: pendant.maintainSize,
child: pendant.child!);
}
if (listPendant.length == 1) {
return buildVisibilityPendant(listPendant.first);
}
return Flex(
mainAxisSize: MainAxisSize.min,
direction: direction,
children: listPendant
.map((pendant) => buildVisibilityPendant(pendant))
.toList());
}