Yimaru-Mobile/StudioProjects/yimaru_app/lib/ui/views/onboarding/onboarding_view.dart

83 lines
2.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/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<OnboardingViewModel>
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<Widget> _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();
}