Skip to content

Commit

Permalink
fix: type checks
Browse files Browse the repository at this point in the history
  • Loading branch information
hig-dev committed Jan 17, 2024
1 parent 08cbb4d commit b85e073
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,9 @@ class _QuestionnaireTaskWidgetState extends State<QuestionnaireTaskWidget> {
setState(() {
_isLoading = true;
});
switch (response.runtimeType) {
case QuestionnaireState _:
await _addQuestionnaireResult<QuestionnaireState>(response as QuestionnaireState, context);
switch (response) {
case QuestionnaireState questionnaireState:
await _addQuestionnaireResult<QuestionnaireState>(questionnaireState, context);
break;
}
setState(() {
Expand Down
17 changes: 8 additions & 9 deletions app/lib/screens/study/tasks/task_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -34,23 +34,22 @@ class _TaskScreenState extends State<TaskScreen> {
taskInstance = TaskInstance.fromInstanceId(widget.taskInstance.id, study: subject!.study);
}

Widget? _buildTask() {
switch (taskInstance.task.runtimeType) {
case CheckmarkTask _:
Widget _buildTask() {
switch (taskInstance.task) {
case CheckmarkTask checkmarkTask:
return CheckmarkTaskWidget(
task: taskInstance.task as CheckmarkTask,
task: checkmarkTask,
key: UniqueKey(),
completionPeriod: taskInstance.completionPeriod,
);
case QuestionnaireTask _:
case QuestionnaireTask questionnaireTask:
return QuestionnaireTaskWidget(
task: taskInstance.task as QuestionnaireTask,
task: questionnaireTask,
key: UniqueKey(),
completionPeriod: taskInstance.completionPeriod,
);
default:
print('${taskInstance.task.runtimeType} is not a supported Task!');
return null;
throw ArgumentError('Task ${taskInstance.task.type} not supported');
}
}

Expand Down Expand Up @@ -93,7 +92,7 @@ class _TaskScreenState extends State<TaskScreen> {
),
]),
const SizedBox(height: 20),
_buildTask()!,
_buildTask(),
],
),
),
Expand Down
29 changes: 14 additions & 15 deletions app/lib/widgets/questionnaire/question_container.dart
Original file line number Diff line number Diff line change
Expand Up @@ -26,46 +26,45 @@ class _QuestionContainerState extends State<QuestionContainer> with AutomaticKee
widget.onDone(answer, widget.index);
}

QuestionWidget? getQuestionBody(BuildContext context) {
switch (widget.question.runtimeType) {
case ChoiceQuestion _:
QuestionWidget getQuestionBody(BuildContext context) {
switch (widget.question) {
case ChoiceQuestion choiceQuestion:
return ChoiceQuestionWidget(
question: widget.question as ChoiceQuestion,
question: choiceQuestion,
onDone: _onDone,
multiSelectionText: AppLocalizations.of(context)!.eligible_choice_multi_selection,
);
case BooleanQuestion _:
case BooleanQuestion booleanQuestion:
return BooleanQuestionWidget(
question: widget.question as BooleanQuestion,
question: booleanQuestion,
onDone: _onDone,
);
case ScaleQuestion _:
case ScaleQuestion scaleQuestion:
return ScaleQuestionWidget(
question: widget.question as ScaleQuestion,
question: scaleQuestion,
onDone: _onDone,
);
case VisualAnalogueQuestion _:
case VisualAnalogueQuestion visualAnalogueQuestion:
// todo remove this when older studies are finished
// ignore: deprecated_member_use_from_same_package
return VisualAnalogueQuestionWidget(
question: widget.question as VisualAnalogueQuestion,
question: visualAnalogueQuestion,
onDone: _onDone,
);
case AnnotatedScaleQuestion _:
case AnnotatedScaleQuestion annotatedScaleQuestion:
return AnnotatedScaleQuestionWidget(
question: widget.question as AnnotatedScaleQuestion,
question: annotatedScaleQuestion,
onDone: _onDone,
);
default:
print('Question not supported!');
return null;
throw ArgumentError('Question type ${widget.question.type} not supported');
}
}

@override
Widget build(BuildContext context) {
super.build(context);
final questionBody = getQuestionBody(context)!;
final questionBody = getQuestionBody(context);

return Card(
child: Padding(
Expand Down
2 changes: 1 addition & 1 deletion core/lib/src/models/questionnaire/answer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class Answer<V> {

static Answer fromJson(Map<String, dynamic> data) {
final dynamic value = data[keyResponse];
switch (value.runtimeType) {
switch (value) {
case bool:
return Answer<bool>.parseJson(data);
case num:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,19 @@ typedef SurveyQuestionFormDataFactory = QuestionFormData Function(
abstract class QuestionFormData implements IFormData {
static Map<SurveyQuestionType, SurveyQuestionFormDataFactory> questionTypeFormDataFactories = {
SurveyQuestionType.scale: (question, eligibilityCriteria) {
switch (question.runtimeType) {
switch (question) {
// First check for general scale which implements the other interfaces
case ScaleQuestion:
return ScaleQuestionFormData.fromDomainModel(question as ScaleQuestion, eligibilityCriteria);
case ScaleQuestion scaleQuestion:
return ScaleQuestionFormData.fromDomainModel(scaleQuestion, eligibilityCriteria);
// Remain backward compatible with specialized scale types
case AnnotatedScaleQuestion:
case AnnotatedScaleQuestion annotatedScaleQuestion:
return ScaleQuestionFormData.fromDomainModel(
ScaleQuestion.fromAnnotatedScaleQuestion(question as AnnotatedScaleQuestion),
ScaleQuestion.fromAnnotatedScaleQuestion(annotatedScaleQuestion),
eligibilityCriteria,
);
case VisualAnalogueQuestion:
case VisualAnalogueQuestion visualAnalogueQuestion:
return ScaleQuestionFormData.fromDomainModel(
ScaleQuestion.fromVisualAnalogueQuestion(question as VisualAnalogueQuestion),
ScaleQuestion.fromVisualAnalogueQuestion(visualAnalogueQuestion),
eligibilityCriteria,
);
}
Expand Down
2 changes: 1 addition & 1 deletion designer_v2/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ homepage: https://studyu.health
repository: https://github.com/hpi-studyu/studyu

environment:
sdk: '>=2.17.0 <4.0.0'
sdk: '>=3.0.0 <4.0.0'

dependencies:
archive: ^3.4.9
Expand Down

0 comments on commit b85e073

Please sign in to comment.