Files
tuiche/lib/pages/main_bottom/home_page.dart
2025-04-11 08:47:46 +08:00

397 lines
19 KiB
Dart

import 'package:ef/ef.dart';
import 'package:flutter/material.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/CustomCard.dart';
import 'package:vbvs_app/controller/main_bottom/global_controller.dart';
import 'package:vbvs_app/controller/theme_controller/ThemeController.dart';
import 'package:vbvs_app/controller/user_info_controller.dart';
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
GlobalController globalController = Get.find();
UserInfoController userInfoController = Get.find();
ThemeController themeController = Get.find();
@override
Widget build(BuildContext context) {
return LayoutBuilder(
builder: (context, bodySize) => GestureDetector(
onTap: () => FocusScope.of(context).unfocus(),
child: Scaffold(
// appBar: AppBar(
// backgroundColor: AppColors.bg_color,
// automaticallyImplyLeading: false,
// title: Container(
// width: double.infinity,
// height: 70.rpx,
// child: Obx(
// () => InkWell(
// onTap: () {
// Get.toNamed("/editUserInfoPage");
// },
// child: Row(
// mainAxisSize: MainAxisSize.max,
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// Row(
// mainAxisSize: MainAxisSize.max,
// children: [
// Container(
// width: 56.rpx,
// height: 56.rpx,
// clipBehavior: Clip.antiAlias,
// decoration: BoxDecoration(
// shape: BoxShape.circle,
// ),
// ),
// Container(
// width: 20.rpx,
// height: 0,
// decoration: BoxDecoration(
// color: Colors.white,
// shape: BoxShape.rectangle,
// ),
// ),
// Text(
// userInfoController.model.user!.nickName ?? '匿名',
// style: FlutterFlowTheme.of(context)
// .bodyMedium
// .override(
// fontFamily: 'Readex Pro',
// color: Colors.white,
// letterSpacing: 0,
// fontSize: 30.rpx),
// ),
// ],
// ),
// ],
// ),
// ),
// ),
// ),
// actions: [],
// centerTitle: false,
// ),
body: SafeArea(
top: true,
// child: Text("首页"),
child: Container(
height: bodySize.maxHeight,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('assets/img/bgImage.png'), // 本地图片
fit: BoxFit.fill, // 填满整个 Container
),
),
child: Padding(
padding: EdgeInsetsDirectional.fromSTEB(
AppConstants().main_left_right_padding,
47.rpx,
AppConstants().main_left_right_padding,
0),
child: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.max,
children: [
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
AppConstants().content_left_right_padding,
0,
AppConstants().content_left_right_padding,
0),
child: Container(
width: double.infinity,
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
CustomCard(
borderRadius: 20.rpx,
onTap: () async {
Get.toNamed("/loginPage");
},
title: '首页.登录'
.tr, // 虽然 title 传入了,但当前组件里没用它(可忽略或用于调试)
colors: [
stringToColor("#45D989"),
stringToColor("#00C1AA"),
],
child: Container(
width: 100.rpx,
height: 60.rpx,
alignment: Alignment.center,
padding: EdgeInsetsDirectional.fromSTEB(
16.rpx, 0, 16.rpx, 0),
child: Text(
'首页.登录'.tr,
style: FlutterFlowTheme.of(context)
.titleSmall
.override(
fontFamily: 'Inter Tight',
color: Colors.white,
letterSpacing: 0.0,
),
),
),
),
Icon(
Icons.add_circle_outline_outlined,
color: FlutterFlowTheme.of(context).primaryText,
size: 38.rpx,
),
// Lottie.asset(
// 'assets/img/loading.json',
// width: 200,
// height: 200,
// fit: BoxFit.contain,
// )
],
),
),
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
19.rpx, 13.rpx, 0, 13.rpx),
child: Container(
width: double.infinity,
child: Row(
children: [
Text(
'首页.已关联体征监测设备'.tr,
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize:
AppConstants().title_text_fontSize,
letterSpacing: 0.0,
),
),
Text(
' 0',
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize:
AppConstants().title_text_fontSize,
letterSpacing: 0.0,
),
),
],
)),
),
Container(
width: MediaQuery.sizeOf(context).width,
height: MediaQuery.sizeOf(context).height * 0.277,
constraints: BoxConstraints(
minWidth: 690.rpx,
minHeight: 450.rpx,
),
decoration: BoxDecoration(
color: stringToColor("#242835"),
borderRadius: BorderRadius.circular(
AppConstants().normal_container_radius), // 圆角半径
),
child: Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Container(
width: MediaQuery.sizeOf(context).width * 0.66,
height: MediaQuery.sizeOf(context).height * 0.055,
constraints: BoxConstraints(
minWidth: 500.rpx,
minHeight: 90.rpx,
),
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [Colors.red, Colors.orange], // 渐变颜色数组
begin: Alignment.topLeft,
end: Alignment.bottomRight,
),
borderRadius: BorderRadius.circular(
AppConstants()
.button_container_radius), // 圆角半径
),
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(
fontFamily: 'Inter',
fontSize: AppConstants()
.normal_text_fontSize,
letterSpacing: 0.0,
),
),
].divide(SizedBox(
width: 17.rpx,
)),
),
),
CustomCard(
borderRadius: AppConstants()
.button_container_radius, // 圆角半径
onTap: () {
print('Button pressed ...');
Get.toNamed("/deviceType");
},
colors: [
stringToColor("45D989"),
stringToColor("00C1AA")
], // 渐变色是同一个色,也可以根据需要调整
title: '首页.蓝牙绑定'.tr, // 可选,虽然这个 title 没用,但可以作为调试用
child: Container(
width: MediaQuery.sizeOf(context).width * 0.66,
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(
fontFamily: 'Inter',
fontSize: AppConstants()
.normal_text_fontSize,
letterSpacing: 0.0,
),
),
].divide(SizedBox(
width: 17.rpx,
)),
),
),
)
],
),
),
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(0, 26.rpx, 0, 0),
child: Container(
width: MediaQuery.sizeOf(context).width,
decoration: BoxDecoration(
color: Color(0xFFFBF5D5),
borderRadius: BorderRadius.circular(
AppConstants().normal_container_radius), // 圆角半径
),
child: Padding(
padding: EdgeInsetsDirectional.fromSTEB(
25.rpx, 25.rpx, 25.rpx, 25.rpx),
child: Row(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Icon(
Icons.volume_mute,
color:
FlutterFlowTheme.of(context).primaryText,
size: 30.rpx,
),
Expanded(
child: Column(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Text(
'首页.提示标题'.tr,
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: AppConstants()
.normal_text_fontSize,
letterSpacing: 0.0,
fontWeight: FontWeight.w500,
color: Colors.orange),
),
Text(
'首页.提示内容1'.tr,
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: AppConstants()
.normal_text_fontSize,
letterSpacing: 0.0,
),
),
Text(
'首页.提示内容2'.tr,
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: AppConstants()
.normal_text_fontSize,
letterSpacing: 0.0,
),
),
Text(
'首页.提示内容3'.tr,
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: AppConstants()
.normal_text_fontSize,
letterSpacing: 0.0,
),
),
].divide(SizedBox(
height: AppConstants()
.text_padding_up_dowm_p)),
),
)
].divide(SizedBox(width: 20.rpx)),
),
),
),
),
],
),
),
),
),
),
),
),
);
}
}