多语言后端数据
This commit is contained in:
@@ -193,9 +193,9 @@ class _MhMessageListWidgetState extends State<MhMessageListWidget> {
|
||||
child: Align(
|
||||
alignment: AlignmentDirectional(-1, 0),
|
||||
child: Text(
|
||||
label.tr,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
maxLines: 1,
|
||||
label.tr,
|
||||
style: TextStyle(
|
||||
fontFamily: 'Inter',
|
||||
fontSize: 26.rpx,
|
||||
@@ -215,9 +215,9 @@ class _MhMessageListWidgetState extends State<MhMessageListWidget> {
|
||||
child: Align(
|
||||
alignment: AlignmentDirectional(-1, 0),
|
||||
child: Text(
|
||||
"${value}",
|
||||
overflow: TextOverflow.ellipsis,
|
||||
maxLines: 1,
|
||||
"${value}",
|
||||
style: TextStyle(
|
||||
fontFamily: 'Inter',
|
||||
fontSize: 26.rpx,
|
||||
|
||||
@@ -170,7 +170,7 @@ class VitalWidget extends StatelessWidget {
|
||||
children: [
|
||||
Container(
|
||||
width: MediaQuery.sizeOf(context).width * 0.14,
|
||||
constraints: BoxConstraints(minWidth: 106.rpx),
|
||||
constraints: BoxConstraints(minWidth: 110.rpx),
|
||||
child: Text(
|
||||
"设备ID".tr,
|
||||
style: TextStyle(
|
||||
@@ -192,7 +192,7 @@ class VitalWidget extends StatelessWidget {
|
||||
children: [
|
||||
Container(
|
||||
width: MediaQuery.sizeOf(context).width * 0.14,
|
||||
constraints: BoxConstraints(minWidth: 106.rpx),
|
||||
constraints: BoxConstraints(minWidth: 110.rpx),
|
||||
child: Text(
|
||||
"更新时间".tr,
|
||||
style: TextStyle(
|
||||
@@ -214,7 +214,7 @@ class VitalWidget extends StatelessWidget {
|
||||
children: [
|
||||
Container(
|
||||
width: MediaQuery.sizeOf(context).width * 0.14,
|
||||
constraints: BoxConstraints(minWidth: 106.rpx),
|
||||
constraints: BoxConstraints(minWidth: 110.rpx),
|
||||
child: Text(
|
||||
"设备状态".tr,
|
||||
style: TextStyle(
|
||||
|
||||
@@ -1959,9 +1959,9 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
|
||||
case 1:
|
||||
return '体征检测设备'.tr;
|
||||
case 2:
|
||||
return '智能床'.tr;
|
||||
return '智能电动床'.tr;
|
||||
case 3:
|
||||
return '智能床垫'.tr;
|
||||
return '律动智能床垫'.tr;
|
||||
default:
|
||||
return '未知设备'.tr;
|
||||
}
|
||||
|
||||
@@ -43,465 +43,531 @@ class ShareDeviceWidget extends GetView<MHDeviceShareController> {
|
||||
),
|
||||
),
|
||||
child: Scaffold(
|
||||
appBar: AppBar(
|
||||
backgroundColor: Colors.transparent,
|
||||
automaticallyImplyLeading: false,
|
||||
iconTheme: const IconThemeData(color: Colors.white),
|
||||
titleSpacing: 0,
|
||||
title: Container(
|
||||
width: double.infinity,
|
||||
height: 180.rpx,
|
||||
child: Stack(
|
||||
alignment: Alignment.center,
|
||||
children: [
|
||||
// 中间居中的标题
|
||||
Text(
|
||||
'分享设备'.tr,
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 30.rpx,
|
||||
),
|
||||
),
|
||||
// 左侧图标
|
||||
Positioned(
|
||||
left: 0.rpx,
|
||||
child: returnIconButtomNew(),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
actions: [],
|
||||
centerTitle: false,
|
||||
),
|
||||
key: scaffoldKey,
|
||||
appBar: AppBar(
|
||||
backgroundColor: Colors.transparent,
|
||||
body: SingleChildScrollView(
|
||||
child: Container(
|
||||
width: MediaQuery.sizeOf(context).width,
|
||||
height: MediaQuery.sizeOf(context).height * 1,
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(30.rpx, 0, 30.rpx, 0),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(0, 30.rpx, 0, 0),
|
||||
child: Container(
|
||||
width: MediaQuery.sizeOf(context).width,
|
||||
decoration: BoxDecoration(
|
||||
color: const Color(0xFF003058),
|
||||
borderRadius: BorderRadius.circular(16.rpx),
|
||||
),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
30.rpx, 49.rpx, 30.rpx, 80.rpx),
|
||||
child: Column(
|
||||
automaticallyImplyLeading: false,
|
||||
iconTheme: const IconThemeData(color: Colors.white),
|
||||
titleSpacing: 0,
|
||||
title: Container(
|
||||
width: double.infinity,
|
||||
height: 180.rpx,
|
||||
child: Stack(
|
||||
alignment: Alignment.center,
|
||||
children: [
|
||||
// 中间居中的标题
|
||||
Text(
|
||||
'分享设备'.tr,
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 30.rpx,
|
||||
),
|
||||
),
|
||||
// 左侧图标
|
||||
Positioned(
|
||||
left: 0.rpx,
|
||||
child: returnIconButtomNew(),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
actions: [],
|
||||
centerTitle: false,
|
||||
),
|
||||
key: scaffoldKey,
|
||||
backgroundColor: Colors.transparent,
|
||||
body: Container(
|
||||
width: MediaQuery.sizeOf(context).width,
|
||||
height: MediaQuery.sizeOf(context).height * 1,
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(30.rpx, 0, 30.rpx, 0),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(0, 30.rpx, 0, 0),
|
||||
child: Container(
|
||||
width: MediaQuery.sizeOf(context).width,
|
||||
decoration: BoxDecoration(
|
||||
color: const Color(0xFF003058),
|
||||
borderRadius: BorderRadius.circular(16.rpx),
|
||||
),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
30.rpx, 49.rpx, 30.rpx, 80.rpx),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
Text(
|
||||
'将以下设备分享给您的家人或朋友'.tr,
|
||||
style: TextStyle(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Colors.white,
|
||||
fontSize: 30.rpx,
|
||||
letterSpacing: 0.0,
|
||||
height: 1,
|
||||
),
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
'将以下设备分享给您的家人或朋友'.tr,
|
||||
"设备ID:".tr,
|
||||
style: TextStyle(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: const Color(0xFF6BFDAC),
|
||||
fontSize: 26.rpx,
|
||||
letterSpacing: 0.0,
|
||||
height: 1),
|
||||
),
|
||||
Text(
|
||||
data['mac'],
|
||||
style: TextStyle(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: const Color(0xFF6BFDAC),
|
||||
fontSize: 26.rpx,
|
||||
letterSpacing: 0.0,
|
||||
height: 1),
|
||||
),
|
||||
],
|
||||
)
|
||||
].divide(SizedBox(height: 65.rpx)),
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0, 80.rpx, 0, 0),
|
||||
child: Container(
|
||||
width: MediaQuery.sizeOf(context).width,
|
||||
constraints: const BoxConstraints(
|
||||
minHeight: 46,
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(16.rpx),
|
||||
),
|
||||
child: Align(
|
||||
alignment: const AlignmentDirectional(0, 0),
|
||||
child: Form(
|
||||
key: _formKey,
|
||||
child: TextFormField(
|
||||
controller: _phoneController,
|
||||
textAlign: TextAlign.center,
|
||||
decoration: InputDecoration(
|
||||
hintText: '请输入对方手机号/邮箱号'.tr,
|
||||
hintStyle: TextStyle(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: const Color(0xFF929699),
|
||||
fontSize: 36.rpx,
|
||||
),
|
||||
enabledBorder:
|
||||
const UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Color(0xFF929699),
|
||||
width: 0),
|
||||
),
|
||||
focusedBorder:
|
||||
const UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Color(0xFF929699),
|
||||
width: 0),
|
||||
),
|
||||
errorBorder: const UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Colors.red, width: 0),
|
||||
),
|
||||
focusedErrorBorder:
|
||||
const UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Colors.redAccent,
|
||||
width: 0),
|
||||
),
|
||||
contentPadding: const EdgeInsets.only(
|
||||
left: 10, bottom: 5),
|
||||
),
|
||||
style: TextStyle(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Colors.white,
|
||||
fontSize: 36.rpx,
|
||||
),
|
||||
onChanged: (value) {
|
||||
controller.model.account = value;
|
||||
},
|
||||
),
|
||||
)),
|
||||
),
|
||||
),
|
||||
ClickableContainer(
|
||||
backgroundColor: Colors.transparent,
|
||||
highlightColor: Colors.transparent,
|
||||
padding: EdgeInsets.only(top: 30.rpx),
|
||||
onTap: () {},
|
||||
child: Container(
|
||||
decoration: const BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Color(0xFF85F5FF),
|
||||
width: 0), // 下边线
|
||||
),
|
||||
),
|
||||
child: Text(
|
||||
'点击复制APP下载链接'.tr,
|
||||
style: TextStyle(
|
||||
color: Color(0xFF85F5FF), // 蓝色文字
|
||||
|
||||
fontSize: 22.rpx,
|
||||
),
|
||||
),
|
||||
)),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
// 当点击时,将 type 设置为 0(允许控制)
|
||||
controller.model.type = 1;
|
||||
controller.updateAll();
|
||||
},
|
||||
child: Container(
|
||||
margin: EdgeInsets.only(top: 76.rpx),
|
||||
width: MediaQuery.sizeOf(context).width,
|
||||
constraints: const BoxConstraints(
|
||||
minHeight: 46,
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(0),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text(
|
||||
'允许对方控制和查看该设备'.tr,
|
||||
style: TextStyle(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Colors.white,
|
||||
fontSize: 30.rpx,
|
||||
fontSize: 26.rpx,
|
||||
letterSpacing: 0.0,
|
||||
height: 1,
|
||||
),
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
"设备ID:".tr,
|
||||
style: TextStyle(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: const Color(0xFF6BFDAC),
|
||||
fontSize: 26.rpx,
|
||||
letterSpacing: 0.0,
|
||||
height: 1),
|
||||
),
|
||||
Text(
|
||||
data['mac'],
|
||||
style: TextStyle(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: const Color(0xFF6BFDAC),
|
||||
fontSize: 26.rpx,
|
||||
letterSpacing: 0.0,
|
||||
height: 1),
|
||||
),
|
||||
],
|
||||
)
|
||||
].divide(SizedBox(height: 65.rpx)),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0, 80.rpx, 0, 0),
|
||||
child: Container(
|
||||
width: MediaQuery.sizeOf(context).width,
|
||||
constraints: const BoxConstraints(
|
||||
minHeight: 46,
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(16.rpx),
|
||||
),
|
||||
child: Align(
|
||||
alignment:
|
||||
const AlignmentDirectional(0, 0),
|
||||
child: Form(
|
||||
key: _formKey,
|
||||
child: TextFormField(
|
||||
controller: _phoneController,
|
||||
textAlign: TextAlign.center,
|
||||
decoration: InputDecoration(
|
||||
hintText: '请输入对方手机号/邮箱号'.tr,
|
||||
hintStyle: TextStyle(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: const Color(0xFF929699),
|
||||
fontSize: 36.rpx,
|
||||
),
|
||||
enabledBorder:
|
||||
const UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Color(0xFF929699),
|
||||
width: 0),
|
||||
),
|
||||
focusedBorder:
|
||||
const UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Color(0xFF929699),
|
||||
width: 0),
|
||||
),
|
||||
errorBorder:
|
||||
const UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Colors.red, width: 0),
|
||||
),
|
||||
focusedErrorBorder:
|
||||
const UnderlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Colors.redAccent,
|
||||
width: 0),
|
||||
),
|
||||
contentPadding:
|
||||
const EdgeInsets.only(
|
||||
left: 10, bottom: 5),
|
||||
),
|
||||
style: TextStyle(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Colors.white,
|
||||
fontSize: 36.rpx,
|
||||
),
|
||||
onChanged: (value) {
|
||||
controller.model.account = value;
|
||||
},
|
||||
),
|
||||
)),
|
||||
),
|
||||
),
|
||||
ClickableContainer(
|
||||
backgroundColor: Colors.transparent,
|
||||
highlightColor: Colors.transparent,
|
||||
padding: EdgeInsets.only(top: 30.rpx),
|
||||
onTap: () {},
|
||||
child: Container(
|
||||
decoration: const BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Color(0xFF85F5FF),
|
||||
width: 0), // 下边线
|
||||
),
|
||||
),
|
||||
child: Text(
|
||||
'点击复制APP下载链接'.tr,
|
||||
style: TextStyle(
|
||||
color: Color(0xFF85F5FF), // 蓝色文字
|
||||
Obx(() {
|
||||
double h = 33.rpx;
|
||||
bool check = controller.model.type == 1;
|
||||
|
||||
fontSize: 22.rpx,
|
||||
),
|
||||
),
|
||||
)),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
// 当点击时,将 type 设置为 0(允许控制)
|
||||
controller.model.type = 1;
|
||||
controller.updateAll();
|
||||
},
|
||||
child: Container(
|
||||
margin: EdgeInsets.only(top: 76.rpx),
|
||||
width: MediaQuery.sizeOf(context).width,
|
||||
constraints: const BoxConstraints(
|
||||
minHeight: 46,
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(0),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text(
|
||||
'允许对方控制和查看该设备'.tr,
|
||||
style: TextStyle(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Colors.white,
|
||||
fontSize: 26.rpx,
|
||||
letterSpacing: 0.0,
|
||||
),
|
||||
),
|
||||
Obx(() {
|
||||
double h = 33.rpx;
|
||||
bool check = controller.model.type == 1;
|
||||
|
||||
return Container(
|
||||
height: 33.rpx,
|
||||
child: AspectRatio(
|
||||
aspectRatio: 1,
|
||||
child: Center(
|
||||
child: Container(
|
||||
height: h,
|
||||
width: h,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius:
|
||||
BorderRadius.circular(
|
||||
h / 2),
|
||||
border: Border.all(
|
||||
width: check ? 1 : 0.5,
|
||||
color: Color(0xFFC8CBD2),
|
||||
),
|
||||
),
|
||||
child: check
|
||||
? Center(
|
||||
child: ClipOval(
|
||||
child: Container(
|
||||
width: h * 0.6,
|
||||
height: h * 0.6,
|
||||
color: const Color(
|
||||
0xFF6BFDAC),
|
||||
),
|
||||
),
|
||||
)
|
||||
: null,
|
||||
return Container(
|
||||
height: 33.rpx,
|
||||
child: AspectRatio(
|
||||
aspectRatio: 1,
|
||||
child: Center(
|
||||
child: Container(
|
||||
height: h,
|
||||
width: h,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius:
|
||||
BorderRadius.circular(h / 2),
|
||||
border: Border.all(
|
||||
width: check ? 1 : 0.5,
|
||||
color: Color(0xFFC8CBD2),
|
||||
),
|
||||
),
|
||||
child: check
|
||||
? Center(
|
||||
child: ClipOval(
|
||||
child: Container(
|
||||
width: h * 0.6,
|
||||
height: h * 0.6,
|
||||
color: const Color(
|
||||
0xFF6BFDAC),
|
||||
),
|
||||
),
|
||||
)
|
||||
: null,
|
||||
),
|
||||
);
|
||||
}),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
controller.model.type = 2;
|
||||
controller.updateAll();
|
||||
},
|
||||
child: Container(
|
||||
width: MediaQuery.sizeOf(context).width,
|
||||
constraints:
|
||||
const BoxConstraints(minHeight: 46),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(0),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text(
|
||||
'仅允许对方查看该设备'.tr,
|
||||
style: TextStyle(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Colors.white,
|
||||
fontSize: 26.rpx,
|
||||
letterSpacing: 0.0,
|
||||
),
|
||||
),
|
||||
// ✅ 只包住响应式控件部分
|
||||
Obx(() {
|
||||
double h = 33.rpx;
|
||||
bool check = controller.model.type == 2;
|
||||
|
||||
return Container(
|
||||
height: 33.rpx,
|
||||
child: AspectRatio(
|
||||
aspectRatio: 1,
|
||||
child: Center(
|
||||
child: Container(
|
||||
height: h,
|
||||
width: h,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius:
|
||||
BorderRadius.circular(
|
||||
h / 2),
|
||||
border: Border.all(
|
||||
width: check ? 1 : 0.5,
|
||||
color: Color(0xFFC8CBD2),
|
||||
),
|
||||
),
|
||||
child: check
|
||||
? Center(
|
||||
child: ClipOval(
|
||||
child: Container(
|
||||
width: h * 0.6,
|
||||
height: h * 0.6,
|
||||
color: const Color(
|
||||
0xFF6BFDAC),
|
||||
),
|
||||
),
|
||||
)
|
||||
: null,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
Align(
|
||||
alignment: const AlignmentDirectional(0, 0),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0, 46.rpx, 0, 0),
|
||||
child: Container(
|
||||
width: 108,
|
||||
height: 31,
|
||||
decoration: BoxDecoration(),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () async {
|
||||
//todo 1:验证用户是否存在 2:发送邀请
|
||||
ApiResponse apiResponse =
|
||||
await controller
|
||||
.shareDevice(data['mac'.tr]);
|
||||
if (apiResponse.code ==
|
||||
HttpStatusCodes.ok) {
|
||||
TopSlideNotification.show(context,
|
||||
text: apiResponse.msg!);
|
||||
} else {
|
||||
TopSlideNotification.show(context,
|
||||
text: apiResponse.msg!,
|
||||
textColor: themeController
|
||||
.currentColor.sc9);
|
||||
}
|
||||
},
|
||||
text: '发送邀请'.tr,
|
||||
options: FFButtonOptions(
|
||||
height: 60.rpx,
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
30.rpx, 0, 30.rpx, 0),
|
||||
color: const Color(0xFF84F5FF),
|
||||
textStyle: TextStyle(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Color(0xFF011D33),
|
||||
fontSize: 26.rpx,
|
||||
letterSpacing: 0.0,
|
||||
),
|
||||
elevation: 0,
|
||||
borderRadius: BorderRadius.circular(50),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0, 100.rpx, 0, 32.rpx),
|
||||
child: Container(
|
||||
width: MediaQuery.sizeOf(context).width,
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Align(
|
||||
alignment: const AlignmentDirectional(-1, 0),
|
||||
child: Padding(
|
||||
padding:
|
||||
const EdgeInsetsDirectional.fromSTEB(
|
||||
14, 0, 0, 16),
|
||||
child: Text(
|
||||
'已分享用户'.tr,
|
||||
style: TextStyle(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Colors.white,
|
||||
fontSize: 30.rpx,
|
||||
letterSpacing: 0.0,
|
||||
height: 1),
|
||||
),
|
||||
),
|
||||
),
|
||||
Obx(
|
||||
() {
|
||||
// 检查 shareUser 是否为空或数量为 0
|
||||
if (controller.model.shareUser == null ||
|
||||
controller.model.shareUser!.isEmpty) {
|
||||
// return Container(
|
||||
// alignment: AlignmentDirectional
|
||||
// .centerStart, // 确保文字靠左对齐
|
||||
// padding: EdgeInsets.symmetric(
|
||||
// horizontal: 16.0), // 根据需要设置内边距
|
||||
// child: Text(
|
||||
// "暂无分享!",
|
||||
// textAlign: TextAlign.left, // 文字左对齐
|
||||
// style: FlutterFlowTheme.of(context)
|
||||
// .bodyMedium, // 可根据需要自定义样式
|
||||
// ),
|
||||
// );
|
||||
return NullDataWidget();
|
||||
// EmptyMessageWidget(
|
||||
// imagePath:
|
||||
// "assets/images/emptyUser.png",
|
||||
// );
|
||||
}
|
||||
|
||||
// 否则显示正常的 ListView
|
||||
return ListView(
|
||||
controller:
|
||||
scrollController, // 绑定 ScrollController
|
||||
shrinkWrap: true,
|
||||
scrollDirection: Axis.vertical,
|
||||
children: (controller.model.shareUser!
|
||||
.asMap()
|
||||
.entries
|
||||
.map((e) => ShareUserWidget(
|
||||
index: e.key,
|
||||
mac: data['mac'.tr],
|
||||
repairListController:
|
||||
controller))
|
||||
.toList() as List<Widget>)
|
||||
// .divide(const SizedBox(
|
||||
// height: 13,
|
||||
// ))
|
||||
.addToEnd(const SizedBox(
|
||||
height: AppConstants.list_end_height,
|
||||
)),
|
||||
);
|
||||
},
|
||||
),
|
||||
],
|
||||
}),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
controller.model.type = 2;
|
||||
controller.updateAll();
|
||||
},
|
||||
child: Container(
|
||||
width: MediaQuery.sizeOf(context).width,
|
||||
constraints: const BoxConstraints(minHeight: 46),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(0),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text(
|
||||
'仅允许对方查看该设备'.tr,
|
||||
style: TextStyle(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Colors.white,
|
||||
fontSize: 26.rpx,
|
||||
letterSpacing: 0.0,
|
||||
),
|
||||
),
|
||||
// ✅ 只包住响应式控件部分
|
||||
Obx(() {
|
||||
double h = 33.rpx;
|
||||
bool check = controller.model.type == 2;
|
||||
|
||||
return Container(
|
||||
height: 33.rpx,
|
||||
child: AspectRatio(
|
||||
aspectRatio: 1,
|
||||
child: Center(
|
||||
child: Container(
|
||||
height: h,
|
||||
width: h,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius:
|
||||
BorderRadius.circular(h / 2),
|
||||
border: Border.all(
|
||||
width: check ? 1 : 0.5,
|
||||
color: Color(0xFFC8CBD2),
|
||||
),
|
||||
),
|
||||
child: check
|
||||
? Center(
|
||||
child: ClipOval(
|
||||
child: Container(
|
||||
width: h * 0.6,
|
||||
height: h * 0.6,
|
||||
color: const Color(
|
||||
0xFF6BFDAC),
|
||||
),
|
||||
),
|
||||
)
|
||||
: null,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
Align(
|
||||
alignment: const AlignmentDirectional(0, 0),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0, 46.rpx, 0, 0),
|
||||
child: Container(
|
||||
width: 108,
|
||||
height: 31,
|
||||
decoration: BoxDecoration(),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () async {
|
||||
//todo 1:验证用户是否存在 2:发送邀请
|
||||
ApiResponse apiResponse = await controller
|
||||
.shareDevice(data['mac'.tr]);
|
||||
if (apiResponse.code ==
|
||||
HttpStatusCodes.ok) {
|
||||
TopSlideNotification.show(context,
|
||||
text: apiResponse.msg!);
|
||||
} else {
|
||||
TopSlideNotification.show(context,
|
||||
text: apiResponse.msg!,
|
||||
textColor:
|
||||
themeController.currentColor.sc9);
|
||||
}
|
||||
},
|
||||
text: '发送邀请'.tr,
|
||||
options: FFButtonOptions(
|
||||
height: 60.rpx,
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
30.rpx, 0, 30.rpx, 0),
|
||||
color: const Color(0xFF84F5FF),
|
||||
textStyle: TextStyle(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Color(0xFF011D33),
|
||||
fontSize: 26.rpx,
|
||||
letterSpacing: 0.0,
|
||||
),
|
||||
elevation: 0,
|
||||
borderRadius: BorderRadius.circular(50),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
// Expanded(
|
||||
// child: Padding(
|
||||
// padding:
|
||||
// EdgeInsetsDirectional.fromSTEB(0, 100.rpx, 0, 32.rpx),
|
||||
// child: Container(
|
||||
// width: MediaQuery.sizeOf(context).width,
|
||||
// child: SingleChildScrollView(
|
||||
// child: Column(
|
||||
// mainAxisSize: MainAxisSize.max,
|
||||
// children: [
|
||||
// Align(
|
||||
// alignment: const AlignmentDirectional(-1, 0),
|
||||
// child: Padding(
|
||||
// padding: const EdgeInsetsDirectional.fromSTEB(
|
||||
// 14, 0, 0, 16),
|
||||
// child: Text(
|
||||
// '已分享用户'.tr,
|
||||
// style: TextStyle(
|
||||
// fontFamily: 'Readex Pro',
|
||||
// color: Colors.white,
|
||||
// fontSize: 30.rpx,
|
||||
// letterSpacing: 0.0,
|
||||
// height: 1),
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// Obx(
|
||||
// () {
|
||||
// // 检查 shareUser 是否为空或数量为 0
|
||||
// if (controller.model.shareUser == null ||
|
||||
// controller.model.shareUser!.isEmpty) {
|
||||
// return NullDataWidget();
|
||||
// // return SingleChildScrollView(
|
||||
// // physics:
|
||||
// // NeverScrollableScrollPhysics(), // 禁止滚动
|
||||
// // child: Center(
|
||||
// // child: Padding(
|
||||
// // padding: EdgeInsets.symmetric(
|
||||
// // vertical: 60),
|
||||
// // child: NullDataWidget(),
|
||||
// // ),
|
||||
// // ),
|
||||
// // );
|
||||
// }
|
||||
|
||||
// // 否则显示正常的 ListView
|
||||
// return ListView(
|
||||
// controller:
|
||||
// scrollController, // 绑定 ScrollController
|
||||
// shrinkWrap: true,
|
||||
// scrollDirection: Axis.vertical,
|
||||
// children: (controller.model.shareUser!
|
||||
// .asMap()
|
||||
// .entries
|
||||
// .map((e) => ShareUserWidget(
|
||||
// index: e.key,
|
||||
// mac: data['mac'.tr],
|
||||
// repairListController: controller))
|
||||
// .toList() as List<Widget>)
|
||||
// // .divide(const SizedBox(
|
||||
// // height: 13,
|
||||
// // ))
|
||||
// .addToEnd(const SizedBox(
|
||||
// height: AppConstants.list_end_height,
|
||||
// )),
|
||||
// );
|
||||
// },
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
Expanded(
|
||||
child: Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0, 100.rpx, 0, 32.rpx),
|
||||
child: Obx(() {
|
||||
final shareUsers = controller.model.shareUser;
|
||||
|
||||
// 无数据时,直接返回不带滚动的 Column
|
||||
if (shareUsers == null || shareUsers.isEmpty) {
|
||||
return Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Align(
|
||||
alignment: AlignmentDirectional(-1, 0),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
14, 0, 0, 16),
|
||||
child: Text(
|
||||
'已分享用户'.tr,
|
||||
style: TextStyle(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Colors.white,
|
||||
fontSize: 30.rpx,
|
||||
letterSpacing: 0.0,
|
||||
height: 1,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Center(
|
||||
child: NullDataWidget(),
|
||||
),
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
// 有数据时,返回 ListView(可滚动)
|
||||
return Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Align(
|
||||
alignment: AlignmentDirectional(-1, 0),
|
||||
child: Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(14, 0, 0, 16),
|
||||
child: Text(
|
||||
'已分享用户'.tr,
|
||||
style: TextStyle(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Colors.white,
|
||||
fontSize: 30.rpx,
|
||||
letterSpacing: 0.0,
|
||||
height: 1,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: ListView(
|
||||
controller: scrollController,
|
||||
padding: EdgeInsets.zero,
|
||||
children: shareUsers
|
||||
.asMap()
|
||||
.entries
|
||||
.map((e) => ShareUserWidget(
|
||||
index: e.key,
|
||||
mac: data['mac'.tr],
|
||||
repairListController: controller,
|
||||
))
|
||||
.toList()
|
||||
.addToEnd(SizedBox(
|
||||
height: AppConstants.list_end_height)),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
)),
|
||||
),
|
||||
),
|
||||
),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user