starwork_flutter/lib/views/team/enterFace/enter_face_view.dart
2025-10-14 13:53:01 +08:00

376 lines
16 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:starwork_flutter/common/constant/app_colors.dart';
import 'package:starwork_flutter/common/constant/app_images.dart';
import 'package:starwork_flutter/common/widgets/custome_app_bar_wdiget.dart';
import 'package:starwork_flutter/extension/function_extension.dart';
import 'enter_face_controller.dart';
class EnterFaceView extends GetView<EnterFaceController> {
@override
Widget build(BuildContext context) {
// 即使不使用,只是引用一下 controller 就能触发初始化
final _ = controller; // 添加这一行
return Scaffold(
appBar: CustomAppBarWidget(
title: '人脸信息'.tr,
backgroundColor: AppColors.scaffoldBackgroundColor,
),
backgroundColor: AppColors.scaffoldBackgroundColor,
body: Container(
padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 10.h),
child: SingleChildScrollView(
child: Column(
children: [
Container(
padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 10.h),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(8.r),
),
child: Row(
children: [
Container(
width: 34.w,
height: 34.w,
margin: EdgeInsets.only(right: 10.w),
decoration: BoxDecoration(
color: Colors.grey[200],
borderRadius: BorderRadius.circular(8.r),
),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.r),
child: Image(
image: const AssetImage(AppImages.defaultAvatar),
width: 22.w,
height: 22.w,
fit: BoxFit.cover,
gaplessPlayback: true,
filterQuality: FilterQuality.medium,
errorBuilder: (context, error, stackTrace) {
return Icon(
Icons.person,
size: 30.sp,
color: Colors.grey[400],
);
},
),
),
),
Text(controller.selectedPersonItem.value?.personName ?? ''),
const Spacer(),
Text(
'未录入'.tr,
style: TextStyle(
color: Colors.orange,
fontSize: 16.sp,
),
)
],
),
),
SizedBox(
height: 10.h,
),
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(8.r),
),
padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 20.h),
child: Column(
children: [
Container(
width: 118.w,
height: 118.w,
margin: EdgeInsets.only(right: 10.w),
decoration: BoxDecoration(
color: Colors.grey[200],
borderRadius: BorderRadius.circular(8.r),
),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.r),
child: Image(
image: const AssetImage(AppImages.iconShotFace),
width: 118.w,
height: 118.w,
fit: BoxFit.cover,
gaplessPlayback: true,
filterQuality: FilterQuality.medium,
errorBuilder: (context, error, stackTrace) {
return Icon(
Icons.person,
size: 30.sp,
color: Colors.grey[400],
);
},
),
),
),
SizedBox(
height: 10.h,
),
Text(
'拍摄须知'.tr,
style: TextStyle(
fontSize: 16.sp,
fontWeight: FontWeight.w500,
),
),
SizedBox(
height: 10.h,
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'1、露出额头、耳朵人脸正面、不戴帽子'.tr,
style: TextStyle(
fontSize: 12.sp,
fontWeight: FontWeight.w500,
),
),
Text(
'2、面部光线均匀、无逆光无美颜处理'.tr,
style: TextStyle(
fontSize: 12.sp,
fontWeight: FontWeight.w500,
),
),
Text(
'3、背部尽量简洁单一建议均为白色'.tr,
style: TextStyle(
fontSize: 12.sp,
fontWeight: FontWeight.w500,
),
),
Text(
'4、确保开启APP的相机与存储权限'.tr,
style: TextStyle(
fontSize: 12.sp,
fontWeight: FontWeight.w500,
),
),
],
),
SizedBox(
height: 10.h,
),
Divider(
height: 0.5.h,
),
SizedBox(
height: 10.h,
),
Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
'错误示例',
style: TextStyle(
fontSize: 12.sp,
fontWeight: FontWeight.w500,
color: Colors.grey,
),
),
SizedBox(
height: 10.h,
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Column(
children: [
Container(
width: 88.w,
height: 88.w,
margin: EdgeInsets.only(right: 10.w),
decoration: BoxDecoration(
color: Colors.grey[200],
borderRadius: BorderRadius.circular(8.r),
),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.r),
child: Image(
image: const AssetImage(AppImages.iconShotFaceError1),
width: 88.w,
height: 88.w,
fit: BoxFit.cover,
gaplessPlayback: true,
filterQuality: FilterQuality.medium,
errorBuilder: (context, error, stackTrace) {
return Icon(
Icons.person,
size: 30.sp,
color: Colors.grey[400],
);
},
),
),
),
SizedBox(
height: 5.h,
),
Text(
'人脸过小'.tr,
style: TextStyle(
fontSize: 12.sp,
fontWeight: FontWeight.w500,
color: Colors.grey,
),
)
],
),
Column(
children: [
Container(
width: 88.w,
height: 88.w,
margin: EdgeInsets.only(right: 10.w),
decoration: BoxDecoration(
color: Colors.grey[200],
borderRadius: BorderRadius.circular(8.r),
),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.r),
child: Image(
image: const AssetImage(AppImages.iconShotFaceError2),
width: 88.w,
height: 88.w,
fit: BoxFit.cover,
gaplessPlayback: true,
filterQuality: FilterQuality.medium,
errorBuilder: (context, error, stackTrace) {
return Icon(
Icons.person,
size: 30.sp,
color: Colors.grey[400],
);
},
),
),
),
SizedBox(
height: 5.h,
),
Text(
'背景复杂'.tr,
style: TextStyle(
fontSize: 12.sp,
fontWeight: FontWeight.w500,
color: Colors.grey,
),
)
],
),
Column(
children: [
Container(
width: 88.w,
height: 88.w,
decoration: BoxDecoration(
color: Colors.grey[200],
borderRadius: BorderRadius.circular(8.r),
),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.r),
child: Image(
image: const AssetImage(AppImages.iconShotFaceError3),
width: 88.w,
height: 88.w,
fit: BoxFit.cover,
gaplessPlayback: true,
filterQuality: FilterQuality.medium,
errorBuilder: (context, error, stackTrace) {
return Icon(
Icons.person,
size: 30.sp,
color: Colors.grey[400],
);
},
),
),
),
SizedBox(
height: 5.h,
),
Text(
'光线太暗'.tr,
style: TextStyle(
fontSize: 12.sp,
fontWeight: FontWeight.w500,
color: Colors.grey,
),
)
],
),
],
)
],
)
],
),
),
SizedBox(
height: 10.h,
),
Container(
margin: EdgeInsets.symmetric(
horizontal: 10.w,
),
child: Row(
children: [
Expanded(
child: ElevatedButton(
onPressed: () {
}.debounce(),
style: ElevatedButton.styleFrom(
backgroundColor: Colors.grey[50],
padding: EdgeInsets.symmetric(vertical: 10.h),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8.r)),
),
child: Text(
'通知人员自助录入'.tr,
style: TextStyle(
fontSize: 16.sp,
color: Colors.blue,
fontWeight: FontWeight.w500,
),
),
),
),
SizedBox(width: 10.w),
Expanded(
child: ElevatedButton(
onPressed: () {
controller.showFunctionNotOpen();
}.debounce(),
style: ElevatedButton.styleFrom(
backgroundColor: Colors.blue,
padding: EdgeInsets.symmetric(vertical: 10.h),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8.r)),
),
child: Text(
'录入人脸'.tr,
style: TextStyle(
fontSize: 16.sp,
color: Colors.white,
fontWeight: FontWeight.w500,
),
),
),
)
],
),
)
],
),
),
),
);
}
}