resolveQuestionBlock method
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);
}
}