277 lines
12 KiB
Dart
277 lines
12 KiB
Dart
import 'package:ef/ef.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutterflow_ui/flutterflow_ui.dart';
|
|
import 'package:vbvs_app/common/util/FitTool.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<LoginPage> createState() => _EPageState();
|
|
}
|
|
|
|
class _EPageState extends State<LoginPage> {
|
|
GlobalController globalController = Get.find();
|
|
UserInfoController userInfoController = Get.find();
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return LayoutBuilder(
|
|
builder: (context, boxConstraints) => GestureDetector(
|
|
onTap: () => FocusScope.of(context).unfocus(),
|
|
child: Scaffold(
|
|
body: SafeArea(
|
|
top: true,
|
|
child: Column(
|
|
mainAxisSize: MainAxisSize.max,
|
|
children: [
|
|
Expanded(
|
|
child: SingleChildScrollView(
|
|
child: Column(
|
|
mainAxisSize: MainAxisSize.max,
|
|
children: [
|
|
Container(
|
|
width: double.infinity,
|
|
decoration: BoxDecoration(),
|
|
child: Align(
|
|
alignment: AlignmentDirectional(-1, 0),
|
|
child: Padding(
|
|
padding: EdgeInsetsDirectional.fromSTEB(
|
|
35.rpx, 66.rpx, 0, 0),
|
|
child: Icon(
|
|
Icons.arrow_back,
|
|
color: FlutterFlowTheme.of(context).primaryText,
|
|
size: 24.rpx,
|
|
),
|
|
),
|
|
),
|
|
),
|
|
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护',
|
|
style: FlutterFlowTheme.of(context)
|
|
.bodyMedium
|
|
.override(
|
|
fontFamily: 'Inter',
|
|
fontSize: 48.rpx,
|
|
letterSpacing: 0.0,
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
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(
|
|
'科技睡眠 洞悉万千',
|
|
style: FlutterFlowTheme.of(context)
|
|
.bodyMedium
|
|
.override(
|
|
fontFamily: 'Inter',
|
|
fontSize: 30.rpx,
|
|
letterSpacing: 0.0,
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
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,
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
Padding(
|
|
padding:
|
|
EdgeInsetsDirectional.fromSTEB(0, 35.rpx, 0, 0),
|
|
child: Container(
|
|
width: MediaQuery.sizeOf(context).width * 0.8,
|
|
height: MediaQuery.sizeOf(context).height * 0.055,
|
|
constraints: BoxConstraints(
|
|
minWidth: 500.rpx,
|
|
minHeight: 90.rpx,
|
|
),
|
|
decoration: BoxDecoration(
|
|
color: Color(0xFFF01515),
|
|
borderRadius: BorderRadius.circular(50.rpx),
|
|
),
|
|
child: Align(
|
|
alignment: AlignmentDirectional(0, 0),
|
|
child: Text(
|
|
'本机号码一键登录/注册',
|
|
style: FlutterFlowTheme.of(context)
|
|
.bodyMedium
|
|
.override(
|
|
fontFamily: 'Inter',
|
|
fontSize: 26.rpx,
|
|
letterSpacing: 0.0,
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
Align(
|
|
alignment: AlignmentDirectional(-1, 0),
|
|
child: Padding(
|
|
padding:
|
|
EdgeInsetsDirectional.fromSTEB(0, 32.rpx, 0, 0),
|
|
child: Container(
|
|
width: double.infinity,
|
|
decoration: BoxDecoration(),
|
|
child: Align(
|
|
alignment: AlignmentDirectional(0, 0),
|
|
child: Text(
|
|
'其他手机号码',
|
|
style: FlutterFlowTheme.of(context)
|
|
.bodyMedium
|
|
.override(
|
|
fontFamily: 'Inter',
|
|
fontSize: 26.rpx,
|
|
letterSpacing: 0.0,
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
Padding(
|
|
padding: EdgeInsetsDirectional.fromSTEB(
|
|
110.rpx, 136.rpx, 110.rpx, 0),
|
|
child: Container(
|
|
width: double.infinity,
|
|
decoration: BoxDecoration(),
|
|
child: Row(
|
|
mainAxisSize: MainAxisSize.max,
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
Icon(
|
|
Icons.arrow_back,
|
|
color:
|
|
FlutterFlowTheme.of(context).primaryText,
|
|
size: 24.rpx,
|
|
),
|
|
Expanded(
|
|
// 👈 让文本自动换行
|
|
child: Text(
|
|
'登录时将自动注册,且代表您同意《用户协议》和 《隐私政策》以及《用户使用条款》',
|
|
style: FlutterFlowTheme.of(context)
|
|
.bodyMedium
|
|
.override(
|
|
fontFamily: 'Inter',
|
|
letterSpacing: 0.0,
|
|
fontSize: 24.rpx, // 可选:字体稍小点更适配
|
|
),
|
|
),
|
|
),
|
|
].divide(SizedBox(width: 26.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(
|
|
'其他登录方式',
|
|
style:
|
|
FlutterFlowTheme.of(context).bodyMedium.override(
|
|
fontFamily: 'Inter',
|
|
fontSize: 26.rpx,
|
|
letterSpacing: 0.0,
|
|
),
|
|
),
|
|
),
|
|
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.network(
|
|
'https://picsum.photos/seed/301/600',
|
|
fit: BoxFit.cover,
|
|
),
|
|
),
|
|
Container(
|
|
width: 91.rpx,
|
|
height: 91.rpx,
|
|
clipBehavior: Clip.antiAlias,
|
|
decoration: BoxDecoration(
|
|
shape: BoxShape.circle,
|
|
),
|
|
child: Image.network(
|
|
'https://picsum.photos/seed/301/600',
|
|
fit: BoxFit.cover,
|
|
),
|
|
),
|
|
].divide(SizedBox(width: 35.rpx)),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|