import 'package:ef/ef.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:flutterflow_ui/flutterflow_ui.dart'; import 'package:vbvs_app/common/color/appConstants.dart'; import 'package:vbvs_app/common/util/FitTool.dart'; import 'package:vbvs_app/common/util/MyUtils.dart'; import 'package:vbvs_app/component/tool/ClickableContainer.dart'; import 'package:vbvs_app/component/tool/CustomCard.dart'; import 'package:vbvs_app/controller/main_bottom/global_controller.dart'; import 'package:vbvs_app/controller/user_info_controller.dart'; class LoginPage extends StatefulWidget { const LoginPage({super.key}); @override State createState() => _EPageState(); } class _EPageState extends State { GlobalController globalController = Get.find(); UserInfoController userInfoController = Get.find(); @override Widget build(BuildContext context) { return LayoutBuilder( builder: (context, bodysize) => GestureDetector( onTap: () => FocusScope.of(context).unfocus(), child: Container( decoration: BoxDecoration( image: DecorationImage( image: AssetImage('assets/img/bgImage.png'), // 本地图片 fit: BoxFit.fill, // 填满整个 Container ), ), child: Scaffold( backgroundColor: Colors.transparent, body: SafeArea( top: true, child: Padding( padding: EdgeInsetsDirectional.fromSTEB(75.rpx, 0.rpx, 75.rpx, 0), child: Column( mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.start, children: [ Column( children: [ SizedBox( height: 66.rpx, ), ClickableContainer( backgroundColor: Colors.transparent, // 容器背景色 highlightColor: Colors.green, // 点击时的背景色 padding: EdgeInsets.zero, // 这里去掉外部的 padding,避免影响点击范围 onTap: () { Get.back(); }, child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 16.rpx, 10.rpx, 16.rpx, 10.rpx), child: SvgPicture.asset( 'assets/img/icon/close.svg', width: 25.rpx, height: 25.rpx, // 如果 SVG 中没有固定颜色,使用 color 设置 color: Colors.white, // 这里设置了颜色 ), ), ), ], ), Expanded( child: SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.max, children: [ // ClickableContainer( // backgroundColor: Colors.transparent, // 容器背景色为透明 // highlightColor: Colors.pink, // 点击时背景色也为透明 // padding: EdgeInsets.all(0), // 没有额外的内边距 // onTap: () { // // 你可以在这里定义点击事件的回调,比如关闭页面等 // print('关闭按钮被点击'); // }, // borderRadius: 0, // 没有圆角 // child: Container( // // color: Colors.red, // // width: double.infinity, // 使容器宽度充满父容器 // child: Align( // alignment: // AlignmentDirectional(-1, 0), // 左对齐 // child: Padding( // padding: EdgeInsetsDirectional.fromSTEB( // 0, 66.rpx, 0, 0), // child: SvgPicture.asset( // 'assets/img/icon/close.svg', // width: 25.rpx, // height: 25 // .rpx, // 如果 SVG 中没有固定颜色,使用 color 设置 // color: Colors.white, // 这里设置了颜色 // ), // ), // ), // ), // ), Align( alignment: AlignmentDirectional(-1, 0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 0, 141.rpx, 0, 0), child: Container( width: double.infinity, decoration: BoxDecoration(), child: Align( alignment: AlignmentDirectional(0, 0), child: Text( '登录页.欢迎使用太和e护'.tr, style: FlutterFlowTheme.of(context) .bodyMedium .override( fontFamily: 'Inter', fontSize: 48.rpx, letterSpacing: 0.0, //todo 颜色 color: stringToColor("#FFFFFF"), ), ), ), ), ), ), Align( alignment: AlignmentDirectional(-1, 0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 0, 15.rpx, 0, 0), child: Container( width: double.infinity, decoration: BoxDecoration(), child: Align( alignment: AlignmentDirectional(0, 0), child: Text( '登录页.科技睡眠 洞悉万千'.tr, style: FlutterFlowTheme.of(context) .bodyMedium .override( fontFamily: 'Inter', fontSize: 30.rpx, letterSpacing: 0.0, //todo 颜色 color: stringToColor("#FFFFFF"), ), ), ), ), ), ), Align( alignment: AlignmentDirectional(-1, 0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 0, 95.rpx, 0, 0), child: Container( width: double.infinity, decoration: BoxDecoration(), child: Align( alignment: AlignmentDirectional(0, 0), child: Text( '139****0733', style: FlutterFlowTheme.of(context) .bodyMedium .override( fontFamily: 'Inter', fontSize: 48.rpx, letterSpacing: 0.0, //todo 颜色 color: stringToColor("#FFFFFF"), ), ), ), ), ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 0, 35.rpx, 0, 0), child: CustomCard( borderRadius: AppConstants() .button_container_radius, // 圆角半径 onTap: () { print('Button pressed ...'); // Get.toNamed("/deviceType"); }, colors: [ //todo 颜色 stringToColor("45D989"), stringToColor("00C1AA") ], // 渐变色是同一个色,也可以根据需要调整 title: '首页.蓝牙绑定'.tr, // 可选,虽然这个 title 没用,但可以作为调试用 child: Container( width: // MediaQuery.sizeOf(context).width * 0.66, bodysize.maxWidth, height: MediaQuery.sizeOf(context).height * 0.055, constraints: BoxConstraints( minWidth: 500.rpx, minHeight: 90.rpx, ), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, children: [ // Icon( // Icons.arrow_back, // color: FlutterFlowTheme.of(context) // .primaryText, // size: 28.rpx, // ), Text( '登录页.本机号码一键登录/注册'.tr, style: FlutterFlowTheme.of(context) .bodyMedium .override( //todo 颜色 color: Colors.white, fontFamily: 'Inter', fontSize: AppConstants() .normal_text_fontSize, letterSpacing: 0.0, ), ), ].divide(SizedBox( width: 17.rpx, )), ), ), ), ), // ClickableContainer( // backgroundColor: Colors.transparent, // 背景色(透明) // highlightColor: stringToColor( // "#FF6347"), // 点击时的背景色,可以根据需求设置颜色 // padding: EdgeInsetsDirectional.fromSTEB( // 0, 32.rpx, 0, 32.rpx), // 内部间距 // onTap: () { // print('点击了“其他手机号码”'); // 点击后的回调事件 // // 这里可以放置点击后的逻辑,比如导航等 // }, // borderRadius: 0.rpx, // 可选的圆角参数,默认是 20.rpx // child: Align( // alignment: AlignmentDirectional(-1, 0), // child: Container( // width: double.infinity, // decoration: BoxDecoration(), // child: Align( // alignment: AlignmentDirectional(0, 0), // child: Text( // '登录页.其他手机号码'.tr, // style: FlutterFlowTheme.of(context) // .bodyMedium // .override( // fontFamily: 'Inter', // fontSize: 26.rpx, // letterSpacing: 0.0, // color: stringToColor("#FFFFFF"), // ), // ), // ), // ), // ), // ), SizedBox( height: 20.rpx, ), ClickableContainer( backgroundColor: Colors.transparent, // 容器背景色 highlightColor: Colors.orange, // 点击时的背景色 padding: EdgeInsetsDirectional.fromSTEB( 16.rpx, 10.rpx, 16.rpx, 10.rpx), onTap: () { print('点击了容器'); }, child: Text( '登录页.其他手机号码'.tr, // 子组件内容 style: TextStyle( fontFamily: 'Inter', fontSize: 26.rpx, color: Colors.white, ), ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 25.rpx, 136.rpx, 25.rpx, 50.rpx), child: Container( width: double.infinity, decoration: BoxDecoration(), child: Row( mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.start, children: [ // SvgPicture.asset( // 'assets/img/icon/tick.svg', // width: 30.rpx, // height: 30.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 // //todo 颜色 // // color: Colors.white, // color: Colors.white, // ), Theme( data: ThemeData( checkboxTheme: CheckboxThemeData( visualDensity: VisualDensity.compact, materialTapTargetSize: MaterialTapTargetSize .shrinkWrap, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(64), ), ), unselectedWidgetColor: Color(0xFFD3D3D3), ), child: Obx( () => Checkbox( value: userInfoController .model.register_agree ?? false, onChanged: (newValue) async { userInfoController.model .register_agree = newValue; userInfoController.updateAll(); // 获取设备信息,需要用户点击确认隐私协议与用户协议选择框时才能获取 // if (newValue == true) { // Deviceconfig // .initPlatformState(); // } }, side: BorderSide( width: 1.5, color: FlutterFlowTheme.of(context) .secondaryText, ), activeColor: stringToColor("#FF9F66"), checkColor: FlutterFlowTheme.of(context) .info, ), )), Expanded( child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 0.rpx, 10.rpx, 0.rpx, 0.rpx), child: Container( width: bodysize.maxWidth, constraints: BoxConstraints( minWidth: 500.rpx, minHeight: 90.rpx, ), child: RichText( text: TextSpan( children: [ TextSpan( text: '登录页.协议1'.tr, style: FlutterFlowTheme.of( context) .bodyMedium .override( fontFamily: 'Inter', letterSpacing: 0.0, fontSize: 26.rpx, color: Colors .white, // 可以调整为你想要的颜色 ), ), TextSpan( text: '登录页.协议2'.tr, style: FlutterFlowTheme.of( context) .bodyMedium .override( fontFamily: 'Inter', letterSpacing: 0.0, fontSize: 26.rpx, color: stringToColor( "#FF9F66"), ), ), TextSpan( text: '登录页.协议3'.tr, style: FlutterFlowTheme.of( context) .bodyMedium .override( fontFamily: 'Inter', letterSpacing: 0.0, fontSize: 26.rpx, color: Colors .white, // 可以调整为你想要的颜色 ), ), TextSpan( text: '登录页.协议4'.tr, style: FlutterFlowTheme.of( context) .bodyMedium .override( fontFamily: 'Inter', letterSpacing: 0.0, fontSize: 26.rpx, color: stringToColor( "#FF9F66"), ), ), TextSpan( text: '登录页.协议5'.tr, style: FlutterFlowTheme.of( context) .bodyMedium .override( fontFamily: 'Inter', letterSpacing: 0.0, fontSize: 26.rpx, color: Colors .white, // 可以调整为你想要的颜色 ), ), TextSpan( text: '登录页.协议6'.tr, style: FlutterFlowTheme.of( context) .bodyMedium .override( fontFamily: 'Inter', letterSpacing: 0.0, fontSize: 26.rpx, color: stringToColor( "#FF9F66"), ), ), ], ), ), ), ), ), ].divide(SizedBox(width: 18.rpx)), ), ), ), ], ), ), ), Container( width: double.infinity, height: MediaQuery.sizeOf(context).height * 0.136, constraints: BoxConstraints( minHeight: 220.rpx, ), decoration: BoxDecoration(), child: Column( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: EdgeInsetsDirectional.fromSTEB( 0, 0, 0, 36.rpx), child: Text( '登录页.其他登录方式'.tr, style: FlutterFlowTheme.of(context) .bodyMedium .override( fontFamily: 'Inter', fontSize: 26.rpx, letterSpacing: 0.0, //todo 颜色 color: stringToColor("#FFFFFF"), ), ), ), Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, children: [ Container( width: 91.rpx, height: 91.rpx, clipBehavior: Clip.antiAlias, decoration: BoxDecoration( shape: BoxShape.circle, ), child: Image.asset( "assets/img/wechat.png", width: 30.rpx, height: 30.rpx, ), ), Container( width: 91.rpx, height: 91.rpx, clipBehavior: Clip.antiAlias, decoration: BoxDecoration( shape: BoxShape.circle, ), child: Image.asset( "assets/img/tel.png", width: 30.rpx, height: 30.rpx, ), ), Container( width: 91.rpx, height: 91.rpx, clipBehavior: Clip.antiAlias, decoration: BoxDecoration( shape: BoxShape.circle, ), child: Image.asset( "assets/img/google.png", width: 30.rpx, height: 30.rpx, ), ), ].divide(SizedBox(width: 35.rpx)), ), ], ), ), ], ), ), ), ), )), ); } }