user_onboarding_view.dart 1.15 KB
import 'package:flutter/material.dart';
import 'package:get/get.dart';

import '../controllers/user_onboarding_controller.dart';
import '../widget/guide_common_scaffold.dart';
import '../widget/onboarding_common_widgets.dart';
import 'user_onboarding_pages.dart';

class UserOnboardingView extends GetView<UserOnboardingController> {
  const UserOnboardingView({super.key});

  @override
  Widget build(BuildContext context) {
    final pages = buildUserOnboardingPages(context, argument: Get.arguments);

    return Obx(() {
      final pageIndex = controller.currentPageIndex.value;
      // 订阅选项变化,刷新底部按钮 enabled 状态
      final _ = controller.selectionVersion.value;
      final page = pages[pageIndex.clamp(0, pages.length - 1)];

      return GuideCommonScaffold(
        onBackPressed: controller.goBack,
        bottom: OnboardingBottomButton(
          label: userOnboardingButtonLabel(context, pageIndex),
          enabled: controller.canContinue(pageIndex),
          onPressed: () => controller.goNext(),
        ),
        child: KeyedSubtree(
          key: ValueKey(pageIndex),
          child: page,
        ),
      );
    });
  }
}