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 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 _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(); }