更新样式
This commit is contained in:
15
assets/img/icon/question.svg
Normal file
15
assets/img/icon/question.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<svg viewBox="0 0 15.9231 15.9224" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="15.9230957" height="15.9223633" fill="none" customFrame="#000000">
|
||||
<g id="组 4776">
|
||||
<g id="组 4775">
|
||||
<g style="mix-blend-mode:normal">
|
||||
<path id="路径 1062" d="M7.10803 12.8013C7.10803 13.2725 7.48999 13.6543 7.96106 13.6543C8.43201 13.6543 8.81409 13.2725 8.81409 12.8013C8.81409 12.3301 8.43201 11.9482 7.96106 11.9482C7.48999 11.9482 7.10803 12.3301 7.10803 12.8013Z" fill="rgb(211,211,211)" fill-rule="nonzero" />
|
||||
</g>
|
||||
<g style="mix-blend-mode:normal">
|
||||
<path id="路径 1063" d="M7.96106 15.9224C3.57104 15.9224 0 12.3511 0 7.96143C0 3.57129 3.57104 0 7.96106 0C12.3511 0 15.9231 3.57129 15.9231 7.96143C15.9231 12.3511 12.3511 15.9224 7.96106 15.9224ZM7.96106 1.14209C4.20105 1.14209 1.14209 4.20117 1.14209 7.96143C1.14209 11.7202 4.20105 14.7803 7.96106 14.7803C11.7211 14.7803 14.78 11.7202 14.78 7.96143C14.78 4.20117 11.7211 1.14209 7.96106 1.14209Z" fill="rgb(211,211,211)" fill-rule="nonzero" />
|
||||
</g>
|
||||
<g style="mix-blend-mode:normal">
|
||||
<path id="路径 1064" d="M7.96106 10.8345C7.64709 10.8345 7.39307 10.5801 7.39307 10.2661L7.39307 9.3042C7.39307 8.37402 8.104 7.66309 8.73108 7.03613C9.19104 6.5752 9.66699 6.1001 9.66699 5.72021C9.66699 4.77246 8.90198 4.00146 7.96106 4.00146C7.005 4.00146 6.255 4.73926 6.255 5.68213C6.255 5.99609 6.00098 6.25 5.68701 6.25C5.37305 6.25 5.11804 5.99609 5.11804 5.68213C5.11804 4.12842 6.39404 2.86426 7.96106 2.86426C9.52905 2.86426 10.8051 4.14502 10.8051 5.72021C10.8051 6.57227 10.1591 7.21729 9.53503 7.84033C9.04102 8.33447 8.53003 8.84521 8.53003 9.3042L8.53003 10.2651C8.53003 10.5791 8.27502 10.8345 7.96106 10.8345Z" fill="rgb(211,211,211)" fill-rule="nonzero" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
@@ -49,6 +49,8 @@ class WeatherModelController extends GetControllerEx<WeatherModel> {
|
||||
@override
|
||||
Future<void> onInit() async {
|
||||
super.onInit();
|
||||
|
||||
try {
|
||||
await _getCurrentLocation();
|
||||
_weatherTimer = Timer.periodic(Duration(seconds: 5), (timer) {
|
||||
_getCurrentWeather(); // 每 5 秒更新一次天气
|
||||
@@ -57,6 +59,9 @@ class WeatherModelController extends GetControllerEx<WeatherModel> {
|
||||
_locationTimer = Timer.periodic(Duration(minutes: 10), (timer) {
|
||||
_getCurrentLocation(); // 每 10 分钟更新一次位置
|
||||
});
|
||||
} catch (e) {
|
||||
ef.log("[天气和定位请求失败]");
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -122,7 +127,13 @@ class WeatherModelController extends GetControllerEx<WeatherModel> {
|
||||
return Future.error('位置权限被永久拒绝');
|
||||
}
|
||||
|
||||
return await Geolocator.getCurrentPosition();
|
||||
return await Geolocator.getCurrentPosition(
|
||||
locationSettings: const LocationSettings(
|
||||
accuracy: LocationAccuracy.low, // 使用高精度定位,但不依赖 Google Play
|
||||
distanceFilter: 1000, // 设置最小距离过滤
|
||||
timeLimit: Duration(seconds: 10), // 设置获取位置的最大等待时间
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
// 获取天气信息
|
||||
@@ -186,3 +197,166 @@ class WeatherModelController extends GetControllerEx<WeatherModel> {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// import 'dart:async';
|
||||
// import 'package:EasyDartModule/EasyDartModule.dart';
|
||||
// import 'package:ef/ef.dart';
|
||||
// import 'package:amap_flutter_location/amap_flutter_location.dart'; // 导入 amap_flutter_location 插件
|
||||
// import 'package:geocoding/geocoding.dart';
|
||||
// import 'package:json_annotation/json_annotation.dart';
|
||||
// import 'package:vbvs_app/common/util/CommonVariables.dart';
|
||||
// import 'package:vbvs_app/controller/setting/language/language_controller.dart';
|
||||
// import 'package:weather/weather.dart';
|
||||
|
||||
// part 'weather_controller.g.dart';
|
||||
|
||||
// @JsonSerializable()
|
||||
// class WeatherModel {
|
||||
// double? longitude; // 经度
|
||||
// double? latitude; // 纬度
|
||||
// String? weather_info = ''; // 天气
|
||||
// int? current_temperature; // 温度
|
||||
// int? min_temperature; // 最低温度
|
||||
// int? max_temperature; // 最高温度
|
||||
// String? wind_direction; // 风向
|
||||
// int? wind_speed; // 风速等级
|
||||
// String? cityName; // 城市名
|
||||
// String? weatherIcon; // 天气图标
|
||||
// String? weatherIconurl; // 天气图标url
|
||||
|
||||
// WeatherModel();
|
||||
|
||||
// static WeatherModel fromJson(Map<String, dynamic> json) =>
|
||||
// _$WeatherModelFromJson(json);
|
||||
|
||||
// Map<String, dynamic> toJson() => _$WeatherModelToJson(this);
|
||||
// }
|
||||
|
||||
// class WeatherModelController extends GetControllerEx<WeatherModel> {
|
||||
// LanguageController languageController = Get.find();
|
||||
// WeatherModelController() {
|
||||
// attr = GetModel(WeatherModel()).obs;
|
||||
// weatherFactory = WeatherFactory(CommonVariables.weather_apiKey,
|
||||
// language: Language.CHINESE_SIMPLIFIED);
|
||||
// }
|
||||
|
||||
// Timer? _weatherTimer;
|
||||
// Timer? _locationTimer;
|
||||
|
||||
// late WeatherFactory weatherFactory;
|
||||
// late AMapFlutterLocation location; // 声明 AMapFlutterLocation 实例
|
||||
|
||||
// @override
|
||||
// Future<void> onInit() async {
|
||||
// super.onInit();
|
||||
|
||||
// location = AMapFlutterLocation(); // 初始化 AMapFlutterLocation
|
||||
|
||||
// try {
|
||||
// await _getCurrentLocation();
|
||||
// _weatherTimer = Timer.periodic(Duration(seconds: 5), (timer) {
|
||||
// _getCurrentWeather(); // 每 5 秒更新一次天气
|
||||
// });
|
||||
|
||||
// _locationTimer = Timer.periodic(Duration(minutes: 10), (timer) {
|
||||
// _getCurrentLocation(); // 每 10 分钟更新一次位置
|
||||
// });
|
||||
// } catch (e) {
|
||||
// ef.log("[天气和定位请求失败]");
|
||||
// }
|
||||
// }
|
||||
|
||||
// @override
|
||||
// void onClose() {
|
||||
// _weatherTimer?.cancel(); // 取消天气更新定时器
|
||||
// _locationTimer?.cancel(); // 取消位置更新定时器
|
||||
// location.stopLocation(); // 停止高德定位
|
||||
// super.onClose();
|
||||
// }
|
||||
|
||||
// // 获取当前位置并存储到 model
|
||||
// Future<void> _getCurrentLocation() async {
|
||||
// try {
|
||||
// // 开始定位
|
||||
// location.startLocation();
|
||||
|
||||
// // 监听定位回调
|
||||
|
||||
// location.onLocationChanged().listen((Map<String, Object> result) {
|
||||
// ///result即为定位结果
|
||||
// ef.log("[位置]:${result}");
|
||||
// });
|
||||
|
||||
// // location.onLocationChanged.listen((locationData) {
|
||||
// // if (locationData.latitude != null && locationData.longitude != null) {
|
||||
// // model.latitude = locationData.latitude;
|
||||
// // model.longitude = locationData.longitude;
|
||||
|
||||
// // // 获取位置对应的城市名
|
||||
// // _getCityName(locationData.latitude!, locationData.longitude!);
|
||||
// // }
|
||||
// // });
|
||||
// } catch (e) {
|
||||
// print(e);
|
||||
// EasyDartModule.logger.error("获取位置失败: $e");
|
||||
// }
|
||||
// }
|
||||
|
||||
// // 获取城市名
|
||||
// Future<void> _getCityName(double latitude, double longitude) async {
|
||||
// try {
|
||||
// List<Placemark> placemarks =
|
||||
// await placemarkFromCoordinates(latitude, longitude);
|
||||
|
||||
// if (placemarks.isNotEmpty) {
|
||||
// model.cityName = placemarks[0].locality ?? "未知数据".tr;
|
||||
// }
|
||||
// // 获取天气
|
||||
// _getCurrentWeather();
|
||||
// } catch (e) {
|
||||
// print(e);
|
||||
// EasyDartModule.logger.error("获取城市名失败: $e");
|
||||
// }
|
||||
// }
|
||||
|
||||
// // 获取天气信息
|
||||
// Future<void> _getCurrentWeather() async {
|
||||
// if (model.latitude == null || model.longitude == null) {
|
||||
// EasyDartModule.logger.error("获取天气失败:位置数据获取失败");
|
||||
// return; // 如果位置数据没有获取到,则不更新天气
|
||||
// }
|
||||
|
||||
// try {
|
||||
// weatherFactory.language = Language.CHINESE_SIMPLIFIED;
|
||||
// Weather weather = await weatherFactory.currentWeatherByLocation(
|
||||
// model.latitude!, model.longitude!);
|
||||
|
||||
// model.weather_info = weather.weatherDescription;
|
||||
// model.min_temperature = weather.tempMin?.celsius?.toInt();
|
||||
// model.max_temperature = weather.tempMax?.celsius?.toInt();
|
||||
// model.current_temperature = weather.temperature?.celsius?.toInt();
|
||||
// model.wind_speed = weather.windSpeed?.toInt();
|
||||
// model.weatherIcon = weather.weatherIcon;
|
||||
// if (model.weatherIcon != null) {
|
||||
// model.weatherIconurl =
|
||||
// "https://openweathermap.org/img/w/${model.weatherIcon}.png";
|
||||
// }
|
||||
// updateAll(); // 更新 UI
|
||||
// } catch (e) {
|
||||
// EasyDartModule.logger.error("获取天气失败: $e");
|
||||
// print('获取天气失败: $e');
|
||||
// }
|
||||
// }
|
||||
|
||||
// // 获取 5 天天气预报
|
||||
// Future<List<Weather>> getWeatherForecast(
|
||||
// double latitude, double longitude) async {
|
||||
// try {
|
||||
// return await weatherFactory.fiveDayForecastByLocation(
|
||||
// latitude, longitude);
|
||||
// } catch (e) {
|
||||
// print('获取天气预报失败: $e');
|
||||
// rethrow;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
@@ -69,7 +69,6 @@ import 'package:vbvs_app/pages/mh_page/MattressControl.dart';
|
||||
import 'package:vbvs_app/pages/mh_page/device/component/mht_device_calibration_controller.dart';
|
||||
import 'package:vbvs_app/pages/mh_page/device/controller/mht_bluetooth_controller.dart';
|
||||
import 'package:vbvs_app/pages/mh_page/homepage/controller/mht_home_controller.dart';
|
||||
import 'package:vbvs_app/pages/mh_page/test/WebviewTestModel.dart';
|
||||
import 'package:vbvs_app/pages/mh_page/user/controller/mht_login_controller.dart';
|
||||
import 'package:vbvs_app/pages/mh_page/user/controller/mht_register_controller.dart';
|
||||
import 'package:vbvs_app/pages/mh_page/user/controller/update_password_controller.dart';
|
||||
@@ -81,6 +80,7 @@ import 'routers/routers.dart';
|
||||
|
||||
Future<void> main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
final Locale? deviceLocale = Get.deviceLocale;
|
||||
print('系统语言: ${deviceLocale?.languageCode}');
|
||||
|
||||
@@ -369,7 +369,6 @@ class MyApp extends StatelessWidget {
|
||||
Get.lazyPut(() => CalendarController()),
|
||||
Get.lazyPut(() => UserPdfController()),
|
||||
Get.lazyPut(() => PrivacyPdfController()),
|
||||
Get.put(WebviewTestController()),
|
||||
]));
|
||||
}
|
||||
|
||||
|
||||
@@ -1,12 +1,17 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:ef/ef.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:vbvs_app/common/util/CommonVariables.dart';
|
||||
import 'package:vbvs_app/component/NullDataComponentWidget.dart';
|
||||
import 'package:vbvs_app/model/WebSocketMessage.dart';
|
||||
import 'package:vbvs_app/pages/common/bezier_bottom_navigation_bar.dart';
|
||||
import 'package:vbvs_app/pages/mh_page/MattressControl.dart';
|
||||
import 'package:vbvs_app/pages/mh_page/homepage/mht_sleep_report_page.dart';
|
||||
import 'package:vbvs_app/pages/mh_page/homepage/new_Home_page.dart';
|
||||
import 'package:vbvs_app/pages/mh_page/new_mine_page.dart';
|
||||
import 'package:vbvs_app/pages/mh_page/test/WebviewTestModel.dart';
|
||||
import 'package:EasyDartModule/EasyDartModule.dart' as edm;
|
||||
|
||||
class MainPageBBottomChange extends StatefulWidget {
|
||||
// 全局 key,用于静态访问 _HomePageState
|
||||
@@ -138,11 +143,24 @@ class _HomePageState extends State<MainPageBBottomChange>
|
||||
}
|
||||
|
||||
Future<void> dealWebSource(int index) async {
|
||||
try {
|
||||
WebviewTestController webviewTestController = Get.find();
|
||||
if (index == 2) {
|
||||
await webviewTestController.web.jsbridge?.dart.pageActive(true);
|
||||
//激活websocket
|
||||
CommonVariables.callMap["/smartbed/connect"] = (data) {
|
||||
//订阅连接消息
|
||||
ef.log("[设备申请连接]:$data");
|
||||
};
|
||||
edm.EasyDartModule.websocket.sendData(jsonEncode(WebSocketMessage(
|
||||
path: "/smartbed/connect",
|
||||
type: 5,
|
||||
data: {"mac": webviewTestController.selectDevice['mac']})));
|
||||
} else {
|
||||
await webviewTestController.web.jsbridge?.dart.pageInActive();
|
||||
}
|
||||
} catch (e) {
|
||||
ef.log("[激活控制页面报错]:$e");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ import 'package:vbvs_app/pages/mh_page/component/mht_bind_dialog.dart';
|
||||
import 'package:vbvs_app/pages/mh_page/device/component/DeviceComponentWidget.dart';
|
||||
import 'package:vbvs_app/pages/mh_page/device/controller/mht_bluetooth_controller.dart';
|
||||
import 'package:vbvs_app/pages/mh_page/device/model/BlueToothDataModel.dart';
|
||||
import 'package:vbvs_app/pages/mh_page/searchWidget.dart';
|
||||
|
||||
class MHTBlueteethDevicePage extends StatefulWidget {
|
||||
var deviceType;
|
||||
@@ -146,7 +147,8 @@ class _MHTBlueteethDevicePageState extends State<MHTBlueteethDevicePage> {
|
||||
final filteredResults = results.where((r) {
|
||||
final localName = r.advertisementData.localName;
|
||||
final isTarget = r.rssi > signalThreshold &&
|
||||
isTargetDevice(localName, widget.deviceType['reg'].cast<String>());
|
||||
isTargetDevice(
|
||||
localName, widget.deviceType['reg'].cast<String>());
|
||||
if (!isTarget) return false;
|
||||
final name = r.advertisementData.advName.toLowerCase();
|
||||
String macAddress = r.device.remoteId.str;
|
||||
@@ -336,8 +338,8 @@ class _MHTBlueteethDevicePageState extends State<MHTBlueteethDevicePage> {
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
colors: [
|
||||
stringToColor("FCFCFC"),
|
||||
stringToColor("CEECE3")
|
||||
stringToColor("#003058").withOpacity(0.8),
|
||||
stringToColor("#003058").withOpacity(0.8),
|
||||
],
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
@@ -360,7 +362,7 @@ class _MHTBlueteethDevicePageState extends State<MHTBlueteethDevicePage> {
|
||||
: '扫描中'.tr,
|
||||
style: TextStyle(
|
||||
fontFamily: 'Inter',
|
||||
color: stringToColor("#003058"),
|
||||
color: stringToColor("#FFFFFF"),
|
||||
fontSize: 26.rpx,
|
||||
letterSpacing: 0.0,
|
||||
),
|
||||
@@ -375,8 +377,10 @@ class _MHTBlueteethDevicePageState extends State<MHTBlueteethDevicePage> {
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
colors: [
|
||||
stringToColor("FCFCFC"),
|
||||
stringToColor("CEECE3")
|
||||
// stringToColor("FCFCFC"),
|
||||
// stringToColor("CEECE3")
|
||||
Colors.transparent,
|
||||
Colors.transparent,
|
||||
],
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
@@ -393,7 +397,7 @@ class _MHTBlueteethDevicePageState extends State<MHTBlueteethDevicePage> {
|
||||
'最小信号强度'.tr,
|
||||
style: TextStyle(
|
||||
fontFamily: 'Inter',
|
||||
color: stringToColor("#003058"),
|
||||
color: stringToColor("#FFFFFF"),
|
||||
fontSize: 26.rpx,
|
||||
letterSpacing: 0.0,
|
||||
),
|
||||
@@ -423,7 +427,7 @@ class _MHTBlueteethDevicePageState extends State<MHTBlueteethDevicePage> {
|
||||
'${mhtBlueToothController.model.singal!.toInt()}',
|
||||
style: TextStyle(
|
||||
fontFamily: 'Inter',
|
||||
color: stringToColor("#003058"),
|
||||
color: stringToColor("#FFFFFF"),
|
||||
fontSize: 26.rpx,
|
||||
letterSpacing: 0.0,
|
||||
),
|
||||
@@ -433,164 +437,194 @@ class _MHTBlueteethDevicePageState extends State<MHTBlueteethDevicePage> {
|
||||
),
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
color: themeController.currentColor.sc3,
|
||||
borderRadius: BorderRadius.circular(20.rpx),
|
||||
),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
35.rpx, 0, 35.rpx, 0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
// Container(
|
||||
// width: double.infinity,
|
||||
// decoration: BoxDecoration(
|
||||
// color: themeController.currentColor.sc3,
|
||||
// borderRadius: BorderRadius.circular(20.rpx),
|
||||
// ),
|
||||
// // child: Padding(
|
||||
// // padding: EdgeInsetsDirectional.fromSTEB(
|
||||
// // 35.rpx, 0, 35.rpx, 0),
|
||||
// // child: Row(
|
||||
// // mainAxisSize: MainAxisSize.max,
|
||||
// // mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
// // children: [
|
||||
// // Expanded(
|
||||
// // child: Row(
|
||||
// // mainAxisSize: MainAxisSize.max,
|
||||
// // children: [
|
||||
// // Padding(
|
||||
// // padding: EdgeInsetsDirectional.fromSTEB(
|
||||
// // 0, 0.rpx, 0, 0),
|
||||
// // child: Container(
|
||||
// // width: 25.rpx,
|
||||
// // height: 25.rpx,
|
||||
// // decoration: BoxDecoration(),
|
||||
// // child: SvgPicture.asset(
|
||||
// // 'assets/img/icon/query.svg',
|
||||
// // fit: BoxFit.cover,
|
||||
// // color: stringToColor("#333333"),
|
||||
// // ),
|
||||
// // ),
|
||||
// // ),
|
||||
// // Expanded(
|
||||
// // child: Container(
|
||||
// // width: 100.rpx,
|
||||
// // height: 90.rpx,
|
||||
// // decoration: BoxDecoration(
|
||||
// // color: Colors.white,
|
||||
// // ),
|
||||
// // child: Align(
|
||||
// // alignment:
|
||||
// // AlignmentDirectional(-1, 0),
|
||||
// // child: TextFormField(
|
||||
// // initialValue:
|
||||
// // mhtBlueToothController
|
||||
// // .search.value,
|
||||
// // onChanged: (Value) {
|
||||
// // mhtBlueToothController
|
||||
// // .search.value = Value;
|
||||
// // },
|
||||
// // autofocus: false,
|
||||
// // obscureText: false,
|
||||
// // decoration: InputDecoration(
|
||||
// // isDense: true,
|
||||
// // labelStyle: TextStyle(
|
||||
// // fontFamily: 'Inter',
|
||||
// // fontSize: 26.rpx,
|
||||
// // letterSpacing: 0.0,
|
||||
// // ),
|
||||
// // hintText: '检索设备'.tr,
|
||||
// // hintStyle: TextStyle(
|
||||
// // fontFamily: 'Inter',
|
||||
// // fontSize: 26.rpx,
|
||||
// // letterSpacing: 0.0,
|
||||
// // ),
|
||||
// // enabledBorder:
|
||||
// // OutlineInputBorder(
|
||||
// // borderSide: BorderSide(
|
||||
// // color: Color(0x00000000),
|
||||
// // width: 1.rpx,
|
||||
// // ),
|
||||
// // borderRadius:
|
||||
// // BorderRadius.circular(
|
||||
// // 8.rpx),
|
||||
// // ),
|
||||
// // focusedBorder:
|
||||
// // OutlineInputBorder(
|
||||
// // borderSide: BorderSide(
|
||||
// // color: Color(0x00000000),
|
||||
// // width: 1.rpx,
|
||||
// // ),
|
||||
// // borderRadius:
|
||||
// // BorderRadius.circular(
|
||||
// // 8.rpx),
|
||||
// // ),
|
||||
// // errorBorder: OutlineInputBorder(
|
||||
// // borderSide: BorderSide(
|
||||
// // color: Colors.red,
|
||||
// // width: 1.rpx,
|
||||
// // ),
|
||||
// // borderRadius:
|
||||
// // BorderRadius.circular(
|
||||
// // 8.rpx),
|
||||
// // ),
|
||||
// // focusedErrorBorder:
|
||||
// // OutlineInputBorder(
|
||||
// // borderSide: BorderSide(
|
||||
// // color: Colors.red,
|
||||
// // width: 1.rpx,
|
||||
// // ),
|
||||
// // borderRadius:
|
||||
// // BorderRadius.circular(
|
||||
// // 8.rpx),
|
||||
// // ),
|
||||
// // filled: false,
|
||||
// // fillColor: themeController
|
||||
// // .currentColor.sc22,
|
||||
// // ),
|
||||
// // style: TextStyle(
|
||||
// // fontFamily: 'Inter',
|
||||
// // fontSize: 26.rpx,
|
||||
// // letterSpacing: 0.0,
|
||||
// // ),
|
||||
// // cursorColor:
|
||||
// // stringToColor("#003058"),
|
||||
// // ),
|
||||
// // ),
|
||||
// // ),
|
||||
// // ),
|
||||
// // ].divide(SizedBox(width: 6.rpx)),
|
||||
// // ),
|
||||
// // ),
|
||||
// // Padding(
|
||||
// // padding: EdgeInsetsDirectional.fromSTEB(
|
||||
// // 26.rpx, 0, 0, 0),
|
||||
// // child: Row(
|
||||
// // mainAxisSize: MainAxisSize.max,
|
||||
// // children: [
|
||||
// // SizedBox(
|
||||
// // height: 50.rpx,
|
||||
// // child: VerticalDivider(
|
||||
// // thickness: 2.rpx,
|
||||
// // color: stringToColor("#333333"),
|
||||
// // ),
|
||||
// // ),
|
||||
// // ClickableContainer(
|
||||
// // backgroundColor: Colors.transparent,
|
||||
// // highlightColor:
|
||||
// // themeController.currentColor.sc4,
|
||||
// // borderRadius: 6.rpx,
|
||||
// // padding: EdgeInsets.zero,
|
||||
// // onTap: () async {
|
||||
// // _startScanning();
|
||||
// // },
|
||||
// // child: Text(
|
||||
// // '搜索'.tr,
|
||||
// // style: TextStyle(
|
||||
// // fontFamily: 'Inter',
|
||||
// // fontSize: 30.rpx,
|
||||
// // letterSpacing: 0.0,
|
||||
// // color: stringToColor("#333333"),
|
||||
// // ),
|
||||
// // ),
|
||||
// // ),
|
||||
// // ].divide(SizedBox(width: 26.rpx)),
|
||||
// // ),
|
||||
// // ),
|
||||
// // ],
|
||||
// // ),
|
||||
// // ),
|
||||
// child: Padding(
|
||||
// padding:
|
||||
// EdgeInsetsDirectional.fromSTEB(0, 10, 0, 23),
|
||||
// child: SearchWidget(
|
||||
// keyword: mhtBlueToothController.search.value,
|
||||
// color: Colors.red,
|
||||
// hint: "检索设备",
|
||||
// onChange: (d) {
|
||||
// mhtBlueToothController.search.value = d;
|
||||
// },
|
||||
// findCallback: () {
|
||||
// // controller.getDeviceList();
|
||||
// },
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0, 0.rpx, 0, 0),
|
||||
child: Container(
|
||||
width: 25.rpx,
|
||||
height: 25.rpx,
|
||||
decoration: BoxDecoration(),
|
||||
child: SvgPicture.asset(
|
||||
'assets/img/icon/query.svg',
|
||||
fit: BoxFit.cover,
|
||||
color: stringToColor("#333333"),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Container(
|
||||
width: 100.rpx,
|
||||
height: 90.rpx,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
),
|
||||
child: Align(
|
||||
alignment:
|
||||
AlignmentDirectional(-1, 0),
|
||||
child: TextFormField(
|
||||
initialValue:
|
||||
mhtBlueToothController
|
||||
.search.value,
|
||||
onChanged: (Value) {
|
||||
mhtBlueToothController
|
||||
.search.value = Value;
|
||||
padding: EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0),
|
||||
child: SearchWidget(
|
||||
padding: EdgeInsets.all(0),
|
||||
keyword: mhtBlueToothController.search.value,
|
||||
color: Colors.red,
|
||||
hint: "检索设备",
|
||||
onChange: (d) {
|
||||
mhtBlueToothController.search.value = d;
|
||||
},
|
||||
autofocus: false,
|
||||
obscureText: false,
|
||||
decoration: InputDecoration(
|
||||
isDense: true,
|
||||
labelStyle: TextStyle(
|
||||
fontFamily: 'Inter',
|
||||
fontSize: 26.rpx,
|
||||
letterSpacing: 0.0,
|
||||
),
|
||||
hintText: '检索设备'.tr,
|
||||
hintStyle: TextStyle(
|
||||
fontFamily: 'Inter',
|
||||
fontSize: 26.rpx,
|
||||
letterSpacing: 0.0,
|
||||
),
|
||||
enabledBorder:
|
||||
OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Color(0x00000000),
|
||||
width: 1.rpx,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(
|
||||
8.rpx),
|
||||
),
|
||||
focusedBorder:
|
||||
OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Color(0x00000000),
|
||||
width: 1.rpx,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(
|
||||
8.rpx),
|
||||
),
|
||||
errorBorder: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Colors.red,
|
||||
width: 1.rpx,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(
|
||||
8.rpx),
|
||||
),
|
||||
focusedErrorBorder:
|
||||
OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Colors.red,
|
||||
width: 1.rpx,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(
|
||||
8.rpx),
|
||||
),
|
||||
filled: false,
|
||||
fillColor: themeController
|
||||
.currentColor.sc22,
|
||||
),
|
||||
style: TextStyle(
|
||||
fontFamily: 'Inter',
|
||||
fontSize: 26.rpx,
|
||||
letterSpacing: 0.0,
|
||||
),
|
||||
cursorColor:
|
||||
stringToColor("#003058"),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
].divide(SizedBox(width: 6.rpx)),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
26.rpx, 0, 0, 0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
SizedBox(
|
||||
height: 50.rpx,
|
||||
child: VerticalDivider(
|
||||
thickness: 2.rpx,
|
||||
color: stringToColor("#333333"),
|
||||
),
|
||||
),
|
||||
ClickableContainer(
|
||||
backgroundColor: Colors.transparent,
|
||||
highlightColor:
|
||||
themeController.currentColor.sc4,
|
||||
borderRadius: 6.rpx,
|
||||
padding: EdgeInsets.zero,
|
||||
onTap: () async {
|
||||
findCallback: () {
|
||||
_startScanning();
|
||||
},
|
||||
child: Text(
|
||||
'搜索'.tr,
|
||||
style: TextStyle(
|
||||
fontFamily: 'Inter',
|
||||
fontSize: 30.rpx,
|
||||
letterSpacing: 0.0,
|
||||
color: stringToColor("#333333"),
|
||||
),
|
||||
),
|
||||
),
|
||||
].divide(SizedBox(width: 26.rpx)),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
|
||||
@@ -574,6 +574,8 @@ class _NewHomePageState extends State<NewHomePage> {
|
||||
'date': DateTime
|
||||
.now()
|
||||
.millisecondsSinceEpoch,
|
||||
'person_show':
|
||||
false,
|
||||
},
|
||||
);
|
||||
}
|
||||
@@ -665,6 +667,8 @@ class _NewHomePageState extends State<NewHomePage> {
|
||||
'date':
|
||||
timeMillis,
|
||||
// 'backgroundColor':stringToColor("#003058"),
|
||||
'person_show':
|
||||
false,
|
||||
},
|
||||
);
|
||||
},
|
||||
|
||||
@@ -11,18 +11,21 @@ class SearchWidget extends GetView {
|
||||
String? hint;
|
||||
Function? onChange;
|
||||
Function? findCallback;
|
||||
final EdgeInsetsGeometry? padding; // 新增 padding 参数
|
||||
|
||||
SearchWidget(
|
||||
{required this.keyword,
|
||||
SearchWidget({
|
||||
required this.keyword,
|
||||
required this.color,
|
||||
this.hint = "请输入关键字",
|
||||
this.findCallback,
|
||||
this.onChange});
|
||||
this.onChange,
|
||||
this.padding, // 传入 padding 参数
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(30.rpx, 0, 30.rpx, 0),
|
||||
padding: padding ?? EdgeInsetsDirectional.fromSTEB(30.rpx, 0, 30.rpx, 0), // 使用传入的 padding 或默认值
|
||||
child: Container(
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
@@ -42,7 +45,6 @@ class SearchWidget extends GetView {
|
||||
Container(
|
||||
width: 25.rpx,
|
||||
height: 25.rpx,
|
||||
// width: double.infinity,
|
||||
decoration: BoxDecoration(),
|
||||
child: SvgPicture.asset(
|
||||
'assets/img/icon/query.svg',
|
||||
@@ -112,11 +114,6 @@ class SearchWidget extends GetView {
|
||||
color: Colors.black,
|
||||
letterSpacing: 0.0,
|
||||
),
|
||||
// cursorColor:
|
||||
// FlutterFlowTheme.of(context).primaryText,
|
||||
// validator: _model
|
||||
// .textControllerValidator
|
||||
// .asValidator(context),
|
||||
onChanged: (d) {
|
||||
onChange?.call(d);
|
||||
},
|
||||
|
||||
@@ -278,13 +278,18 @@ class WebviewTestController extends GetControllerEx<WebviewTestModel> {
|
||||
class WebviewTestView extends GetComponent<WebviewTestController> {
|
||||
WebviewTestView({super.key, super.oncreate});
|
||||
|
||||
// @override
|
||||
// WebviewTestController newinstance() {
|
||||
// if (ef.kvRoot.WebviewTestController == null) {
|
||||
// ef.kvRoot.WebviewTestController = WebviewTestController();
|
||||
// }
|
||||
// return ef.kvRoot.WebviewTestController;
|
||||
// }
|
||||
@override
|
||||
WebviewTestController newinstance() {
|
||||
if (ef.kvRoot.WebviewTestController == null) {
|
||||
ef.kvRoot.WebviewTestController = WebviewTestController();
|
||||
if (Get.isRegistered<WebviewTestController>() == false) {
|
||||
Get.put<WebviewTestController>(ef.kvRoot.WebviewTestController);
|
||||
WebviewTestController webviewTestController = Get.find();
|
||||
return webviewTestController;
|
||||
}
|
||||
}
|
||||
return ef.kvRoot.WebviewTestController;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
@@ -76,7 +76,7 @@ class _DataShowWidgetState extends State<DataShowWidget> {
|
||||
),
|
||||
// 放入传入的 widget3
|
||||
Container(
|
||||
width: MediaQuery.sizeOf(context).width * 0.2, // 固定宽度
|
||||
width: MediaQuery.sizeOf(context).width * 0.25, // 固定宽度
|
||||
decoration: BoxDecoration(),
|
||||
child: Align(
|
||||
alignment: widget.alignment == MainAxisAlignment.start
|
||||
@@ -89,7 +89,7 @@ class _DataShowWidgetState extends State<DataShowWidget> {
|
||||
),
|
||||
// 放入传入的 widget4
|
||||
Container(
|
||||
width: MediaQuery.sizeOf(context).width * 0.15, // 固定宽度
|
||||
width: MediaQuery.sizeOf(context).width * 0.1, // 固定宽度
|
||||
decoration: BoxDecoration(),
|
||||
child: Align(
|
||||
alignment: widget.alignment == MainAxisAlignment.start
|
||||
|
||||
@@ -148,7 +148,7 @@ class _HeartChangeWidgetState extends State<HeartChangeWidget> {
|
||||
alignment: MainAxisAlignment.center,
|
||||
widget1: Row(
|
||||
children: [
|
||||
Expanded(
|
||||
Flexible(
|
||||
child: Text(
|
||||
'${data['name']}',
|
||||
maxLines: 1,
|
||||
@@ -186,7 +186,7 @@ class _HeartChangeWidgetState extends State<HeartChangeWidget> {
|
||||
width: 17.rpx,
|
||||
height: 17.rpx,
|
||||
child: SvgPicture.asset(
|
||||
'assets/img/icon/explain.svg',
|
||||
'assets/img/icon/question.svg',
|
||||
fit: BoxFit.cover,
|
||||
color: Colors.white,
|
||||
),
|
||||
|
||||
@@ -65,7 +65,7 @@ class _XiaoEPageState extends State<XiaoEPage> {
|
||||
children: [
|
||||
/// 居中标题
|
||||
Text(
|
||||
'健康报告'.tr,
|
||||
'小e'.tr,
|
||||
style: TextStyle(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: themeController.currentColor.sc3,
|
||||
|
||||
Reference in New Issue
Block a user