diff --git a/assets/images/background.png b/assets/images/background.png index c07d018..996013b 100644 Binary files a/assets/images/background.png and b/assets/images/background.png differ diff --git a/lib/main.dart b/lib/main.dart index 4411e50..bdce5c4 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get_navigation/src/root/get_material_app.dart'; import 'package:get_storage/get_storage.dart'; @@ -9,7 +10,11 @@ import 'package:problem_check_system/app/bindings/initial_binding.dart'; void main() async { // 确保 Flutter Binding 已初始化 WidgetsFlutterBinding.ensureInitialized(); - + // 设置应用为竖屏模式 + SystemChrome.setPreferredOrientations([ + DeviceOrientation.portraitUp, + DeviceOrientation.portraitDown, + ]); // 初始化 GetStorage,这是关键步骤 await GetStorage.init(); diff --git a/lib/modules/auth/views/login_page.dart b/lib/modules/auth/views/login_page.dart index 463b63b..e795857 100644 --- a/lib/modules/auth/views/login_page.dart +++ b/lib/modules/auth/views/login_page.dart @@ -9,82 +9,85 @@ class LoginPage extends GetView { @override Widget build(BuildContext context) { - return Scaffold( - body: Stack(children: [_buildBackground(), _buildLoginCard(controller)]), - ); + return Scaffold(body: SingleChildScrollView(child: _buildBackground())); } Widget _buildBackground() { - return Stack( - children: [ - Container( - decoration: const BoxDecoration( - image: DecorationImage( - image: AssetImage('assets/images/background.png'), - fit: BoxFit.fitWidth, - ), - ), - ), - Positioned( - left: 28.5.w, - top: 89.5.h, - child: Image.asset( - 'assets/images/label.png', - width: 171.5.w, - height: 23.5.h, - fit: BoxFit.fitWidth, - ), + return Container( + decoration: const BoxDecoration( + image: DecorationImage( + image: AssetImage('assets/images/background.png'), + // 使用 BoxFit.cover 确保图片填充整个容器,不留空白 + fit: BoxFit.fitWidth, + alignment: Alignment.topCenter, ), - Positioned( - left: 28.5.w, - top: 128.5.h, - child: Image.asset( - 'assets/images/label1.png', - width: 296.5.w, - height: 35.5.h, - fit: BoxFit.fitWidth, + ), + child: Stack( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(height: 89.5.h), + Padding( + padding: EdgeInsets.only(left: 28.5.w), + child: Image.asset( + 'assets/images/label.png', + width: 171.5.w, + height: 23.5.h, + fit: BoxFit.fitWidth, + ), + ), + SizedBox(height: 15.5.h), + Padding( + padding: EdgeInsets.only(left: 28.5.w), + child: Image.asset( + 'assets/images/label1.png', + width: 296.5.w, + height: 35.5.h, + fit: BoxFit.fitWidth, + ), + ), + SizedBox(height: 56.5.h), + Center(child: _buildLoginCard(controller)), + ], ), - ), - ], + ], + ), ); } // 修改 _buildLoginCard 方法,它不再需要传入 TextEditingController Widget _buildLoginCard(AuthController controller) { - return Positioned( - left: 20.5.w, - top: 220.5.h, - child: Container( - width: 334.w, - height: 574.5.h, - decoration: BoxDecoration( - color: const Color(0xFFFFFFFF).withOpacity(0.6), - borderRadius: BorderRadius.all(Radius.circular(23.5.r)), - ), - padding: EdgeInsets.all(24.w), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const SizedBox(height: 16), - // 直接使用控制器中的 TextEditingController - _buildTextFieldSection( - label: '账号', - hintText: '请输入您的账号', - controller: controller.usernameController, - ), - const SizedBox(height: 22), - _buildTextFieldSection( - label: '密码', - hintText: '请输入您的密码', - obscureText: true, - controller: controller.passwordController, - ), - const SizedBox(height: 9.5), - _buildRememberPasswordRow(controller), - const SizedBox(height: 138.5), - _buildLoginButton(controller), - ], - ), + return Container( + width: 334.w, + height: 574.5.h, + decoration: BoxDecoration( + color: const Color(0xFFFFFFFF).withOpacity(0.6), + borderRadius: BorderRadius.all(Radius.circular(23.5.r)), + ), + padding: EdgeInsets.all(24.w), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 16), + // 直接使用控制器中的 TextEditingController + _buildTextFieldSection( + label: '账号', + hintText: '请输入您的账号', + controller: controller.usernameController, + ), + const SizedBox(height: 22), + _buildTextFieldSection( + label: '密码', + hintText: '请输入您的密码', + obscureText: true, + controller: controller.passwordController, + ), + const SizedBox(height: 9.5), + _buildRememberPasswordRow(controller), + const SizedBox(height: 138.5), + _buildLoginButton(controller), + ], ), ); }