更新
This commit is contained in:
@@ -39,7 +39,7 @@
|
||||
android:usesCleartextTraffic="true"
|
||||
android:name="${applicationName}"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="智慧眠花糖">
|
||||
android:label="太和e护">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||
|
||||
@@ -13,7 +13,8 @@
|
||||
"提示内容2": "2.对APP进行蓝牙和位置(定位服务)授权;",
|
||||
"提示内容3": "3.若使用扫一扫功能,请对摄像头进行授权。",
|
||||
"扫一扫绑定": "扫一扫添加新设备",
|
||||
"蓝牙绑定": "蓝牙搜附近的设备"
|
||||
"蓝牙绑定": "蓝牙搜附近的设备",
|
||||
"已关联体征监测设备": "已关联体征监测设备"
|
||||
},
|
||||
"我的": {
|
||||
"个人信息": "个人信息",
|
||||
@@ -37,6 +38,44 @@
|
||||
"说明正文": "该体征监测设备在床垫下方使用(注意贴有标签的一面朝上),放置在靠近使用人胸腔正下方为宜。放置完成后,连接电源,控制盒绿灯快闪时,可以进行绑定流程。",
|
||||
"不再提示": "不再提示",
|
||||
"跳过": "跳过"
|
||||
},
|
||||
"蓝牙绑定":{
|
||||
"标题":"蓝牙绑定",
|
||||
"扫描":"扫描蓝牙设备中…",
|
||||
"信号":"最小信号强度",
|
||||
"搜索提示":"检索设备",
|
||||
"搜索":"搜索",
|
||||
"匹配":"匹配出的外围设备"
|
||||
},
|
||||
"登录页":{
|
||||
"欢迎使用太和e护":"欢迎使用太和e护",
|
||||
"科技睡眠 洞悉万千":"科技睡眠 洞悉万千",
|
||||
"本机号码一键登录/注册":"本机号码一键登录/注册",
|
||||
"其他手机号码":"其他手机号码",
|
||||
"协议1":"登录时将自动注册,且代表您同意",
|
||||
"协议2":"《用户协议》",
|
||||
"协议3":"和",
|
||||
"协议4":"《隐私政策》",
|
||||
"协议5":"以及",
|
||||
"协议6":"《用户使用条款》",
|
||||
"其他登录方式":"欢迎使用太和e护"
|
||||
},
|
||||
"人员资料":{
|
||||
"标题":"人员资料",
|
||||
"保存":"保存",
|
||||
"名字输入提示":"使用人员姓名",
|
||||
"生日输入提示":"生日",
|
||||
"体重输入提示":"体重",
|
||||
"疾病标题":"慢病管理",
|
||||
"提示":"提示:填写准确的使用人员相关资料,可以使睡眠报告监测数据更加精准!"
|
||||
},
|
||||
"绑定成功":{
|
||||
"标题":"绑定完成",
|
||||
"绑定成功":"绑定成功! ",
|
||||
"分享标题":"是否进行分享?",
|
||||
"分享内容":"设备绑定成功后,如需对朋友或家人共享我的睡眠情况,可以进行立即分享,分享成功后,对方即可享受查看该设备权限,可以收到该设备的睡眠报告。",
|
||||
"立即分享":"立即分享",
|
||||
"返回":"返回首页 开启体验"
|
||||
}
|
||||
|
||||
}
|
||||
@@ -5,7 +5,9 @@ class CustomCard extends StatefulWidget {
|
||||
final VoidCallback onTap; // 点击回调
|
||||
final List<Color> colors; // 背景颜色列表
|
||||
final Widget child; // 子组件
|
||||
final String title;
|
||||
final String title; // 标题
|
||||
final bool enableAnimation; // 是否启用动画效果
|
||||
final bool enableGradient; // 是否启用渐变
|
||||
|
||||
const CustomCard({
|
||||
Key? key,
|
||||
@@ -14,6 +16,8 @@ class CustomCard extends StatefulWidget {
|
||||
required this.colors,
|
||||
required this.child,
|
||||
required this.title,
|
||||
this.enableAnimation = true, // 默认启用动画效果
|
||||
this.enableGradient = true, // 默认启用渐变效果
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
@@ -60,7 +64,7 @@ class _CustomCardState extends State<CustomCard>
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final bool isGradient = widget.colors.length > 1;
|
||||
final bool isGradient = widget.enableGradient && widget.colors.length > 1; // 只有启用渐变时,才使用渐变
|
||||
final Color baseColor = widget.colors.first;
|
||||
|
||||
return Material(
|
||||
@@ -69,7 +73,8 @@ class _CustomCardState extends State<CustomCard>
|
||||
child: GestureDetector(
|
||||
onTapDown: _handleTap,
|
||||
behavior: HitTestBehavior.translucent, // 关键:让空白区域也能点击
|
||||
child: AnimatedScale(
|
||||
child: widget.enableAnimation // 判断是否启用动画
|
||||
? AnimatedScale(
|
||||
scale: _scale,
|
||||
duration: _animationDuration,
|
||||
curve: Curves.easeInOut,
|
||||
@@ -88,6 +93,21 @@ class _CustomCardState extends State<CustomCard>
|
||||
),
|
||||
child: widget.child,
|
||||
),
|
||||
)
|
||||
: Ink(
|
||||
key: _inkKey,
|
||||
decoration: BoxDecoration(
|
||||
color: isGradient ? null : baseColor,
|
||||
gradient: isGradient
|
||||
? LinearGradient(
|
||||
colors: widget.colors,
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.bottomRight,
|
||||
)
|
||||
: null,
|
||||
borderRadius: BorderRadius.circular(widget.borderRadius),
|
||||
),
|
||||
child: widget.child,
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
@@ -34,7 +34,9 @@ class UserInfoModel {
|
||||
User? superbase_user;
|
||||
|
||||
String? img_bucket = 'user';
|
||||
int? login = 0; //是否登录0:未登录 1:已登录
|
||||
int? login = 0;
|
||||
|
||||
bool? register_agree = false; //注册协议
|
||||
|
||||
UserInfoModel();
|
||||
static UserInfoModel fromJson(Map<String, dynamic> json) =>
|
||||
|
||||
@@ -19,7 +19,8 @@ UserInfoModel _$UserInfoModelFromJson(Map<String, dynamic> json) =>
|
||||
..deviceModel = json['deviceModel'] as String?
|
||||
..appVersion = json['appVersion'] as String?
|
||||
..img_bucket = json['img_bucket'] as String?
|
||||
..login = (json['login'] as num?)?.toInt();
|
||||
..login = (json['login'] as num?)?.toInt()
|
||||
..register_agree = json['register_agree'] as bool?;
|
||||
|
||||
Map<String, dynamic> _$UserInfoModelToJson(UserInfoModel instance) =>
|
||||
<String, dynamic>{
|
||||
@@ -33,4 +34,5 @@ Map<String, dynamic> _$UserInfoModelToJson(UserInfoModel instance) =>
|
||||
'appVersion': instance.appVersion,
|
||||
'img_bucket': instance.img_bucket,
|
||||
'login': instance.login,
|
||||
'register_agree': instance.register_agree,
|
||||
};
|
||||
|
||||
@@ -78,25 +78,25 @@ class CustomThemeColor {
|
||||
|
||||
//浅色模式
|
||||
static final light = CustomThemeColor(
|
||||
color1: '#FFFFFF',
|
||||
color2: "#f7f8fa",
|
||||
color3: "#4AD8FA",
|
||||
color4: "#4AD8FA",
|
||||
color5: "#4AD8FA",
|
||||
color6: "#4AD8FA",
|
||||
color7: "#333333",
|
||||
color8: "#333333",
|
||||
color9: "#333333",
|
||||
color10: "#f7f8fa",
|
||||
color11: "#f7f8fa",
|
||||
color12: "#DBF8FD",
|
||||
color13: "#d3d3d3",
|
||||
color14: "#333333",
|
||||
color15: "#FF7159",
|
||||
color16: "#d3d3d3",
|
||||
color1: '#45D989',
|
||||
color2: "#00C1AA",
|
||||
color3: "#333333",
|
||||
color4: "#D3D3D3",
|
||||
color6: "#FBF5D5",
|
||||
color5: "#FFFFFF006",
|
||||
color7: "#00C1AA",
|
||||
color8: "#FF9F66",
|
||||
color9: "#FF7159",
|
||||
color10: "#E60012",
|
||||
color11: "#00C1AA",
|
||||
color12: "#10CFF1",
|
||||
color13: "#FF9F66",
|
||||
color14: "#FF7159",
|
||||
color15: "#F6F6F6",
|
||||
color16: "#333333",
|
||||
color17: "#FFFFFF",
|
||||
color18: "#4AD8FA",
|
||||
color19: "#4AD8FA",
|
||||
color18: "#FFFFFF",
|
||||
color19: "#FFFFFF",
|
||||
color20: "#f7f8fa",
|
||||
color21: "#5EE00A",
|
||||
color25: "#FF7159",
|
||||
@@ -114,25 +114,25 @@ class CustomThemeColor {
|
||||
color40: "#333333");
|
||||
//深色模式
|
||||
static final dark = CustomThemeColor(
|
||||
color1: '#242835',
|
||||
color2: "#f7f8fa",
|
||||
color3: "#4AD8FA",
|
||||
color4: "#4AD8FA",
|
||||
color5: "#4AD8FA",
|
||||
color6: "#4AD8FA",
|
||||
color7: "#333333",
|
||||
color8: "#333333",
|
||||
color9: "#333333",
|
||||
color10: "#f7f8fa",
|
||||
color11: "#f7f8fa",
|
||||
color12: "#DBF8FD",
|
||||
color13: "#d3d3d3",
|
||||
color14: "#333333",
|
||||
color15: "#FF7159",
|
||||
color16: "#d3d3d3",
|
||||
color17: "#FFFFFF",
|
||||
color18: "#4AD8FA",
|
||||
color19: "#4AD8FA",
|
||||
color1: '#45D989',
|
||||
color2: "#00C1AA",
|
||||
color3: "#FFFFFF",
|
||||
color4: "#999999",
|
||||
color5: "#FFFFFF06",
|
||||
color6: "#FBF5D5",
|
||||
color7: "#00C1AA",
|
||||
color8: "#FF9F66",
|
||||
color9: "#FF7159",
|
||||
color10: "#E60012",
|
||||
color11: "#00C1AA",
|
||||
color12: "#10CFF1",
|
||||
color13: "#FF9F66",
|
||||
color14: "#FF7159",
|
||||
color15: "#161B28",
|
||||
color16: "#FFFFFF",
|
||||
color17: "#242835",
|
||||
color18: "#EAEAEA",
|
||||
color19: "#FFFFFF",
|
||||
color20: "#f7f8fa",
|
||||
color21: "#5EE00A",
|
||||
color25: "#FF7159",
|
||||
@@ -199,6 +199,14 @@ class CustomThemeColor {
|
||||
|
||||
if (color.length == 6) {
|
||||
color = "0xFF$color";
|
||||
} else if (color.length == 8) {
|
||||
String alphaHex = color.substring(6, 8);
|
||||
String rgbHex = color.substring(0, 6);
|
||||
|
||||
int alphaInt = int.parse(alphaHex);
|
||||
double alpha = alphaInt / 100.0;
|
||||
|
||||
return Color(int.parse("0xFF$rgbHex")).withOpacity(alpha);
|
||||
} else {
|
||||
color = "0x$color";
|
||||
}
|
||||
|
||||
@@ -124,16 +124,20 @@ class _EPageState extends State<DeviceTypePage> {
|
||||
),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
height: MediaQuery.sizeOf(context).height *
|
||||
0.26,
|
||||
height: (MediaQuery.sizeOf(context).width) *
|
||||
0.13,
|
||||
constraints: BoxConstraints(
|
||||
minHeight: 421.rpx,
|
||||
minHeight: 200.rpx,
|
||||
),
|
||||
child: ClipRRect(
|
||||
borderRadius:
|
||||
BorderRadius.circular(20.rpx),
|
||||
child: Image.network(
|
||||
'https://picsum.photos/seed/861/600',
|
||||
// child: Image.network(
|
||||
// 'https://picsum.photos/seed/861/600',
|
||||
// fit: BoxFit.cover,
|
||||
// ),
|
||||
child: Image.asset(
|
||||
"assets/img/help_op.png",
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
),
|
||||
@@ -159,12 +163,52 @@ class _EPageState extends State<DeviceTypePage> {
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.center,
|
||||
children: [
|
||||
Icon(
|
||||
Icons.arrow_back,
|
||||
color: FlutterFlowTheme.of(context)
|
||||
.primaryText,
|
||||
size: 24.rpx,
|
||||
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("#16C89F"),
|
||||
checkColor:
|
||||
FlutterFlowTheme.of(context)
|
||||
.info,
|
||||
),
|
||||
)),
|
||||
Text(
|
||||
'绑定引导.不再提示'.tr,
|
||||
style: FlutterFlowTheme.of(context)
|
||||
@@ -182,12 +226,13 @@ class _EPageState extends State<DeviceTypePage> {
|
||||
borderRadius: 50.rpx,
|
||||
onTap: () async {
|
||||
await Future.delayed(
|
||||
Duration(seconds: 1));
|
||||
Duration(milliseconds: 500));
|
||||
Get.back(); // 关闭当前弹窗或页面
|
||||
},
|
||||
colors: [
|
||||
Colors.yellow,
|
||||
Colors.green
|
||||
//todo 颜色
|
||||
stringToColor("45D989"),
|
||||
stringToColor("00C1AA")
|
||||
], // 单色背景也用渐变写法
|
||||
title: '',
|
||||
child: Container(
|
||||
@@ -250,7 +295,7 @@ class _EPageState extends State<DeviceTypePage> {
|
||||
backgroundColor: stringToColor("#242835"),
|
||||
// backgroundColor: Colors.transparent,
|
||||
automaticallyImplyLeading: false,
|
||||
// iconTheme: IconThemeData(color: Colors.white),
|
||||
iconTheme: IconThemeData(color: Colors.white),
|
||||
titleSpacing: 0,
|
||||
// leading: returnIconButtom,
|
||||
title: Container(
|
||||
@@ -283,6 +328,7 @@ class _EPageState extends State<DeviceTypePage> {
|
||||
actions: [],
|
||||
centerTitle: false,
|
||||
),
|
||||
|
||||
body: SafeArea(
|
||||
top: true,
|
||||
child: Padding(
|
||||
@@ -295,16 +341,19 @@ class _EPageState extends State<DeviceTypePage> {
|
||||
context,
|
||||
title: '设备类型.体征监测设备'.tr,
|
||||
imageUrl: 'assets/img/device.png',
|
||||
type: '1',
|
||||
),
|
||||
_buildDeviceCard(
|
||||
context,
|
||||
title: '设备类型.智能床/床垫'.tr,
|
||||
imageUrl: 'assets/img/bed.png',
|
||||
type: '2',
|
||||
),
|
||||
_buildDeviceCard(
|
||||
context,
|
||||
title: '设备类型.摄像头'.tr,
|
||||
imageUrl: 'assets/img/camera.png',
|
||||
type: '3',
|
||||
),
|
||||
]
|
||||
.divide(SizedBox(height: 26.rpx))
|
||||
@@ -321,14 +370,18 @@ class _EPageState extends State<DeviceTypePage> {
|
||||
}
|
||||
|
||||
Widget _buildDeviceCard(BuildContext context,
|
||||
{required String title, required String imageUrl}) {
|
||||
{required String title, required String imageUrl, required String type}) {
|
||||
return CustomCard(
|
||||
borderRadius: 20.rpx, // 圆角大小
|
||||
onTap: () {
|
||||
print('点击了 $title');
|
||||
if (type != null) {
|
||||
if (type == '1') {
|
||||
Get.toNamed("/blueteethDevice");
|
||||
}
|
||||
}
|
||||
},
|
||||
// colors: [Colors.white.withOpacity(0.06)], // 背景色
|
||||
colors: [stringToColor("45D989"), stringToColor("00C1AA")], // 背景色
|
||||
colors: [stringToColor("#242835")], // 背景色
|
||||
title: title,
|
||||
child: Container(
|
||||
width: double.infinity,
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
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';
|
||||
|
||||
@@ -19,35 +24,87 @@ class _EPageState extends State<LoginPage> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return LayoutBuilder(
|
||||
builder: (context, boxConstraints) => GestureDetector(
|
||||
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: [
|
||||
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,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
// 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(
|
||||
@@ -59,13 +116,15 @@ class _EPageState extends State<LoginPage> {
|
||||
child: Align(
|
||||
alignment: AlignmentDirectional(0, 0),
|
||||
child: Text(
|
||||
'欢迎使用太和e护',
|
||||
'登录页.欢迎使用太和e护'.tr,
|
||||
style: FlutterFlowTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Inter',
|
||||
fontSize: 48.rpx,
|
||||
letterSpacing: 0.0,
|
||||
//todo 颜色
|
||||
color: stringToColor("#FFFFFF"),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -75,21 +134,23 @@ class _EPageState extends State<LoginPage> {
|
||||
Align(
|
||||
alignment: AlignmentDirectional(-1, 0),
|
||||
child: Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0, 15.rpx, 0, 0),
|
||||
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"),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -99,8 +160,8 @@ class _EPageState extends State<LoginPage> {
|
||||
Align(
|
||||
alignment: AlignmentDirectional(-1, 0),
|
||||
child: Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0, 95.rpx, 0, 0),
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0, 95.rpx, 0, 0),
|
||||
child: Container(
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(),
|
||||
@@ -114,59 +175,8 @@ class _EPageState extends State<LoginPage> {
|
||||
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,
|
||||
//todo 颜色
|
||||
color: stringToColor("#FFFFFF"),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -175,34 +185,279 @@ class _EPageState extends State<LoginPage> {
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
110.rpx, 136.rpx, 110.rpx, 0),
|
||||
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,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Icon(
|
||||
Icons.arrow_back,
|
||||
color:
|
||||
FlutterFlowTheme.of(context).primaryText,
|
||||
size: 24.rpx,
|
||||
// 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: Text(
|
||||
'登录时将自动注册,且代表您同意《用户协议》和 《隐私政策》以及《用户使用条款》',
|
||||
style: FlutterFlowTheme.of(context)
|
||||
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: 24.rpx, // 可选:字体稍小点更适配
|
||||
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: 26.rpx)),
|
||||
),
|
||||
),
|
||||
].divide(SizedBox(width: 18.rpx)),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -221,15 +476,18 @@ class _EPageState extends State<LoginPage> {
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0, 0, 0, 36.rpx),
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0, 0, 0, 36.rpx),
|
||||
child: Text(
|
||||
'其他登录方式',
|
||||
style:
|
||||
FlutterFlowTheme.of(context).bodyMedium.override(
|
||||
'登录页.其他登录方式'.tr,
|
||||
style: FlutterFlowTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Inter',
|
||||
fontSize: 26.rpx,
|
||||
letterSpacing: 0.0,
|
||||
//todo 颜色
|
||||
color: stringToColor("#FFFFFF"),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -244,9 +502,10 @@ class _EPageState extends State<LoginPage> {
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
),
|
||||
child: Image.network(
|
||||
'https://picsum.photos/seed/301/600',
|
||||
fit: BoxFit.cover,
|
||||
child: Image.asset(
|
||||
"assets/img/wechat.png",
|
||||
width: 30.rpx,
|
||||
height: 30.rpx,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
@@ -256,9 +515,23 @@ class _EPageState extends State<LoginPage> {
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
),
|
||||
child: Image.network(
|
||||
'https://picsum.photos/seed/301/600',
|
||||
fit: BoxFit.cover,
|
||||
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)),
|
||||
@@ -271,6 +544,7 @@ class _EPageState extends State<LoginPage> {
|
||||
),
|
||||
),
|
||||
),
|
||||
)),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
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/theme_controller/ThemeController.dart';
|
||||
@@ -25,72 +27,20 @@ class _HomePageState extends State<HomePage> {
|
||||
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: Scaffold(
|
||||
backgroundColor: Colors.transparent,
|
||||
body: SafeArea(
|
||||
top: true,
|
||||
// child: Text("首页"),
|
||||
child: Container(
|
||||
height: bodySize.maxHeight,
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
AppConstants().main_left_right_padding,
|
||||
@@ -99,6 +49,7 @@ class _HomePageState extends State<HomePage> {
|
||||
0),
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
@@ -121,8 +72,8 @@ class _HomePageState extends State<HomePage> {
|
||||
title: '首页.登录'
|
||||
.tr, // 虽然 title 传入了,但当前组件里没用它(可忽略或用于调试)
|
||||
colors: [
|
||||
stringToColor("#45D989"),
|
||||
stringToColor("#00C1AA"),
|
||||
themeController.currentColor.sc1,
|
||||
themeController.currentColor.sc2,
|
||||
],
|
||||
child: Container(
|
||||
width: 100.rpx,
|
||||
@@ -136,34 +87,38 @@ class _HomePageState extends State<HomePage> {
|
||||
.titleSmall
|
||||
.override(
|
||||
fontFamily: 'Inter Tight',
|
||||
color: Colors.white,
|
||||
color: themeController
|
||||
.currentColor.sc19,
|
||||
letterSpacing: 0.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
Icon(
|
||||
Icons.add_circle_outline_outlined,
|
||||
color: FlutterFlowTheme.of(context).primaryText,
|
||||
size: 38.rpx,
|
||||
SvgPicture.asset(
|
||||
'assets/img/icon/add.svg',
|
||||
width: 39.rpx,
|
||||
height: 39.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
//todo 颜色
|
||||
color: themeController.currentColor.sc16,
|
||||
),
|
||||
// Lottie.asset(
|
||||
// 'assets/img/loading.json',
|
||||
// width: 200,
|
||||
// height: 200,
|
||||
// fit: BoxFit.contain,
|
||||
// )
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
19.rpx, 13.rpx, 0, 13.rpx),
|
||||
19.rpx, 34.rpx, 0, 21.rpx),
|
||||
child: ClickableContainer(
|
||||
backgroundColor: Colors.transparent, // 容器背景色
|
||||
highlightColor: Colors.orange, // 点击时的背景色
|
||||
onTap: () {
|
||||
print('点击了容器');
|
||||
},
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.rpx, 10.rpx, 0, 10.rpx),
|
||||
child: Container(
|
||||
width: double.infinity,
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Text(
|
||||
'首页.已关联体征监测设备'.tr,
|
||||
@@ -174,6 +129,8 @@ class _HomePageState extends State<HomePage> {
|
||||
fontSize:
|
||||
AppConstants().title_text_fontSize,
|
||||
letterSpacing: 0.0,
|
||||
//todo 颜色
|
||||
color: themeController.currentColor.sc3,
|
||||
),
|
||||
),
|
||||
Text(
|
||||
@@ -185,10 +142,14 @@ class _HomePageState extends State<HomePage> {
|
||||
fontSize:
|
||||
AppConstants().title_text_fontSize,
|
||||
letterSpacing: 0.0,
|
||||
color: themeController.currentColor.sc8,
|
||||
),
|
||||
),
|
||||
],
|
||||
].divide(SizedBox(
|
||||
width: 6.rpx,
|
||||
)),
|
||||
)),
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: MediaQuery.sizeOf(context).width,
|
||||
@@ -198,71 +159,30 @@ class _HomePageState extends State<HomePage> {
|
||||
minHeight: 450.rpx,
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
color: stringToColor("#242835"),
|
||||
color: themeController.currentColor.sc5,
|
||||
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");
|
||||
Get.toNamed("/personPage");
|
||||
},
|
||||
colors: [
|
||||
stringToColor("45D989"),
|
||||
stringToColor("00C1AA")
|
||||
], // 渐变色是同一个色,也可以根据需要调整
|
||||
title: '首页.蓝牙绑定'.tr, // 可选,虽然这个 title 没用,但可以作为调试用
|
||||
// 渐变色
|
||||
themeController.currentColor.sc1,
|
||||
themeController.currentColor.sc2,
|
||||
],
|
||||
title:
|
||||
'首页.蓝牙绑定'.tr, // 可选,虽然这个 title 没用,但可以作为调试用
|
||||
child: Container(
|
||||
width: MediaQuery.sizeOf(context).width * 0.66,
|
||||
width:
|
||||
MediaQuery.sizeOf(context).width * 0.66,
|
||||
height:
|
||||
MediaQuery.sizeOf(context).height * 0.055,
|
||||
constraints: BoxConstraints(
|
||||
@@ -273,17 +193,73 @@ class _HomePageState extends State<HomePage> {
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Icon(
|
||||
Icons.arrow_back,
|
||||
color: FlutterFlowTheme.of(context)
|
||||
.primaryText,
|
||||
size: 28.rpx,
|
||||
SvgPicture.asset(
|
||||
'assets/img/icon/scan.svg',
|
||||
width: 25.rpx,
|
||||
height: 25.rpx, // SVG 的固定大小
|
||||
color: themeController
|
||||
.currentColor.sc16, // 颜色设置
|
||||
),
|
||||
Text(
|
||||
'首页.扫一扫绑定'.tr,
|
||||
style: FlutterFlowTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
color: themeController
|
||||
.currentColor.sc19,
|
||||
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: [
|
||||
//todo 颜色
|
||||
themeController.currentColor.sc1,
|
||||
themeController.currentColor.sc2,
|
||||
], // 渐变色是同一个色,也可以根据需要调整
|
||||
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: [
|
||||
SvgPicture.asset(
|
||||
'assets/img/icon/bluetooth.svg',
|
||||
width: 25.rpx,
|
||||
height: 25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
//todo 颜色
|
||||
color:
|
||||
themeController.currentColor.sc16,
|
||||
),
|
||||
Text(
|
||||
'首页.蓝牙绑定'.tr,
|
||||
style: FlutterFlowTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
//todo 颜色
|
||||
color: themeController
|
||||
.currentColor.sc19,
|
||||
fontFamily: 'Inter',
|
||||
fontSize: AppConstants()
|
||||
.normal_text_fontSize,
|
||||
@@ -296,7 +272,9 @@ class _HomePageState extends State<HomePage> {
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
].divide(SizedBox(
|
||||
height: 60.rpx,
|
||||
)),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
@@ -305,9 +283,9 @@ class _HomePageState extends State<HomePage> {
|
||||
child: Container(
|
||||
width: MediaQuery.sizeOf(context).width,
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xFFFBF5D5),
|
||||
borderRadius: BorderRadius.circular(
|
||||
AppConstants().normal_container_radius), // 圆角半径
|
||||
color: themeController.currentColor.sc6,
|
||||
borderRadius: BorderRadius.circular(AppConstants()
|
||||
.normal_container_radius), // 圆角半径
|
||||
),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
@@ -316,11 +294,16 @@ class _HomePageState extends State<HomePage> {
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Icon(
|
||||
Icons.volume_mute,
|
||||
color:
|
||||
FlutterFlowTheme.of(context).primaryText,
|
||||
size: 30.rpx,
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.rpx, 5.rpx, 0.rpx, 0.rpx),
|
||||
child: SvgPicture.asset(
|
||||
'assets/img/icon/sound.svg',
|
||||
width: 30.rpx,
|
||||
height: 30.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
//todo 颜色
|
||||
color: stringToColor("#FF9F66"),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Column(
|
||||
@@ -337,8 +320,10 @@ class _HomePageState extends State<HomePage> {
|
||||
fontSize: AppConstants()
|
||||
.normal_text_fontSize,
|
||||
letterSpacing: 0.0,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Colors.orange),
|
||||
fontWeight: FontWeight.w900,
|
||||
//todo 配置颜色
|
||||
color:
|
||||
stringToColor("#916D46")),
|
||||
),
|
||||
Text(
|
||||
'首页.提示内容1'.tr,
|
||||
@@ -349,7 +334,9 @@ class _HomePageState extends State<HomePage> {
|
||||
fontSize: AppConstants()
|
||||
.normal_text_fontSize,
|
||||
letterSpacing: 0.0,
|
||||
),
|
||||
//todo 配置颜色
|
||||
color:
|
||||
stringToColor("#916D46")),
|
||||
),
|
||||
Text(
|
||||
'首页.提示内容2'.tr,
|
||||
@@ -360,7 +347,9 @@ class _HomePageState extends State<HomePage> {
|
||||
fontSize: AppConstants()
|
||||
.normal_text_fontSize,
|
||||
letterSpacing: 0.0,
|
||||
),
|
||||
//todo 配置颜色
|
||||
color:
|
||||
stringToColor("#916D46")),
|
||||
),
|
||||
Text(
|
||||
'首页.提示内容3'.tr,
|
||||
@@ -371,7 +360,9 @@ class _HomePageState extends State<HomePage> {
|
||||
fontSize: AppConstants()
|
||||
.normal_text_fontSize,
|
||||
letterSpacing: 0.0,
|
||||
),
|
||||
//todo 配置颜色
|
||||
color:
|
||||
stringToColor("#916D46")),
|
||||
),
|
||||
].divide(SizedBox(
|
||||
height: AppConstants()
|
||||
@@ -391,6 +382,7 @@ class _HomePageState extends State<HomePage> {
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ class MainPageBottomChange extends GetView<MainPageController> {
|
||||
|
||||
List arr = [
|
||||
HomePage(),
|
||||
SleepReportPage(),
|
||||
// SleepReportPage(),
|
||||
EPage(),
|
||||
MessagePage(),
|
||||
MinePage(),
|
||||
@@ -91,43 +91,10 @@ class MainPageBottomChange extends GetView<MainPageController> {
|
||||
);
|
||||
} else {
|
||||
return Scaffold(
|
||||
backgroundColor: Colors.transparent,
|
||||
body: arr[controller.model.currentIndex],
|
||||
floatingActionButtonAnimator:
|
||||
FloatingActionButtonAnimator.noAnimation,
|
||||
// floatingActionButton: Stack(
|
||||
// alignment: Alignment.center,
|
||||
// children: [
|
||||
// Positioned(
|
||||
// bottom: 10.rpx,
|
||||
// child: InkWell(
|
||||
// onTap: () {
|
||||
// print("index 3");
|
||||
// if (globalController.model.deviceList.length == 0) {
|
||||
// showToast("请先绑定设备");
|
||||
// return;
|
||||
// }
|
||||
// if (globalController.model.deviceMain == null ||
|
||||
// globalController.model.deviceMain["mac"] == null) {
|
||||
// globalController.model.deviceMain =
|
||||
// globalController.model.deviceList[0];
|
||||
// globalController.updateAll();
|
||||
// }
|
||||
|
||||
// controller.model.currentIndex = 2;
|
||||
// controller.updateAll();
|
||||
// },
|
||||
// child: Image.asset(
|
||||
// gaplessPlayback: true,
|
||||
// excludeFromSemantics: true,
|
||||
// controller.model.currentIndex == 2
|
||||
// ? "assets/images/icon_sleep_light.png"
|
||||
// : "assets/images/icon_sleep_dark.png",
|
||||
// width: 120.rpx,
|
||||
// height: 120.rpx,
|
||||
// ),
|
||||
// )),
|
||||
// ],
|
||||
// ),
|
||||
floatingActionButtonLocation:
|
||||
FloatingActionButtonLocation.centerDocked,
|
||||
bottomNavigationBar: Theme(
|
||||
@@ -135,17 +102,14 @@ class MainPageBottomChange extends GetView<MainPageController> {
|
||||
splashFactory: NoSplash.splashFactory,
|
||||
highlightColor: Colors.transparent),
|
||||
child: BottomNavigationBar(
|
||||
unselectedItemColor: Colors.white,
|
||||
selectedItemColor: stringToColor("#D3B684"),
|
||||
unselectedItemColor: themeController.currentColor.sc4,
|
||||
selectedItemColor: themeController.currentColor.sc1,
|
||||
backgroundColor: themeController.currentColor.sc5,
|
||||
selectedFontSize: 26.rpx,
|
||||
unselectedFontSize: 26.rpx,
|
||||
type: BottomNavigationBarType.fixed,
|
||||
currentIndex: controller.model.currentIndex,
|
||||
onTap: (index) {
|
||||
// if(controller.model.currentIndex == 2) {
|
||||
// arr[2].closeBefore();
|
||||
// }
|
||||
Future.delayed(const Duration(milliseconds: 500), () {
|
||||
if (controller.model.currentIndex != 1) {
|
||||
globalController.model.hideBottomNavigationBar = false;
|
||||
@@ -158,8 +122,8 @@ class MainPageBottomChange extends GetView<MainPageController> {
|
||||
items: [
|
||||
getBottomNavigationBarItem("assets/img/menu/home.svg",
|
||||
"assets/img/menu/n_home.svg", "菜单.首页".tr),
|
||||
getBottomNavigationBarItem("assets/img/menu/report.svg",
|
||||
"assets/img/menu/n_report.svg", "菜单.报告".tr),
|
||||
// getBottomNavigationBarItem("assets/img/menu/report.svg",
|
||||
// "assets/img/menu/n_report.svg", "菜单.报告".tr),
|
||||
getBottomNavigationBarItem("assets/img/menu/e.svg",
|
||||
"assets/img/menu/n_e.svg", "菜单.小e".tr),
|
||||
getBottomNavigationBarItem("assets/img/menu/message.svg",
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
import 'package:ef/ef.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.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/controller/main_bottom/global_controller.dart';
|
||||
import 'package:vbvs_app/controller/user_info_controller.dart';
|
||||
|
||||
@@ -20,10 +23,52 @@ class _MinePageState extends State<MinePage> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
|
||||
statusBarColor: stringToColor("#242835"), // 这里设置你希望的颜色
|
||||
statusBarIconBrightness: Brightness.light, // 状态栏图标的亮度
|
||||
));
|
||||
return LayoutBuilder(
|
||||
builder: (context, bodySize) => GestureDetector(
|
||||
onTap: () => FocusScope.of(context).unfocus(),
|
||||
child: Scaffold(
|
||||
// appBar: AppBar(
|
||||
// backgroundColor: stringToColor("#242835"),
|
||||
// // backgroundColor: Colors.transparent,
|
||||
// automaticallyImplyLeading: false,
|
||||
// // iconTheme: IconThemeData(color: Colors.white),
|
||||
// titleSpacing: 0,
|
||||
// // leading: returnIconButtom,
|
||||
// // title: Container(
|
||||
// // // color: Colors.grey,
|
||||
// // width: double.infinity,
|
||||
// // height: 180.rpx,
|
||||
// // child: Stack(
|
||||
// // alignment: Alignment.center,
|
||||
// // children: [
|
||||
// // /// 居中标题
|
||||
// // Text(
|
||||
// // '设备列表',
|
||||
// // style: FlutterFlowTheme.of(context).bodyMedium.override(
|
||||
// // fontFamily: 'Readex Pro',
|
||||
// // color: Colors.white,
|
||||
// // letterSpacing: 0,
|
||||
// // fontSize: 30.rpx,
|
||||
// // ),
|
||||
// // ),
|
||||
|
||||
// // /// 左边返回按钮
|
||||
// // Positioned(
|
||||
// // left: 0,
|
||||
// // child: returnIconButtom,
|
||||
// // ),
|
||||
// // ],
|
||||
// // ),
|
||||
// // ),
|
||||
|
||||
// actions: [],
|
||||
// centerTitle: false,
|
||||
// ),
|
||||
|
||||
body: SafeArea(
|
||||
top: true,
|
||||
child: Container(
|
||||
@@ -67,11 +112,13 @@ class _MinePageState extends State<MinePage> {
|
||||
'assets/img/icon/earphone.svg',
|
||||
width: 29.rpx,
|
||||
height: 29.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
color: Colors.white,
|
||||
),
|
||||
SvgPicture.asset(
|
||||
'assets/img/icon/setting.svg',
|
||||
width: 29.rpx,
|
||||
height: 29.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
color: Colors.white,
|
||||
),
|
||||
].divide(SizedBox(width: 60.rpx)),
|
||||
),
|
||||
@@ -100,26 +147,28 @@ class _MinePageState extends State<MinePage> {
|
||||
),
|
||||
Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'Hello World',
|
||||
'张天爱',
|
||||
style: FlutterFlowTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Inter',
|
||||
color: Color(0xFFEFF3F8),
|
||||
color: Colors.white,
|
||||
fontSize: AppConstants()
|
||||
.normal_text_fontSize,
|
||||
.title_text_fontSize,
|
||||
letterSpacing: 0.0,
|
||||
),
|
||||
),
|
||||
Text(
|
||||
'Hello World',
|
||||
'账号:135****2598',
|
||||
style: FlutterFlowTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Inter',
|
||||
color: Color(0xFFEAEFF3),
|
||||
color: stringToColor("#C8C9CC"),
|
||||
fontSize: AppConstants()
|
||||
.normal_text_fontSize,
|
||||
letterSpacing: 0.0,
|
||||
@@ -144,10 +193,15 @@ class _MinePageState extends State<MinePage> {
|
||||
letterSpacing: 0.0,
|
||||
),
|
||||
),
|
||||
SvgPicture.asset(
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0, 6.rpx, 0, 0.rpx),
|
||||
child: SvgPicture.asset(
|
||||
'assets/img/icon/arrow_right.svg',
|
||||
width: 8.rpx,
|
||||
width: 14.rpx,
|
||||
height: 14.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
color: Colors.white,
|
||||
),
|
||||
),
|
||||
].divide(SizedBox(width: 16.rpx)),
|
||||
),
|
||||
@@ -170,13 +224,26 @@ class _MinePageState extends State<MinePage> {
|
||||
),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
40.rpx, 0, 40.rpx, 0),
|
||||
45.rpx, 0, 45.rpx, 0),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Row(
|
||||
ClickableContainer(
|
||||
backgroundColor: Colors.transparent, // 容器背景色
|
||||
highlightColor: Colors.orange, // 点击时的背景色
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.rpx, 0.rpx, 0.rpx, 0.rpx),
|
||||
onTap: () {
|
||||
print('点击了容器');
|
||||
},
|
||||
child: Container(
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.rpx, 20.rpx, 0.rpx, 20.rpx),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
@@ -184,7 +251,9 @@ class _MinePageState extends State<MinePage> {
|
||||
SvgPicture.asset(
|
||||
'assets/img/icon/my_device.svg',
|
||||
width: 25.rpx,
|
||||
height: 25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
height:
|
||||
25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
color: stringToColor("#00C1AA"),
|
||||
),
|
||||
Text(
|
||||
'我的.我的设备'.tr,
|
||||
@@ -204,12 +273,29 @@ class _MinePageState extends State<MinePage> {
|
||||
'assets/img/icon/arrow_right.svg',
|
||||
width: 8.rpx,
|
||||
height: 15.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
color: Colors.white,
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
),
|
||||
),
|
||||
),
|
||||
ClickableContainer(
|
||||
backgroundColor: Colors.transparent, // 容器背景色
|
||||
highlightColor: Colors.orange, // 点击时的背景色
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.rpx, 0.rpx, 0.rpx, 0.rpx),
|
||||
onTap: () {
|
||||
print('点击了容器');
|
||||
},
|
||||
child: Container(
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.rpx, 20.rpx, 0.rpx, 20.rpx),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
@@ -217,7 +303,9 @@ class _MinePageState extends State<MinePage> {
|
||||
SvgPicture.asset(
|
||||
'assets/img/icon/device_repair.svg',
|
||||
width: 25.rpx,
|
||||
height: 25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
height:
|
||||
25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
color: stringToColor("#00C1AA"),
|
||||
),
|
||||
Text(
|
||||
'我的.设备报修'.tr,
|
||||
@@ -237,12 +325,29 @@ class _MinePageState extends State<MinePage> {
|
||||
'assets/img/icon/arrow_right.svg',
|
||||
width: 8.rpx,
|
||||
height: 15.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
color: Colors.white,
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
),
|
||||
),
|
||||
),
|
||||
ClickableContainer(
|
||||
backgroundColor: Colors.transparent, // 容器背景色
|
||||
highlightColor: Colors.orange, // 点击时的背景色
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.rpx, 0.rpx, 0.rpx, 0.rpx),
|
||||
onTap: () {
|
||||
print('点击了容器');
|
||||
},
|
||||
child: Container(
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.rpx, 20.rpx, 0.rpx, 20.rpx),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
@@ -250,7 +355,9 @@ class _MinePageState extends State<MinePage> {
|
||||
SvgPicture.asset(
|
||||
'assets/img/icon/op_ex.svg',
|
||||
width: 25.rpx,
|
||||
height: 25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
height:
|
||||
25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
color: stringToColor("#00C1AA"),
|
||||
),
|
||||
Text(
|
||||
'我的.操作说明'.tr,
|
||||
@@ -270,12 +377,29 @@ class _MinePageState extends State<MinePage> {
|
||||
'assets/img/icon/arrow_right.svg',
|
||||
width: 8.rpx,
|
||||
height: 14.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
color: Colors.white,
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
),
|
||||
),
|
||||
),
|
||||
ClickableContainer(
|
||||
backgroundColor: Colors.transparent, // 容器背景色
|
||||
highlightColor: Colors.orange, // 点击时的背景色
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.rpx, 0.rpx, 0.rpx, 0.rpx),
|
||||
onTap: () {
|
||||
print('点击了容器');
|
||||
},
|
||||
child: Container(
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.rpx, 20.rpx, 0.rpx, 20.rpx),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
@@ -283,7 +407,9 @@ class _MinePageState extends State<MinePage> {
|
||||
SvgPicture.asset(
|
||||
'assets/img/icon/like.svg',
|
||||
width: 25.rpx,
|
||||
height: 25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
height:
|
||||
25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
color: stringToColor("#00C1AA"),
|
||||
),
|
||||
Text(
|
||||
'关注我们'.tr,
|
||||
@@ -303,12 +429,29 @@ class _MinePageState extends State<MinePage> {
|
||||
'assets/img/icon/arrow_right.svg',
|
||||
width: 8.rpx,
|
||||
height: 15.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
color: Colors.white,
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
),
|
||||
),
|
||||
),
|
||||
ClickableContainer(
|
||||
backgroundColor: Colors.transparent, // 容器背景色
|
||||
highlightColor: Colors.orange, // 点击时的背景色
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.rpx, 0.rpx, 0.rpx, 0.rpx),
|
||||
onTap: () {
|
||||
print('点击了容器');
|
||||
},
|
||||
child: Container(
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.rpx, 20.rpx, 0.rpx, 20.rpx),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
@@ -316,7 +459,9 @@ class _MinePageState extends State<MinePage> {
|
||||
SvgPicture.asset(
|
||||
'assets/img/icon/version.svg',
|
||||
width: 25.rpx,
|
||||
height: 25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
height:
|
||||
25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
color: stringToColor("#00C1AA"),
|
||||
),
|
||||
Text(
|
||||
'我的.当前版本'.tr,
|
||||
@@ -349,16 +494,21 @@ class _MinePageState extends State<MinePage> {
|
||||
SvgPicture.asset(
|
||||
'assets/img/icon/arrow_right.svg',
|
||||
width: 8.rpx,
|
||||
height: 15.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
height:
|
||||
15.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
|
||||
color: Colors.white,
|
||||
),
|
||||
].divide(SizedBox(width: 28.rpx)),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
]
|
||||
.divide(SizedBox(height: 60.rpx))
|
||||
.addToStart(SizedBox(height: 60.rpx))
|
||||
.addToEnd(SizedBox(height: 60.rpx)),
|
||||
.divide(SizedBox(height: 0.rpx))
|
||||
.addToStart(SizedBox(height: 30.rpx))
|
||||
.addToEnd(SizedBox(height: 30.rpx)),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:vbvs_app/pages/device_bind/bind_device_success.dart';
|
||||
import 'package:vbvs_app/pages/device_bind/blueteeth_device_page.dart';
|
||||
import 'package:vbvs_app/pages/device_bind/device_type.dart';
|
||||
import 'package:vbvs_app/pages/login/login.dart';
|
||||
import 'package:vbvs_app/pages/main_bottom/e_page.dart';
|
||||
@@ -7,6 +9,7 @@ import 'package:vbvs_app/pages/main_bottom/main_page_bottom_change.dart';
|
||||
import 'package:vbvs_app/pages/main_bottom/message_page.dart';
|
||||
import 'package:vbvs_app/pages/main_bottom/mine_page.dart';
|
||||
import 'package:vbvs_app/pages/main_bottom/sleep_report_page.dart';
|
||||
import 'package:vbvs_app/pages/person/person_page.dart';
|
||||
|
||||
|
||||
|
||||
@@ -20,6 +23,9 @@ var routes = {
|
||||
"/mianPageBottomChange": (contxt) => MainPageBottomChange(),
|
||||
"/loginPage": (contxt) => LoginPage(),
|
||||
"/deviceType": (contxt) => DeviceTypePage(),
|
||||
"/blueteethDevice": (contxt) => BlueteethDevicePage(),
|
||||
"/personPage": (contxt) => PersonPage(),
|
||||
"/bindDeviceSuccess": (contxt) => BindDeviceSuccess(),
|
||||
};
|
||||
|
||||
//2、配置onGenerateRoute 固定写法 这个方法也相当于一个中间件,这里可以做权限判断
|
||||
|
||||
@@ -8,6 +8,7 @@ import Foundation
|
||||
import app_links
|
||||
import device_info_plus
|
||||
import file_picker
|
||||
import flutter_blue_plus_darwin
|
||||
import flutter_localization
|
||||
import flutter_web_auth_2
|
||||
import package_info_plus
|
||||
@@ -23,6 +24,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||
AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin"))
|
||||
DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
|
||||
FilePickerPlugin.register(with: registry.registrar(forPlugin: "FilePickerPlugin"))
|
||||
FlutterBluePlusPlugin.register(with: registry.registrar(forPlugin: "FlutterBluePlusPlugin"))
|
||||
FlutterLocalizationPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalizationPlugin"))
|
||||
FlutterWebAuth2Plugin.register(with: registry.registrar(forPlugin: "FlutterWebAuth2Plugin"))
|
||||
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
|
||||
|
||||
112
pubspec.lock
112
pubspec.lock
@@ -159,6 +159,14 @@ packages:
|
||||
url: "https://pub.flutter-io.cn"
|
||||
source: hosted
|
||||
version: "5.7.0"
|
||||
bluez:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: bluez
|
||||
sha256: "61a7204381925896a374301498f2f5399e59827c6498ae1e924aaa598751b545"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
source: hosted
|
||||
version: "0.8.3"
|
||||
boolean_selector:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -407,6 +415,14 @@ packages:
|
||||
url: "https://pub.flutter-io.cn"
|
||||
source: hosted
|
||||
version: "2.5.16"
|
||||
dbus:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: dbus
|
||||
sha256: "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
source: hosted
|
||||
version: "0.7.11"
|
||||
decimal:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -589,6 +605,54 @@ packages:
|
||||
url: "https://pub.flutter-io.cn"
|
||||
source: hosted
|
||||
version: "4.5.2"
|
||||
flutter_blue_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_blue_plus
|
||||
sha256: "2d926dbef0fd6c58d4be8fca9eaaf1ba747c0ccb8373ddd5386665317e26eb61"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
source: hosted
|
||||
version: "1.35.3"
|
||||
flutter_blue_plus_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_blue_plus_android
|
||||
sha256: c1d83f84b514e46345a8a58599c428f20b11e78379521e0d3b0611c7b7cbf2c1
|
||||
url: "https://pub.flutter-io.cn"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
flutter_blue_plus_darwin:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_blue_plus_darwin
|
||||
sha256: "8d0a0f11f83b13dda173396b7e4028b4e8656bc8dbbc82c26a7e49aafc62644b"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
flutter_blue_plus_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_blue_plus_linux
|
||||
sha256: "1d367ed378b2bd6c3b9685fda7044e1d2f169884802b7dec7badb31a99a72660"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
flutter_blue_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_blue_plus_platform_interface
|
||||
sha256: "114f8e85a03a28a48d707a4df6cc9218e1f2005cf260c5e815e5585a00da5778"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
flutter_blue_plus_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_blue_plus_web
|
||||
sha256: db70cdc41bc743763dc0d47e8c7c10f3923cbbe71b33d9dc21deea482affeb4d
|
||||
url: "https://pub.flutter-io.cn"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
flutter_cache_manager:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1214,6 +1278,54 @@ packages:
|
||||
url: "https://pub.flutter-io.cn"
|
||||
source: hosted
|
||||
version: "4.2.5"
|
||||
permission_handler:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: permission_handler
|
||||
sha256: "2d070d8684b68efb580a5997eb62f675e8a885ef0be6e754fb9ef489c177470f"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
source: hosted
|
||||
version: "12.0.0+1"
|
||||
permission_handler_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_android
|
||||
sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
source: hosted
|
||||
version: "13.0.1"
|
||||
permission_handler_apple:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_apple
|
||||
sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023
|
||||
url: "https://pub.flutter-io.cn"
|
||||
source: hosted
|
||||
version: "9.4.7"
|
||||
permission_handler_html:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_html
|
||||
sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
source: hosted
|
||||
version: "0.1.3+5"
|
||||
permission_handler_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_platform_interface
|
||||
sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878
|
||||
url: "https://pub.flutter-io.cn"
|
||||
source: hosted
|
||||
version: "4.3.0"
|
||||
permission_handler_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_windows
|
||||
sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
source: hosted
|
||||
version: "0.2.1"
|
||||
petitparser:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
||||
@@ -29,6 +29,8 @@ dependencies:
|
||||
url: http://admin@git.real.he-info.cn:8080/r/~lu/flutterflow-ui.git
|
||||
ref: master
|
||||
lottie: ^3.2.0
|
||||
flutter_blue_plus: ^1.35.3
|
||||
permission_handler: ^12.0.0+1
|
||||
|
||||
|
||||
dev_dependencies:
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
#include <app_links/app_links_plugin_c_api.h>
|
||||
#include <flutter_localization/flutter_localization_plugin_c_api.h>
|
||||
#include <permission_handler_windows/permission_handler_windows_plugin.h>
|
||||
#include <rive_common/rive_plugin.h>
|
||||
#include <url_launcher_windows/url_launcher_windows.h>
|
||||
#include <window_to_front/window_to_front_plugin.h>
|
||||
@@ -17,6 +18,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||
registry->GetRegistrarForPlugin("AppLinksPluginCApi"));
|
||||
FlutterLocalizationPluginCApiRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("FlutterLocalizationPluginCApi"));
|
||||
PermissionHandlerWindowsPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
|
||||
RivePluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("RivePlugin"));
|
||||
UrlLauncherWindowsRegisterWithRegistrar(
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
list(APPEND FLUTTER_PLUGIN_LIST
|
||||
app_links
|
||||
flutter_localization
|
||||
permission_handler_windows
|
||||
rive_common
|
||||
url_launcher_windows
|
||||
window_to_front
|
||||
|
||||
Reference in New Issue
Block a user