import 'package:flutter/material.dart'; import 'package:stacked/stacked.dart'; import 'package:stacked/stacked_annotations.dart'; import 'package:yimaru_app/ui/views/onboarding/forms/age_group_form.dart'; import 'package:yimaru_app/ui/views/onboarding/forms/country_region_form.dart'; import 'package:yimaru_app/ui/views/onboarding/forms/educational_background_form.dart'; import 'package:yimaru_app/ui/views/onboarding/forms/full_name_form.dart'; import 'package:yimaru_app/ui/views/onboarding/forms/learning_goal_form.dart'; import 'package:yimaru_app/ui/views/onboarding/forms/learning_reason_form.dart'; import 'package:yimaru_app/ui/views/onboarding/forms/occupation_form.dart'; import '../../common/validators/onboarding_form_validator.dart'; import 'onboarding_viewmodel.dart'; import 'onboarding_view.form.dart'; @FormView(fields: [ FormTextField( name: 'fullName', validator: OnboardingFormValidator.validateForm), FormTextField( name: 'occupation', validator: OnboardingFormValidator.validateForm), FormTextField( name: 'learningReason', validator: OnboardingFormValidator.validateForm) ]) class OnboardingView extends StackedView with $OnboardingView { const OnboardingView({Key? key}) : super(key: key); @override Widget builder( BuildContext context, OnboardingViewModel viewModel, Widget? child, ) => _buildOnboardingScreens(viewModel); Widget _buildOnboardingScreens(OnboardingViewModel viewModel) => IndexedStack( index: viewModel.currentStep, children: _buildScreens(), ); List _buildScreens() => [ _buildFullNameForm(), _buildEducationalBackgroundForm(), _buildAgeGroupForm(), _buildOccupationForm(), _buildCountryRegionForm(), _buildLearningGoalForm(), _buildLearningReasonForm() ]; Widget _buildFullNameForm() => FullNameForm( fullNameController: fullNameController, ); Widget _buildEducationalBackgroundForm() => const EducationalBackgroundForm(); Widget _buildAgeGroupForm() => const AgeGroupForm(); Widget _buildOccupationForm() => OccupationForm( occupationController: occupationController, ); Widget _buildCountryRegionForm() => const CountryRegionForm(); Widget _buildLearningGoalForm() => const LearningGoalForm(); Widget _buildLearningReasonForm() => LearningReasonForm( learningReasonController: learningReasonController, ); @override void onViewModelReady(OnboardingViewModel viewModel) { syncFormWithViewModel(viewModel); super.onViewModelReady(viewModel); } @override OnboardingViewModel viewModelBuilder( BuildContext context, ) => OnboardingViewModel(); }