import 'package:cpt_profile/modules/setting/setting_view_model.dart';
import 'package:cpt_profile/router/page/profile_page_router.dart';
import 'package:cs_resources/generated/l10n.dart';
import 'package:cs_resources/theme/app_colors_theme.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:auto_route/auto_route.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:plugin_basic/modules/global_web_page.dart';
import 'package:plugin_basic/provider/app_config/app_config_service.dart';
import 'package:router/ext/auto_router_extensions.dart';
import 'package:widgets/ext/ex_widget.dart';
import 'package:widgets/my_appbar.dart';
import 'package:widgets/my_button.dart';
import 'package:widgets/my_text_view.dart';
import 'package:widgets/shatter/setting_item_container.dart';

@RoutePage()
class SettingPage extends HookConsumerWidget {
  const SettingPage({Key? key}) : super(key: key);

  //启动当前页面
  static void startInstance({BuildContext? context}) {
    if (context != null) {
      context.router.navigate(const SettingPageRoute());
    } else {
      appRouter.navigate(const SettingPageRoute());
    }
  }

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    final viewModel = ref.watch(settingViewModelProvider.notifier);
    final state = ref.watch(settingViewModelProvider);

    return Scaffold(
      appBar: MyAppBar.appBar(context, S.current.settings, backgroundColor: context.appColors.backgroundWhite),
      backgroundColor: context.appColors.backgroundDark,
      body: SingleChildScrollView(
        scrollDirection: Axis.vertical,
        physics: const BouncingScrollPhysics(),
        child: Column(
          mainAxisSize: MainAxisSize.max,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            const SizedBox(height: 10),

            //允许通知
            SettingItemContainer(
              title: S.current.enable_notification,
              rightWidget: CupertinoSwitch(
                activeColor: context.appColors.textPrimary,
                value: state.enbaleNofitication,
                onChanged: (value) {
                  viewModel.changeEnableNotification(value);
                },
              ),
              isShowMoreIcon: false,
            ),

            //修改手机号码
            SettingItemContainer(title: S.current.change_mobile_phone).onTap(viewModel.gotoChangeMobilePage),

            //重置密码
            SettingItemContainer(title: S.current.reset_password).onTap(viewModel.gotoResetPasswordPage),

            //隐私协议
            SettingItemContainer(title: S.current.privacy_policy).onTap((){
              GlobalWebPage.startInstance(context: context, title: S.current.privacy_policy, url: 'https://24ifm.com/privacy-policy');
            }),

            //服务条款
            SettingItemContainer(title: S.current.terms_conditions).onTap((){
              GlobalWebPage.startInstance(context: context, title: S.current.terms_conditions, url: 'https://24ifm.com/terms-and-conditions');
            }),

            //删除账号
            SettingItemContainer(title: S.current.account_deactivation).onTap(viewModel.doDeleteAccount),

            //评价我们 (先隐藏评价)
            // SettingItemContainer(title: S.current.rate_us).onTap((){
            //   //跳转到应用商城
            //   viewModel.rateUs();
            // }),

            //版本号
            SettingItemContainer(
              title: S.current.version_no,
              rightWidget: MyTextView(
                AppConfigService.getState().version,
                textColor: context.appColors.textPrimary,
                fontSize: 15,
                isFontMedium: true,
              ),
              isShowMoreIcon: false,
            ),

            //提交按钮
            MyButton(
              onPressed: viewModel.doLogout,
              text: S.current.logout,
              textColor: Colors.white,
              backgroundColor: context.appColors.btnBgDefault,
              fontWeight: FontWeight.w500,
              type: ClickType.throttle,
              fontSize: 16,
              minHeight: 50,
              radius: 5,
            ).marginOnly(top: 22, bottom: 25, left: 15, right: 15),
          ],
        ),
      ),
    );
  }
}
