precode_sendemail_view.dart 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_screenutil/flutter_screenutil.dart';
  3. import 'package:get/get.dart';
  4. import 'package:nomo/app/base/base_view.dart';
  5. import 'package:nomo/app/widgets/submit_btn.dart';
  6. import 'package:nomo/config/theme/theme_extensions/theme_extension.dart';
  7. import '../../../../../config/theme/dark_theme_colors.dart';
  8. import '../../../../../config/translations/strings_enum.dart';
  9. import '../../../../constants/assets.dart';
  10. import '../../../../constants/iconfont/iconfont.dart';
  11. import '../../../../widgets/info_card.dart';
  12. import '../../../../widgets/ix_app_bar.dart';
  13. import '../../../../widgets/ix_image.dart';
  14. import '../../../../widgets/ix_text_field.dart';
  15. import '../controllers/precode_sendemail_controller.dart';
  16. class PrecodeSendemailView extends BaseView<PrecodeSendemailController> {
  17. const PrecodeSendemailView({super.key});
  18. @override
  19. PreferredSizeWidget? get appBar =>
  20. IXAppBar(title: Strings.sendPreCodeToEmail.tr);
  21. @override
  22. Widget buildContent(BuildContext context) {
  23. return Padding(
  24. padding: EdgeInsets.symmetric(horizontal: 14.w),
  25. child: SingleChildScrollView(
  26. child: Column(
  27. children: [
  28. 10.verticalSpaceFromWidth,
  29. // 邮箱输入框
  30. _buildEmailInput(),
  31. 20.verticalSpaceFromWidth,
  32. // 发送按钮
  33. _buildSendButton(),
  34. 12.verticalSpaceFromWidth,
  35. // 说明文字
  36. Text(
  37. Strings.codeBackedUpMessage.tr,
  38. textAlign: TextAlign.center,
  39. style: TextStyle(
  40. fontSize: 14.sp,
  41. color: Get.reactiveTheme.hintColor.withValues(alpha: 0.6),
  42. ),
  43. ),
  44. // 信息卡片列表
  45. _buildInfoCardList(),
  46. ],
  47. ),
  48. ),
  49. );
  50. }
  51. /// 邮箱输入框
  52. Widget _buildEmailInput() {
  53. return IXTextField(
  54. hintText: Strings.enterYourEmail.tr,
  55. controller: controller.emailController,
  56. focusNode: controller.emailFocusNode,
  57. keyboardType: TextInputType.emailAddress,
  58. textInputAction: TextInputAction.done,
  59. onChanged: (value) => controller.email.value = value,
  60. );
  61. }
  62. /// 发送按钮
  63. Widget _buildSendButton() {
  64. return Obx(() {
  65. final canSend = controller.canSend;
  66. final isSending = controller.isSending.value;
  67. return SubmitButton(
  68. prefixIcon: IXImage(
  69. source: Assets.preCodeEmailTipWhite,
  70. width: 20.w,
  71. height: 20.w,
  72. sourceType: ImageSourceType.asset,
  73. ),
  74. enabled: canSend,
  75. isLoading: isSending,
  76. text: Strings.sendYourEmail.tr,
  77. onPressed: controller.sendEmail,
  78. );
  79. });
  80. }
  81. /// 信息卡片列表(带连接线)
  82. Widget _buildInfoCardList() {
  83. return InfoCard(
  84. title: '',
  85. items: [
  86. InfoItem(
  87. icon: IconFont.icon23,
  88. title: Strings.yourPreCredential.tr,
  89. description: Strings.yourPreCredentialDesc.tr,
  90. iconColor: DarkThemeColors.primaryColor,
  91. ),
  92. InfoItem(
  93. imageSource: Assets.preCodeEmailTipBlue,
  94. title: Strings.secureEmailBackup.tr,
  95. description: Strings.secureEmailBackupDesc.tr,
  96. iconColor: DarkThemeColors.primaryColor,
  97. ),
  98. InfoItem(
  99. icon: IconFont.icon43,
  100. title: Strings.sendAndSave.tr,
  101. description: Strings.sendAndSaveDesc.tr,
  102. iconColor: DarkThemeColors.primaryColor,
  103. ),
  104. ],
  105. );
  106. }
  107. }