resolveQuestionBlock method

Widget resolveQuestionBlock(
  1. BuildContext context
)

Implementation

Widget resolveQuestionBlock(BuildContext context) {
  var cs = Theme.of(context).colorScheme;
  switch (widget.question.type.trim().toLowerCase()) {
    case 'markdown':
      return MarkdownInput(
        question: widget.question,
        styleSheet: widget.quiz.theme.getGenericMarkdownTheme(context),
      );
    case 'boolean':
      return BooleanInput(
        question: widget.question,
        hasNullableOption: false,
        onFormUpdated: widget.onFormUpdated,
        unselectedColor: cs.surface,
        selectedColor: widget.selectedColor,
      );
    case 'nullable_boolean':
      return BooleanInput(
        question: widget.question,
        hasNullableOption: true,
        onFormUpdated: widget.onFormUpdated,
        unselectedColor: cs.surface,
        selectedColor: widget.selectedColor,
      );
    case 'checkbox':
    case 'check':
      return SelectInput(
        isMultiple: true,
        overrideDecorator: 'check',
        question: widget.question,
        onFormUpdated: widget.onFormUpdated,
        onOtherFieldUpdated: widget.onOtherFieldUpdated,
        textColor: widget.textColor,
        selectedTextColor: cs.surface,
        selectedColor: widget.selectedColor,
      );
    case 'radio':
      return SelectInput(
        isMultiple: false,
        overrideDecorator: 'radio',
        question: widget.question,
        onFormUpdated: widget.onFormUpdated,
        onOtherFieldUpdated: widget.onOtherFieldUpdated,
        textColor: widget.textColor,
        selectedTextColor: cs.surface,
        selectedColor: widget.selectedColor,
      );
    case 'select':
      return SelectInput(
        overrideDecorator: widget.question.params.selectorDisplayMode ?? 'button',
        isMultiple: ((widget.question.params.isMultiple == true) || widget.question.params.selectorDisplayMode == 'check' || widget.question.params.selectorDisplayMode == 'checkbox') ? true : false,
        question: widget.question,
        onFormUpdated: widget.onFormUpdated,
        onOtherFieldUpdated: widget.onOtherFieldUpdated,
        textColor: widget.textColor,
        selectedTextColor: cs.surface,
        selectedColor: widget.selectedColor,
      );
    case 'float':
      return FloatInput(
        question: widget.question,
        onFormUpdated: widget.onFormUpdated,
      );
    case 'text':
      return TextInput(
        question: widget.question,
        onFormUpdated: widget.onFormUpdated,
      );
    case 'textarea':
      return TextInput(
        question: widget.question,
        minimumInputLines: 4,
        onFormUpdated: widget.onFormUpdated,
      );
    /* case 'date':
      return DateInput(
        question: widget.question,
      ); */
    case 'scale':
      return ScaleInput(
        question: widget.question,
        onFormUpdated: widget.onFormUpdated,
        textColor: widget.textColor,
        selectedColor: widget.selectedColor,
      );

    case 'rating':
      return RatingInput(
        question: widget.question,
        onFormUpdated: widget.onFormUpdated,
        textColor: widget.textColor,
        selectedColor: widget.selectedColor,
      );
    default:
      return notImplementedFallback(widget.question.type);
  }
}