| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- 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/app/constants/iconfont/iconfont.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<LoginController> {
- const LoginView({super.key});
- @override
- PreferredSizeWidget? get appBar =>
- IXAppBar(title: '', onBackPressed: controller.onBackPressed);
- @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: IconFont.icon10,
- 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: IconFont.icon11,
- 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: controller.handleSignUp,
- ),
- 20.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,
- ),
- ),
- ],
- ),
- ),
- ),
- ],
- ),
- ),
- ),
- );
- }
- }
|