diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 119b8c8..6b0b61b 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -39,7 +39,7 @@ android:usesCleartextTraffic="true" android:name="${applicationName}" android:icon="@mipmap/ic_launcher" - android:label="智慧眠花糖"> + android:label="太和e护"> 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 @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,26 +73,42 @@ class _CustomCardState extends State child: GestureDetector( onTapDown: _handleTap, behavior: HitTestBehavior.translucent, // 关键:让空白区域也能点击 - child: AnimatedScale( - scale: _scale, - duration: _animationDuration, - curve: Curves.easeInOut, - 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, - ), - ), + child: widget.enableAnimation // 判断是否启用动画 + ? AnimatedScale( + scale: _scale, + duration: _animationDuration, + curve: Curves.easeInOut, + 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, + ), + ) + : 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, + ), ), ); } diff --git a/lib/controller/user_info_controller.dart b/lib/controller/user_info_controller.dart index 4ebe7e3..38d05f3 100644 --- a/lib/controller/user_info_controller.dart +++ b/lib/controller/user_info_controller.dart @@ -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 json) => diff --git a/lib/controller/user_info_controller.g.dart b/lib/controller/user_info_controller.g.dart index 2243d6a..f8dc0b9 100644 --- a/lib/controller/user_info_controller.g.dart +++ b/lib/controller/user_info_controller.g.dart @@ -19,7 +19,8 @@ UserInfoModel _$UserInfoModelFromJson(Map 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 _$UserInfoModelToJson(UserInfoModel instance) => { @@ -33,4 +34,5 @@ Map _$UserInfoModelToJson(UserInfoModel instance) => 'appVersion': instance.appVersion, 'img_bucket': instance.img_bucket, 'login': instance.login, + 'register_agree': instance.register_agree, }; diff --git a/lib/model/CustomThemeColor.dart b/lib/model/CustomThemeColor.dart index 741f520..e77a380 100644 --- a/lib/model/CustomThemeColor.dart +++ b/lib/model/CustomThemeColor.dart @@ -3,7 +3,7 @@ import 'package:json_annotation/json_annotation.dart'; @JsonSerializable() class CustomThemeColor { - final String color1;// + final String color1; // final String color2; final String color3; final String color4; @@ -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"; } diff --git a/lib/pages/device_bind/device_type.dart b/lib/pages/device_bind/device_type.dart index d2b1bb4..48a52e1 100644 --- a/lib/pages/device_bind/device_type.dart +++ b/lib/pages/device_bind/device_type.dart @@ -124,16 +124,20 @@ class _EPageState extends State { ), 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 { 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 { 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 { 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 { actions: [], centerTitle: false, ), + body: SafeArea( top: true, child: Padding( @@ -295,16 +341,19 @@ class _EPageState extends State { 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 { } 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, diff --git a/lib/pages/login/login.dart b/lib/pages/login/login.dart index badec00..c27e3d1 100644 --- a/lib/pages/login/login.dart +++ b/lib/pages/login/login.dart @@ -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,258 +24,527 @@ class _EPageState extends State { @override Widget build(BuildContext context) { return LayoutBuilder( - builder: (context, boxConstraints) => GestureDetector( - onTap: () => FocusScope.of(context).unfocus(), - child: Scaffold( - body: SafeArea( - top: true, - child: Column( - mainAxisSize: MainAxisSize.max, - children: [ - Expanded( - child: SingleChildScrollView( - child: Column( - mainAxisSize: MainAxisSize.max, - children: [ - Container( - width: double.infinity, - decoration: BoxDecoration(), - child: Align( - alignment: AlignmentDirectional(-1, 0), + 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( - 35.rpx, 66.rpx, 0, 0), - child: Icon( - Icons.arrow_back, - color: FlutterFlowTheme.of(context).primaryText, - size: 24.rpx, + 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, // 这里设置了颜色 ), ), ), - ), - Align( - alignment: AlignmentDirectional(-1, 0), - child: Padding( - padding: EdgeInsetsDirectional.fromSTEB( - 0, 141.rpx, 0, 0), - child: Container( - width: double.infinity, - decoration: BoxDecoration(), - child: Align( - alignment: AlignmentDirectional(0, 0), - child: Text( - '欢迎使用太和e护', - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: 'Inter', - fontSize: 48.rpx, - letterSpacing: 0.0, + ], + ), + Expanded( + child: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.max, + children: [ + // 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( + padding: EdgeInsetsDirectional.fromSTEB( + 0, 141.rpx, 0, 0), + child: Container( + width: double.infinity, + decoration: BoxDecoration(), + child: Align( + alignment: AlignmentDirectional(0, 0), + child: Text( + '登录页.欢迎使用太和e护'.tr, + style: FlutterFlowTheme.of(context) + .bodyMedium + .override( + fontFamily: 'Inter', + fontSize: 48.rpx, + letterSpacing: 0.0, + //todo 颜色 + color: stringToColor("#FFFFFF"), + ), ), + ), + ), ), ), - ), - ), - ), - Align( - alignment: AlignmentDirectional(-1, 0), - child: Padding( - padding: - EdgeInsetsDirectional.fromSTEB(0, 15.rpx, 0, 0), - child: Container( - width: double.infinity, - decoration: BoxDecoration(), - child: Align( - alignment: AlignmentDirectional(0, 0), - child: Text( - '科技睡眠 洞悉万千', - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: 'Inter', - fontSize: 30.rpx, - letterSpacing: 0.0, + Align( + alignment: AlignmentDirectional(-1, 0), + child: Padding( + padding: EdgeInsetsDirectional.fromSTEB( + 0, 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"), + ), ), + ), + ), ), ), - ), - ), - ), - Align( - alignment: AlignmentDirectional(-1, 0), - child: Padding( - padding: - EdgeInsetsDirectional.fromSTEB(0, 95.rpx, 0, 0), - child: Container( - width: double.infinity, - decoration: BoxDecoration(), - child: Align( - alignment: AlignmentDirectional(0, 0), - child: Text( - '139****0733', - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: 'Inter', - fontSize: 48.rpx, - letterSpacing: 0.0, + Align( + alignment: AlignmentDirectional(-1, 0), + child: Padding( + padding: EdgeInsetsDirectional.fromSTEB( + 0, 95.rpx, 0, 0), + child: Container( + width: double.infinity, + decoration: BoxDecoration(), + child: Align( + alignment: AlignmentDirectional(0, 0), + child: Text( + '139****0733', + style: FlutterFlowTheme.of(context) + .bodyMedium + .override( + fontFamily: 'Inter', + fontSize: 48.rpx, + letterSpacing: 0.0, + //todo 颜色 + color: stringToColor("#FFFFFF"), + ), ), + ), + ), ), ), - ), + Padding( + padding: EdgeInsetsDirectional.fromSTEB( + 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, + children: [ + // 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: 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: 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: 18.rpx)), + ), + ), + ), + ], ), ), - 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), + ), + Container( + width: double.infinity, + height: MediaQuery.sizeOf(context).height * 0.136, + constraints: BoxConstraints( + minHeight: 220.rpx, + ), + decoration: BoxDecoration(), + child: Column( + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: EdgeInsetsDirectional.fromSTEB( + 0, 0, 0, 36.rpx), child: Text( - '本机号码一键登录/注册', + '登录页.其他登录方式'.tr, style: FlutterFlowTheme.of(context) .bodyMedium .override( fontFamily: 'Inter', fontSize: 26.rpx, letterSpacing: 0.0, + //todo 颜色 + color: stringToColor("#FFFFFF"), ), ), ), - ), - ), - Align( - alignment: AlignmentDirectional(-1, 0), - child: Padding( - padding: - EdgeInsetsDirectional.fromSTEB(0, 32.rpx, 0, 0), - child: Container( - width: double.infinity, - decoration: BoxDecoration(), - child: Align( - alignment: AlignmentDirectional(0, 0), - child: Text( - '其他手机号码', - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: 'Inter', - fontSize: 26.rpx, - letterSpacing: 0.0, - ), - ), - ), - ), - ), - ), - Padding( - padding: EdgeInsetsDirectional.fromSTEB( - 110.rpx, 136.rpx, 110.rpx, 0), - child: Container( - width: double.infinity, - decoration: BoxDecoration(), - child: Row( + Row( mainAxisSize: MainAxisSize.max, - crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, children: [ - Icon( - Icons.arrow_back, - color: - FlutterFlowTheme.of(context).primaryText, - size: 24.rpx, - ), - Expanded( - // 👈 让文本自动换行 - child: Text( - '登录时将自动注册,且代表您同意《用户协议》和 《隐私政策》以及《用户使用条款》', - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: 'Inter', - letterSpacing: 0.0, - fontSize: 24.rpx, // 可选:字体稍小点更适配 - ), + Container( + width: 91.rpx, + height: 91.rpx, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + shape: BoxShape.circle, + ), + child: Image.asset( + "assets/img/wechat.png", + width: 30.rpx, + height: 30.rpx, ), ), - ].divide(SizedBox(width: 26.rpx)), - ), - ), - ), - ], - ), - ), - ), - Container( - width: double.infinity, - height: MediaQuery.sizeOf(context).height * 0.136, - constraints: BoxConstraints( - minHeight: 220.rpx, - ), - decoration: BoxDecoration(), - child: Column( - mainAxisSize: MainAxisSize.max, - children: [ - Padding( - padding: - EdgeInsetsDirectional.fromSTEB(0, 0, 0, 36.rpx), - child: Text( - '其他登录方式', - style: - FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: 'Inter', - fontSize: 26.rpx, - letterSpacing: 0.0, + Container( + width: 91.rpx, + height: 91.rpx, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + shape: BoxShape.circle, ), + 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)), + ), + ], ), ), - Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Container( - width: 91.rpx, - height: 91.rpx, - clipBehavior: Clip.antiAlias, - decoration: BoxDecoration( - shape: BoxShape.circle, - ), - child: Image.network( - 'https://picsum.photos/seed/301/600', - fit: BoxFit.cover, - ), - ), - Container( - width: 91.rpx, - height: 91.rpx, - clipBehavior: Clip.antiAlias, - decoration: BoxDecoration( - shape: BoxShape.circle, - ), - child: Image.network( - 'https://picsum.photos/seed/301/600', - fit: BoxFit.cover, - ), - ), - ].divide(SizedBox(width: 35.rpx)), - ), ], ), ), - ], + ), ), - ), - ), - ), + )), ); } } diff --git a/lib/pages/main_bottom/home_page.dart b/lib/pages/main_bottom/home_page.dart index 14f5939..577d3d1 100644 --- a/lib/pages/main_bottom/home_page.dart +++ b/lib/pages/main_bottom/home_page.dart @@ -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,145 +27,98 @@ class _HomePageState extends State { return LayoutBuilder( builder: (context, bodySize) => GestureDetector( onTap: () => FocusScope.of(context).unfocus(), - child: Scaffold( - // appBar: AppBar( - // backgroundColor: AppColors.bg_color, - // automaticallyImplyLeading: false, - // title: Container( - // width: double.infinity, - // height: 70.rpx, - // child: Obx( - // () => InkWell( - // onTap: () { - // Get.toNamed("/editUserInfoPage"); - // }, - // child: Row( - // mainAxisSize: MainAxisSize.max, - // mainAxisAlignment: MainAxisAlignment.spaceBetween, - // children: [ - // Row( - // mainAxisSize: MainAxisSize.max, - // children: [ - // Container( - // width: 56.rpx, - // height: 56.rpx, - // clipBehavior: Clip.antiAlias, - // decoration: BoxDecoration( - // shape: BoxShape.circle, - // ), - // ), - // Container( - // width: 20.rpx, - // height: 0, - // decoration: BoxDecoration( - // color: Colors.white, - // shape: BoxShape.rectangle, - // ), - // ), - // Text( - // userInfoController.model.user!.nickName ?? '匿名', - // style: FlutterFlowTheme.of(context) - // .bodyMedium - // .override( - // fontFamily: 'Readex Pro', - // color: Colors.white, - // letterSpacing: 0, - // fontSize: 30.rpx), - // ), - // ], - // ), - // ], - // ), - // ), - // ), - // ), - // actions: [], - // centerTitle: false, - // ), - body: SafeArea( - top: true, - // child: Text("首页"), - child: Container( - height: bodySize.maxHeight, - decoration: BoxDecoration( - image: DecorationImage( - image: AssetImage('assets/img/bgImage.png'), // 本地图片 - fit: BoxFit.fill, // 填满整个 Container - ), - ), - child: Padding( - padding: EdgeInsetsDirectional.fromSTEB( - AppConstants().main_left_right_padding, - 47.rpx, - AppConstants().main_left_right_padding, - 0), - child: SingleChildScrollView( - child: Column( - mainAxisSize: MainAxisSize.max, - children: [ - Padding( - padding: EdgeInsetsDirectional.fromSTEB( - AppConstants().content_left_right_padding, - 0, - AppConstants().content_left_right_padding, - 0), - child: Container( - width: double.infinity, - child: Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - CustomCard( - borderRadius: 20.rpx, - onTap: () async { - Get.toNamed("/loginPage"); - }, - title: '首页.登录' - .tr, // 虽然 title 传入了,但当前组件里没用它(可忽略或用于调试) - colors: [ - stringToColor("#45D989"), - stringToColor("#00C1AA"), - ], - child: Container( - width: 100.rpx, - height: 60.rpx, - alignment: Alignment.center, - padding: EdgeInsetsDirectional.fromSTEB( - 16.rpx, 0, 16.rpx, 0), - child: Text( - '首页.登录'.tr, - style: FlutterFlowTheme.of(context) - .titleSmall - .override( - fontFamily: 'Inter Tight', - color: Colors.white, - letterSpacing: 0.0, - ), - ), - ), - ), - - Icon( - Icons.add_circle_outline_outlined, - color: FlutterFlowTheme.of(context).primaryText, - size: 38.rpx, - ), - // Lottie.asset( - // 'assets/img/loading.json', - // width: 200, - // height: 200, - // fit: BoxFit.contain, - // ) - ], - ), - ), - ), - Padding( - padding: EdgeInsetsDirectional.fromSTEB( - 19.rpx, 13.rpx, 0, 13.rpx), - child: Container( + 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: Text("首页"), + child: Container( + height: bodySize.maxHeight, + child: Padding( + padding: EdgeInsetsDirectional.fromSTEB( + AppConstants().main_left_right_padding, + 47.rpx, + AppConstants().main_left_right_padding, + 0), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: EdgeInsetsDirectional.fromSTEB( + AppConstants().content_left_right_padding, + 0, + AppConstants().content_left_right_padding, + 0), + child: Container( width: double.infinity, child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + CustomCard( + borderRadius: 20.rpx, + onTap: () async { + Get.toNamed("/loginPage"); + }, + title: '首页.登录' + .tr, // 虽然 title 传入了,但当前组件里没用它(可忽略或用于调试) + colors: [ + themeController.currentColor.sc1, + themeController.currentColor.sc2, + ], + child: Container( + width: 100.rpx, + height: 60.rpx, + alignment: Alignment.center, + padding: EdgeInsetsDirectional.fromSTEB( + 16.rpx, 0, 16.rpx, 0), + child: Text( + '首页.登录'.tr, + style: FlutterFlowTheme.of(context) + .titleSmall + .override( + fontFamily: 'Inter Tight', + color: themeController + .currentColor.sc19, + letterSpacing: 0.0, + ), + ), + ), + ), + SvgPicture.asset( + 'assets/img/icon/add.svg', + width: 39.rpx, + height: 39.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 + //todo 颜色 + color: themeController.currentColor.sc16, + ), + ], + ), + ), + ), + Padding( + padding: EdgeInsetsDirectional.fromSTEB( + 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( + child: Row( + mainAxisSize: MainAxisSize.min, children: [ Text( '首页.已关联体征监测设备'.tr, @@ -174,10 +129,12 @@ class _HomePageState extends State { fontSize: AppConstants().title_text_fontSize, letterSpacing: 0.0, + //todo 颜色 + color: themeController.currentColor.sc3, ), ), Text( - ' 0', + '0', style: FlutterFlowTheme.of(context) .bodyMedium .override( @@ -185,188 +142,124 @@ class _HomePageState extends State { fontSize: AppConstants().title_text_fontSize, letterSpacing: 0.0, + color: themeController.currentColor.sc8, ), ), - ], + ].divide(SizedBox( + width: 6.rpx, + )), )), - ), - Container( - width: MediaQuery.sizeOf(context).width, - height: MediaQuery.sizeOf(context).height * 0.277, - constraints: BoxConstraints( - minWidth: 690.rpx, - minHeight: 450.rpx, + ), ), - decoration: BoxDecoration( - color: stringToColor("#242835"), - borderRadius: BorderRadius.circular( - AppConstants().normal_container_radius), // 圆角半径 - ), - child: Column( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - Container( - width: MediaQuery.sizeOf(context).width * 0.66, - height: MediaQuery.sizeOf(context).height * 0.055, - constraints: BoxConstraints( - minWidth: 500.rpx, - minHeight: 90.rpx, - ), - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [Colors.red, Colors.orange], // 渐变颜色数组 - begin: Alignment.topLeft, - end: Alignment.bottomRight, - ), - borderRadius: BorderRadius.circular( - AppConstants() - .button_container_radius), // 圆角半径 - ), - child: Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Icon( - Icons.arrow_back, - color: FlutterFlowTheme.of(context) - .primaryText, - size: 28.rpx, - ), - Text( - '首页.扫一扫绑定'.tr, - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: 'Inter', - fontSize: AppConstants() - .normal_text_fontSize, - letterSpacing: 0.0, - ), - ), - ].divide(SizedBox( - width: 17.rpx, - )), - ), - ), - CustomCard( - borderRadius: AppConstants() - .button_container_radius, // 圆角半径 - onTap: () { - print('Button pressed ...'); - Get.toNamed("/deviceType"); - }, - colors: [ - stringToColor("45D989"), - stringToColor("00C1AA") - ], // 渐变色是同一个色,也可以根据需要调整 - title: '首页.蓝牙绑定'.tr, // 可选,虽然这个 title 没用,但可以作为调试用 - child: Container( - width: MediaQuery.sizeOf(context).width * 0.66, - height: - MediaQuery.sizeOf(context).height * 0.055, - constraints: BoxConstraints( - minWidth: 500.rpx, - minHeight: 90.rpx, - ), - child: Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Icon( - Icons.arrow_back, - color: FlutterFlowTheme.of(context) - .primaryText, - size: 28.rpx, - ), - Text( - '首页.蓝牙绑定'.tr, - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: 'Inter', - fontSize: AppConstants() - .normal_text_fontSize, - letterSpacing: 0.0, - ), - ), - ].divide(SizedBox( - width: 17.rpx, - )), - ), - ), - ) - ], - ), - ), - Padding( - padding: - EdgeInsetsDirectional.fromSTEB(0, 26.rpx, 0, 0), - child: Container( + Container( width: MediaQuery.sizeOf(context).width, + height: MediaQuery.sizeOf(context).height * 0.277, + constraints: BoxConstraints( + minWidth: 690.rpx, + minHeight: 450.rpx, + ), decoration: BoxDecoration( - color: Color(0xFFFBF5D5), + color: themeController.currentColor.sc5, borderRadius: BorderRadius.circular( AppConstants().normal_container_radius), // 圆角半径 ), - child: Padding( - padding: EdgeInsetsDirectional.fromSTEB( - 25.rpx, 25.rpx, 25.rpx, 25.rpx), - child: Row( - mainAxisSize: MainAxisSize.max, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Icon( - Icons.volume_mute, - color: - FlutterFlowTheme.of(context).primaryText, - size: 30.rpx, - ), - Expanded( - child: Column( + child: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + CustomCard( + borderRadius: AppConstants() + .button_container_radius, // 圆角半径 + onTap: () { + Get.toNamed("/personPage"); + }, + colors: [ + // 渐变色 + 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, - crossAxisAlignment: - CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, children: [ - Text( - '首页.提示标题'.tr, - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: 'Inter', - fontSize: AppConstants() - .normal_text_fontSize, - letterSpacing: 0.0, - fontWeight: FontWeight.w500, - color: Colors.orange), + SvgPicture.asset( + 'assets/img/icon/scan.svg', + width: 25.rpx, + height: 25.rpx, // SVG 的固定大小 + color: themeController + .currentColor.sc16, // 颜色设置 ), Text( - '首页.提示内容1'.tr, + '首页.扫一扫绑定'.tr, style: FlutterFlowTheme.of(context) .bodyMedium .override( + color: themeController + .currentColor.sc19, fontFamily: 'Inter', fontSize: AppConstants() .normal_text_fontSize, letterSpacing: 0.0, ), ), - Text( - '首页.提示内容2'.tr, - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: 'Inter', - fontSize: AppConstants() - .normal_text_fontSize, - letterSpacing: 0.0, - ), + ].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( - '首页.提示内容3'.tr, + '首页.蓝牙绑定'.tr, style: FlutterFlowTheme.of(context) .bodyMedium .override( + //todo 颜色 + color: themeController + .currentColor.sc19, fontFamily: 'Inter', fontSize: AppConstants() .normal_text_fontSize, @@ -374,16 +267,115 @@ class _HomePageState extends State { ), ), ].divide(SizedBox( - height: AppConstants() - .text_padding_up_dowm_p)), + width: 17.rpx, + )), ), - ) - ].divide(SizedBox(width: 20.rpx)), + ), + ) + ].divide(SizedBox( + height: 60.rpx, + )), + ), + ), + Padding( + padding: + EdgeInsetsDirectional.fromSTEB(0, 26.rpx, 0, 0), + child: Container( + width: MediaQuery.sizeOf(context).width, + decoration: BoxDecoration( + color: themeController.currentColor.sc6, + borderRadius: BorderRadius.circular(AppConstants() + .normal_container_radius), // 圆角半径 + ), + child: Padding( + padding: EdgeInsetsDirectional.fromSTEB( + 25.rpx, 25.rpx, 25.rpx, 25.rpx), + child: Row( + mainAxisSize: MainAxisSize.max, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + 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( + mainAxisSize: MainAxisSize.max, + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Text( + '首页.提示标题'.tr, + style: FlutterFlowTheme.of(context) + .bodyMedium + .override( + fontFamily: 'Inter', + fontSize: AppConstants() + .normal_text_fontSize, + letterSpacing: 0.0, + fontWeight: FontWeight.w900, + //todo 配置颜色 + color: + stringToColor("#916D46")), + ), + Text( + '首页.提示内容1'.tr, + style: FlutterFlowTheme.of(context) + .bodyMedium + .override( + fontFamily: 'Inter', + fontSize: AppConstants() + .normal_text_fontSize, + letterSpacing: 0.0, + //todo 配置颜色 + color: + stringToColor("#916D46")), + ), + Text( + '首页.提示内容2'.tr, + style: FlutterFlowTheme.of(context) + .bodyMedium + .override( + fontFamily: 'Inter', + fontSize: AppConstants() + .normal_text_fontSize, + letterSpacing: 0.0, + //todo 配置颜色 + color: + stringToColor("#916D46")), + ), + Text( + '首页.提示内容3'.tr, + style: FlutterFlowTheme.of(context) + .bodyMedium + .override( + fontFamily: 'Inter', + fontSize: AppConstants() + .normal_text_fontSize, + letterSpacing: 0.0, + //todo 配置颜色 + color: + stringToColor("#916D46")), + ), + ].divide(SizedBox( + height: AppConstants() + .text_padding_up_dowm_p)), + ), + ) + ].divide(SizedBox(width: 20.rpx)), + ), ), ), ), - ), - ], + ], + ), ), ), ), diff --git a/lib/pages/main_bottom/main_page_bottom_change.dart b/lib/pages/main_bottom/main_page_bottom_change.dart index 281136d..e1dc519 100644 --- a/lib/pages/main_bottom/main_page_bottom_change.dart +++ b/lib/pages/main_bottom/main_page_bottom_change.dart @@ -61,7 +61,7 @@ class MainPageBottomChange extends GetView { List arr = [ HomePage(), - SleepReportPage(), + // SleepReportPage(), EPage(), MessagePage(), MinePage(), @@ -91,43 +91,10 @@ class MainPageBottomChange extends GetView { ); } 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 { 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 { 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", diff --git a/lib/pages/main_bottom/mine_page.dart b/lib/pages/main_bottom/mine_page.dart index dc5c505..1e6f498 100644 --- a/lib/pages/main_bottom/mine_page.dart +++ b/lib/pages/main_bottom/mine_page.dart @@ -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 { @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 { '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 { ), 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 { letterSpacing: 0.0, ), ), - SvgPicture.asset( - 'assets/img/icon/arrow_right.svg', - width: 8.rpx, - height: 14.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 + Padding( + padding: EdgeInsetsDirectional.fromSTEB( + 0, 6.rpx, 0, 0.rpx), + child: SvgPicture.asset( + 'assets/img/icon/arrow_right.svg', + width: 14.rpx, + height: 14.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 + color: Colors.white, + ), ), ].divide(SizedBox(width: 16.rpx)), ), @@ -170,195 +224,291 @@ class _MinePageState extends State { ), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( - 40.rpx, 0, 40.rpx, 0), + 45.rpx, 0, 45.rpx, 0), child: Column( mainAxisSize: MainAxisSize.max, children: [ - Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - mainAxisSize: MainAxisSize.max, - children: [ - SvgPicture.asset( - 'assets/img/icon/my_device.svg', - width: 25.rpx, - height: 25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 - ), - Text( - '我的.我的设备'.tr, - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: 'Inter', - color: Color(0xFFE0E2E4), - fontSize: AppConstants() - .title_text_fontSize, - letterSpacing: 0.0, + 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, + children: [ + Row( + mainAxisSize: MainAxisSize.max, + children: [ + SvgPicture.asset( + 'assets/img/icon/my_device.svg', + width: 25.rpx, + height: + 25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 + color: stringToColor("#00C1AA"), ), - ), - ].divide(SizedBox(width: 22.rpx)), + Text( + '我的.我的设备'.tr, + style: FlutterFlowTheme.of(context) + .bodyMedium + .override( + fontFamily: 'Inter', + color: Color(0xFFE0E2E4), + fontSize: AppConstants() + .title_text_fontSize, + letterSpacing: 0.0, + ), + ), + ].divide(SizedBox(width: 22.rpx)), + ), + SvgPicture.asset( + 'assets/img/icon/arrow_right.svg', + width: 8.rpx, + height: 15.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 + color: Colors.white, + ), + ], + ), ), - SvgPicture.asset( - 'assets/img/icon/arrow_right.svg', - width: 8.rpx, - height: 15.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 - ), - ], + ), ), - Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - mainAxisSize: MainAxisSize.max, - children: [ - SvgPicture.asset( - 'assets/img/icon/device_repair.svg', - width: 25.rpx, - height: 25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 - ), - Text( - '我的.设备报修'.tr, - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: 'Inter', - color: Color(0xFFE0E2E4), - fontSize: AppConstants() - .title_text_fontSize, - letterSpacing: 0.0, + 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, + children: [ + Row( + mainAxisSize: MainAxisSize.max, + children: [ + SvgPicture.asset( + 'assets/img/icon/device_repair.svg', + width: 25.rpx, + height: + 25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 + color: stringToColor("#00C1AA"), ), - ), - ].divide(SizedBox(width: 22.rpx)), + Text( + '我的.设备报修'.tr, + style: FlutterFlowTheme.of(context) + .bodyMedium + .override( + fontFamily: 'Inter', + color: Color(0xFFE0E2E4), + fontSize: AppConstants() + .title_text_fontSize, + letterSpacing: 0.0, + ), + ), + ].divide(SizedBox(width: 22.rpx)), + ), + SvgPicture.asset( + 'assets/img/icon/arrow_right.svg', + width: 8.rpx, + height: 15.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 + color: Colors.white, + ), + ], + ), ), - SvgPicture.asset( - 'assets/img/icon/arrow_right.svg', - width: 8.rpx, - height: 15.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 - ), - ], + ), ), - Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - mainAxisSize: MainAxisSize.max, - children: [ - SvgPicture.asset( - 'assets/img/icon/op_ex.svg', - width: 25.rpx, - height: 25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 - ), - Text( - '我的.操作说明'.tr, - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: 'Inter', - color: Color(0xFFE0E2E4), - fontSize: AppConstants() - .title_text_fontSize, - letterSpacing: 0.0, + 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, + children: [ + Row( + mainAxisSize: MainAxisSize.max, + children: [ + SvgPicture.asset( + 'assets/img/icon/op_ex.svg', + width: 25.rpx, + height: + 25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 + color: stringToColor("#00C1AA"), ), - ), - ].divide(SizedBox(width: 22.rpx)), + Text( + '我的.操作说明'.tr, + style: FlutterFlowTheme.of(context) + .bodyMedium + .override( + fontFamily: 'Inter', + color: Color(0xFFE0E2E4), + fontSize: AppConstants() + .title_text_fontSize, + letterSpacing: 0.0, + ), + ), + ].divide(SizedBox(width: 22.rpx)), + ), + SvgPicture.asset( + 'assets/img/icon/arrow_right.svg', + width: 8.rpx, + height: 14.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 + color: Colors.white, + ), + ], + ), ), - SvgPicture.asset( - 'assets/img/icon/arrow_right.svg', - width: 8.rpx, - height: 14.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 - ), - ], + ), ), - Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - mainAxisSize: MainAxisSize.max, - children: [ - SvgPicture.asset( - 'assets/img/icon/like.svg', - width: 25.rpx, - height: 25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 - ), - Text( - '关注我们'.tr, - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: 'Inter', - color: Color(0xFFE0E2E4), - fontSize: AppConstants() - .title_text_fontSize, - letterSpacing: 0.0, + 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, + children: [ + Row( + mainAxisSize: MainAxisSize.max, + children: [ + SvgPicture.asset( + 'assets/img/icon/like.svg', + width: 25.rpx, + height: + 25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 + color: stringToColor("#00C1AA"), ), - ), - ].divide(SizedBox(width: 22.rpx)), + Text( + '关注我们'.tr, + style: FlutterFlowTheme.of(context) + .bodyMedium + .override( + fontFamily: 'Inter', + color: Color(0xFFE0E2E4), + fontSize: AppConstants() + .title_text_fontSize, + letterSpacing: 0.0, + ), + ), + ].divide(SizedBox(width: 22.rpx)), + ), + SvgPicture.asset( + 'assets/img/icon/arrow_right.svg', + width: 8.rpx, + height: 15.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 + color: Colors.white, + ), + ], + ), ), - SvgPicture.asset( - 'assets/img/icon/arrow_right.svg', - width: 8.rpx, - height: 15.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 - ), - ], + ), ), - Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - mainAxisSize: MainAxisSize.max, - children: [ - SvgPicture.asset( - 'assets/img/icon/version.svg', - width: 25.rpx, - height: 25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 - ), - Text( - '我的.当前版本'.tr, - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: 'Inter', - color: Color(0xFFE0E2E4), - fontSize: AppConstants() - .title_text_fontSize, - letterSpacing: 0.0, + 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, + children: [ + Row( + mainAxisSize: MainAxisSize.max, + children: [ + SvgPicture.asset( + 'assets/img/icon/version.svg', + width: 25.rpx, + height: + 25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 + color: stringToColor("#00C1AA"), ), - ), - ].divide(SizedBox(width: 22.rpx)), - ), - Row( - mainAxisSize: MainAxisSize.max, - children: [ - Text( - '3.61.0', - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: 'Inter', - color: Color(0xFFD9E3EB), - fontSize: 26.rpx, - letterSpacing: 0.0, + Text( + '我的.当前版本'.tr, + style: FlutterFlowTheme.of(context) + .bodyMedium + .override( + fontFamily: 'Inter', + color: Color(0xFFE0E2E4), + fontSize: AppConstants() + .title_text_fontSize, + letterSpacing: 0.0, + ), ), - ), - SvgPicture.asset( - 'assets/img/icon/arrow_right.svg', - width: 8.rpx, - height: 15.rpx, // 如果 SVG 中没有固定颜色,可以这样设置 - ), - ].divide(SizedBox(width: 28.rpx)), + ].divide(SizedBox(width: 22.rpx)), + ), + Row( + mainAxisSize: MainAxisSize.max, + children: [ + Text( + '3.61.0', + style: FlutterFlowTheme.of(context) + .bodyMedium + .override( + fontFamily: 'Inter', + color: Color(0xFFD9E3EB), + fontSize: 26.rpx, + letterSpacing: 0.0, + ), + ), + SvgPicture.asset( + 'assets/img/icon/arrow_right.svg', + width: 8.rpx, + 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)), ), ), ), diff --git a/lib/routers/routers.dart b/lib/routers/routers.dart index b317654..55b7209 100644 --- a/lib/routers/routers.dart +++ b/lib/routers/routers.dart @@ -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 固定写法 这个方法也相当于一个中间件,这里可以做权限判断 diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 23366f7..e00002e 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -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")) diff --git a/pubspec.lock b/pubspec.lock index c697319..c21cf72 100644 --- a/pubspec.lock +++ b/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: diff --git a/pubspec.yaml b/pubspec.yaml index 75a64a0..0d85cb2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -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: diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 1008981..7c21b19 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -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( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 9e2ce18..0d113fb 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -5,6 +5,7 @@ list(APPEND FLUTTER_PLUGIN_LIST app_links flutter_localization + permission_handler_windows rive_common url_launcher_windows window_to_front