83 lines
2.7 KiB
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();
|
|
}
|