Yimaru-Mobile/lib/ui/views/startup/startup_view.dart

71 lines
2.2 KiB
Dart

import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter_carousel_widget/flutter_carousel_widget.dart';
import 'package:flutter_svg/svg.dart';
import 'package:stacked/stacked.dart';
import 'package:yimaru_app/ui/common/ui_helpers.dart';
import 'package:yimaru_app/ui/views/startup/screens/first_startup_screen.dart';
import 'package:yimaru_app/ui/views/startup/screens/second_startup_screen.dart';
import 'package:yimaru_app/ui/views/startup/screens/third_startup_screen.dart';
import 'package:yimaru_app/ui/widgets/custom_circular_progress_indicator.dart';
import '../../common/app_colors.dart';
import '../../common/enmus.dart';
import '../../common/translations/locale_keys.g.dart';
import 'startup_viewmodel.dart';
class StartupView extends StackedView<StartupViewModel> {
final String? label;
const StartupView({Key? key, this.label}) : super(key: key);
@override
Widget builder(
BuildContext context,
StartupViewModel viewModel,
Widget? child,
) =>
_buildScaffoldWrapper(viewModel);
Widget _buildScaffoldWrapper(StartupViewModel viewModel) => Scaffold(
backgroundColor: kcPrimaryColor,
body: _buildStartupScreens(viewModel),
);
Widget _buildStartupScreens(StartupViewModel viewModel) => FlutterCarousel(
options: FlutterCarouselOptions(
autoPlay: true,
viewportFraction: 1,
showIndicator: false,
height: double.maxFinite,
),
items: _buildScreens(),
);
List<Widget> _buildScreens() => [
_buildFirstStartup(),
_buildSecondStartup(),
_buildThirdWelcome(),
];
Widget _buildFirstStartup() => FirstStartupScreen(
label: label,
);
Widget _buildSecondStartup() => SecondStartupScreen(
label: label,
);
Widget _buildThirdWelcome() => ThirdStartupScreen(
label: label,
);
@override
StartupViewModel viewModelBuilder(BuildContext context) => StartupViewModel();
@override
void onViewModelReady(StartupViewModel viewModel) => SchedulerBinding.instance
.addPostFrameCallback((timeStamp) => viewModel.runStartupLogic());
}