163 lines
6.7 KiB
Dart
163 lines
6.7 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:stacked/stacked.dart';
|
|
import 'package:stacked/stacked_annotations.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/assessment/assessment_completion_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/assessment/assessment_failure_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/assessment/assessment_intro_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/assessment/assessment_result_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/assessment/first_assessment_form_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/assessment/fourth_assessment_form_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/assessment/result_analysis_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/assessment/retake_assessment_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/assessment/second_assessment_form_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/assessment/start_lesson_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/assessment/third_assessment_form_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/forms/age_group_form_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/forms/challenge_form_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/forms/country_region_form_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/forms/educational_background_form_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/forms/full_name_form_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/forms/learning_goal_form_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/forms/learning_reason_form_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/forms/occupation_form_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/forms/topic_form_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/language_selector.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/welcome/first_welcome_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/welcome/second_welcome_screen.dart';
|
|
import 'package:yimaru_app/ui/views/onboarding/screens/welcome/third_welcome_screen.dart';
|
|
|
|
import '../../common/validators/form_validator.dart';
|
|
import 'onboarding_viewmodel.dart';
|
|
import 'onboarding_view.form.dart';
|
|
|
|
@FormView(fields: [
|
|
FormTextField(name: 'answer', validator: FormValidator.validateForm),
|
|
FormTextField(name: 'fullName', validator: FormValidator.validateForm),
|
|
FormTextField(name: 'challenge', validator: FormValidator.validateForm),
|
|
FormTextField(name: 'occupation', validator: FormValidator.validateForm),
|
|
FormTextField(name: 'learningReason', validator: FormValidator.validateForm),
|
|
FormTextField(name: 'topic', validator: FormValidator.validateForm),
|
|
])
|
|
class OnboardingView extends StackedView<OnboardingViewModel>
|
|
with $OnboardingView {
|
|
const OnboardingView({Key? key}) : super(key: key);
|
|
|
|
void _initFormFields() {
|
|
answerController.text = 'Book';
|
|
}
|
|
|
|
@override
|
|
void onViewModelReady(OnboardingViewModel viewModel) {
|
|
_initFormFields();
|
|
syncFormWithViewModel(viewModel);
|
|
super.onViewModelReady(viewModel);
|
|
}
|
|
|
|
@override
|
|
OnboardingViewModel viewModelBuilder(
|
|
BuildContext context,
|
|
) =>
|
|
OnboardingViewModel();
|
|
|
|
@override
|
|
Widget builder(
|
|
BuildContext context,
|
|
OnboardingViewModel viewModel,
|
|
Widget? child,
|
|
) =>
|
|
_buildOnboardingScreensWrapper(viewModel);
|
|
|
|
Widget _buildOnboardingScreensWrapper(OnboardingViewModel viewModel) =>
|
|
PopScope(
|
|
canPop: false,
|
|
onPopInvokedWithResult: (value, data) => viewModel.pop(
|
|
language: viewModel.currentPage == 23 ? true : false),
|
|
child: _buildOnboardingScreens(viewModel));
|
|
|
|
Widget _buildOnboardingScreens(OnboardingViewModel viewModel) => IndexedStack(
|
|
index: viewModel.currentPage,
|
|
children: _buildScreens(),
|
|
);
|
|
|
|
List<Widget> _buildScreens() => [
|
|
_buildFirstWelcome(),
|
|
_buildSecondWelcome(),
|
|
_buildThirdWelcome(),
|
|
_buildFullNameForm(),
|
|
_buildEducationalBackgroundForm(),
|
|
_buildAgeGroupForm(),
|
|
_buildOccupationForm(),
|
|
_buildCountryRegionForm(),
|
|
_buildLearningGoalForm(),
|
|
_buildLearningReasonForm(),
|
|
_buildChallengeForm(),
|
|
_buildTopicForm(),
|
|
_buildAssessmentIntro(),
|
|
_buildFirstAssessmentForm(),
|
|
_buildSecondAssessment(),
|
|
_buildThirdAssessment(),
|
|
_buildFourthAssessment(),
|
|
_buildAssessmentFailure(),
|
|
_buildRetakeAssessment(),
|
|
_buildResultAnalysis(),
|
|
_buildAssessmentCompletion(),
|
|
_buildAssessmentResult(),
|
|
_buildStartLesson(),
|
|
_buildLanguageSelector()
|
|
];
|
|
|
|
Widget _buildFirstWelcome() => const FirstWelcomeScreen();
|
|
|
|
Widget _buildSecondWelcome() => const SecondWelcomeScreen();
|
|
|
|
Widget _buildThirdWelcome() => const ThirdWelcomeScreen();
|
|
|
|
Widget _buildFullNameForm() =>
|
|
FullNameFormScreen(fullNameController: fullNameController);
|
|
|
|
Widget _buildEducationalBackgroundForm() =>
|
|
const EducationalBackgroundFormScreen();
|
|
|
|
Widget _buildAgeGroupForm() => const AgeGroupFormScreen();
|
|
|
|
Widget _buildOccupationForm() =>
|
|
OccupationFormScreen(occupationController: occupationController);
|
|
|
|
Widget _buildCountryRegionForm() => const CountryRegionFormScreen();
|
|
|
|
Widget _buildLearningGoalForm() => const LearningGoalFormScreen();
|
|
|
|
Widget _buildLearningReasonForm() => LearningReasonFormScreen(
|
|
learningReasonController: learningReasonController);
|
|
|
|
Widget _buildChallengeForm() =>
|
|
ChallengeFormScreen(challengeController: challengeController);
|
|
|
|
Widget _buildTopicForm() => TopicFormScreen(topicController: topicController);
|
|
|
|
Widget _buildAssessmentIntro() => const AssessmentIntroScreen();
|
|
|
|
Widget _buildFirstAssessmentForm() =>
|
|
FirstAssessmentFormScreen(answerController: answerController);
|
|
|
|
Widget _buildSecondAssessment() => const SecondAssessmentFormScreen();
|
|
|
|
Widget _buildThirdAssessment() => const ThirdAssessmentFormScreen();
|
|
|
|
Widget _buildFourthAssessment() => const FourthAssessmentFormScreen();
|
|
|
|
Widget _buildAssessmentFailure() => const AssessmentFailureScreen();
|
|
|
|
Widget _buildRetakeAssessment() => const RetakeAssessmentScreen();
|
|
|
|
Widget _buildResultAnalysis() => const ResultAnalysisScreen();
|
|
|
|
Widget _buildAssessmentCompletion() => const AssessmentCompletionScreen();
|
|
|
|
Widget _buildAssessmentResult() => const AssessmentResultScreen();
|
|
|
|
Widget _buildStartLesson() => const StartLessonScreen();
|
|
|
|
Widget _buildLanguageSelector() => const LanguageSelector();
|
|
}
|