import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:nomo/app/base/base_view.dart'; import 'package:nomo/config/theme/theme_extensions/theme_extension.dart'; import '../../../../config/translations/strings_enum.dart'; import '../../../routes/app_pages.dart'; import '../../../widgets/ix_app_bar.dart'; import '../../../widgets/ix_text_field.dart'; import '../../../widgets/submit_btn.dart'; import '../controllers/login_controller.dart'; class LoginView extends BaseView { const LoginView({super.key}); @override PreferredSizeWidget? get appBar => IXAppBar(title: ''); @override Widget buildContent(BuildContext context) { return SafeArea( child: Padding( padding: EdgeInsets.symmetric(horizontal: 14.w), child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ 10.verticalSpaceFromWidth, // 标题 Text( Strings.login.tr, style: TextStyle( fontSize: 28.sp, height: 1.2, color: Get.reactiveTheme.textTheme.bodyLarge!.color, ), ), 24.verticalSpaceFromWidth, // 描述文字 Text( Strings.loginDescription.tr, style: TextStyle( fontSize: 16.sp, color: Get.reactiveTheme.hintColor, height: 1.4, ), ), 20.verticalSpaceFromWidth, IXTextField( hintText: Strings.username.tr, prefixIcon: Icons.person_outline, controller: controller.usernameController, focusNode: controller.usernameFocusNode, validator: controller.validatorInputValue, tipText: Strings.usernamePasswordRule.tr, errorText: Strings.usernamePasswordRule.tr, onChanged: (value) { controller.checkLogin(); }, ), 16.verticalSpaceFromWidth, IXTextField( hintText: Strings.password.tr, prefixIcon: Icons.lock_outline, controller: controller.passwordController, focusNode: controller.passwordFocusNode, validator: controller.validatorInputValue, isPassword: true, tipText: Strings.usernamePasswordRule.tr, errorText: Strings.usernamePasswordRule.tr, onChanged: (value) { controller.checkLogin(); }, ), 156.verticalSpaceFromWidth, SubmitButton( text: Strings.loginButton.tr, enabled: controller.isLogin, onPressed: () {}, ), 10.verticalSpaceFromWidth, // 底部注册链接 Center( child: RichText( text: TextSpan( children: [ TextSpan( text: Strings.noAccount.tr, style: TextStyle( color: Colors.grey[500], fontSize: 14.sp, ), ), TextSpan( text: Strings.registerNow.tr, recognizer: TapGestureRecognizer() ..onTap = () { Get.toNamed(Routes.SIGNUP); }, style: TextStyle( color: Get.reactiveTheme.primaryColor, fontSize: 14.sp, fontWeight: FontWeight.w400, ), ), ], ), ), ), ], ), ), ), ); } }