路径规划界面 获取实时数据
This commit is contained in:
@@ -18,16 +18,13 @@ class DeviceHttpDatasourceImpl implements DeviceHttpDatasource {
|
||||
// 🔥 辅助方法:获取 Token
|
||||
Future<String?> _getToken() async {
|
||||
final user = await _userStorage.getUser();
|
||||
debugPrint('用户信息: $user') ;
|
||||
debugPrint('用户信息: $user');
|
||||
return user?.token;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<int> bindDevice(String deviceId, String deviceAlias) async {
|
||||
var response = await dio.post(
|
||||
HttpApiConsts.bindDevice,
|
||||
data: {'deviceId': deviceId, 'deviceAlias': deviceAlias},
|
||||
);
|
||||
var response = await dio.post(HttpApiConsts.bindDevice, data: {'deviceId': deviceId, 'deviceAlias': deviceAlias});
|
||||
if (response.statusCode != 200) {
|
||||
throw Exception('网络请求失败:${response.statusCode}');
|
||||
}
|
||||
@@ -51,6 +48,7 @@ class DeviceHttpDatasourceImpl implements DeviceHttpDatasource {
|
||||
options: Options(
|
||||
headers: {
|
||||
'Authorization': token != null ? 'Bearer $token' : '',
|
||||
|
||||
// 如果后端不需要 Bearer 前缀,直接写 token 即可
|
||||
},
|
||||
),
|
||||
@@ -104,10 +102,7 @@ class DeviceHttpDatasourceImpl implements DeviceHttpDatasource {
|
||||
|
||||
@override
|
||||
Future<int> unbindDevice(String deviceId, String deviceName) async {
|
||||
final response = await dio.post(
|
||||
'/forward/device/unbind',
|
||||
data: {"deviceId": deviceId, "deviceName": deviceName},
|
||||
);
|
||||
final response = await dio.post('/forward/device/unbind', data: {"deviceId": deviceId, "deviceName": deviceName});
|
||||
|
||||
final data = response.data;
|
||||
|
||||
@@ -123,10 +118,7 @@ class DeviceHttpDatasourceImpl implements DeviceHttpDatasource {
|
||||
}
|
||||
|
||||
Future<int> updateDeviceName(String deviceId, String deviceName) async {
|
||||
final response = await dio.post(
|
||||
'/forward/device/updateDeviceAlias',
|
||||
data: {"deviceId": deviceId, "deviceAlias": deviceName},
|
||||
);
|
||||
final response = await dio.post('/forward/device/updateDeviceAlias', data: {"deviceId": deviceId, "deviceAlias": deviceName});
|
||||
|
||||
final data = response.data;
|
||||
|
||||
@@ -163,11 +155,7 @@ class DeviceHttpDatasourceImpl implements DeviceHttpDatasource {
|
||||
if (data['code'] == 200) {
|
||||
//return data['data']; // 返回设备数据
|
||||
final locationData = data['data']; // 假设数据结构,测试时候如有不妥就修改结果的实例化
|
||||
return DeviceLocationEntity(
|
||||
deviceName: locationData['deviceName'],
|
||||
latitude: locationData['latitude'],
|
||||
longitude: locationData['longitude'],
|
||||
);
|
||||
return DeviceLocationEntity(deviceName: locationData['deviceName'], latitude: locationData['latitude'], longitude: locationData['longitude']);
|
||||
} else {
|
||||
throw Exception(data['msg'] ?? '业务异常');
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import 'dart:math' as math;
|
||||
import 'package:fl_chart/fl_chart.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:maibu_satabot_v2/features/home/presentation/widgets/common/commonFn.dart';
|
||||
import 'package:syncfusion_flutter_gauges/gauges.dart';
|
||||
import 'package:flutter/animation.dart';
|
||||
|
||||
@@ -78,23 +79,6 @@ class _RunningStatusPageState extends State<RunningStatusPage> {
|
||||
}
|
||||
}
|
||||
|
||||
String _parseLocationQuality(int locationValue) {
|
||||
switch (locationValue) {
|
||||
case 0:
|
||||
return '无效';
|
||||
case 1:
|
||||
return 'GPS 单点定位';
|
||||
case 2:
|
||||
return 'DGPS 伪距差分或 SBAS';
|
||||
case 4:
|
||||
return 'RTK 固定解';
|
||||
case 5:
|
||||
return 'RTK 浮点解';
|
||||
default:
|
||||
return '未知($locationValue)';
|
||||
}
|
||||
}
|
||||
|
||||
void _appendChartData(DeviceStatusUpdated state) {
|
||||
final status = state.status;
|
||||
|
||||
@@ -711,6 +695,7 @@ class _RunningStatusPageState extends State<RunningStatusPage> {
|
||||
TableRow(children: [_buildTableCell("电量(%)"), _buildTableCell(status.battery)]),
|
||||
TableRow(children: [_buildTableCell("芯片温度(°C)"), _buildTableCell(status.chipTemp.toStringAsFixed(2))]),
|
||||
TableRow(children: [_buildTableCell("割刀速度(rpm)"), _buildTableCell(status.knifeCuttingSpeed)]),
|
||||
TableRow(children: [_buildTableCell("控制模式"), _buildTableCell(LocationUtils.parseControlMode(int.parse(status.controlMode)))]),
|
||||
TableRow(children: [_buildTableCell("经度(°)"), _buildTableCell(status.longitude.toStringAsFixed(6))]),
|
||||
TableRow(children: [_buildTableCell("纬度(°)"), _buildTableCell(status.latitude.toStringAsFixed(6))]),
|
||||
],
|
||||
@@ -793,7 +778,7 @@ class _RunningStatusPageState extends State<RunningStatusPage> {
|
||||
} catch (e) {
|
||||
qualValue = 0;
|
||||
}
|
||||
qual = _parseLocationQuality(qualValue);
|
||||
qual = LocationUtils.parseLocationQuality(qualValue);
|
||||
satelliteCnt = state.status.satelliteCnt.toString();
|
||||
} else if (state is DeviceStatusError) {
|
||||
qual = '-';
|
||||
@@ -880,7 +865,6 @@ class _RunningStatusPageState extends State<RunningStatusPage> {
|
||||
builder: (context, state) {
|
||||
debugPrint('🎨 [UI-Build] BlocBuilder 重建!当前状态类型:${state.runtimeType}');
|
||||
|
||||
|
||||
// 检测到设备切换(状态重置)时,清空图表历史数据
|
||||
if (state is DeviceStatusInitial) {
|
||||
debugPrint('🧹 [UI] 检测到 Initial 状态,准备重置图表数据');
|
||||
|
||||
41
lib/features/home/presentation/widgets/common/commonFn.dart
Normal file
41
lib/features/home/presentation/widgets/common/commonFn.dart
Normal file
@@ -0,0 +1,41 @@
|
||||
// common/location_utils.dart
|
||||
/// 定位质量解析工具类
|
||||
class LocationUtils {
|
||||
/// 解析定位质量值为可读字符串
|
||||
/// [locationValue] 定位质量编码(0/1/2/4/5)
|
||||
/// 返回:对应的中文描述
|
||||
static String parseLocationQuality(int locationValue) {
|
||||
switch (locationValue) {
|
||||
case 0:
|
||||
return '无效';
|
||||
case 1:
|
||||
return 'GPS 单点定位';
|
||||
case 2:
|
||||
return 'DGPS 伪距差分或 SBAS';
|
||||
case 4:
|
||||
return 'RTK 固定解';
|
||||
case 5:
|
||||
return 'RTK 浮点解';
|
||||
default:
|
||||
return '未知($locationValue)';
|
||||
}
|
||||
}
|
||||
|
||||
static String parseControlMode(int value) {
|
||||
switch (value) {
|
||||
case 3:
|
||||
return '远程控制';
|
||||
|
||||
default:
|
||||
return '本地控制';
|
||||
}
|
||||
}
|
||||
|
||||
// 【可选扩展】可添加更多定位相关工具方法
|
||||
// 示例:校验定位质量是否有效
|
||||
static bool isLocationValid(int locationValue) {
|
||||
return locationValue != 0;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
136
lib/features/home/presentation/widgets/obsToast.dart
Normal file
136
lib/features/home/presentation/widgets/obsToast.dart
Normal file
@@ -0,0 +1,136 @@
|
||||
import 'package:flutter/gestures.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
|
||||
class ObsToastWidget extends StatefulWidget {
|
||||
final String message;
|
||||
final VoidCallback? onDismiss;
|
||||
|
||||
const ObsToastWidget({super.key, required this.message, this.onDismiss});
|
||||
|
||||
static OverlayEntry? _currentToast;
|
||||
static _ObsToastWidgetState? _currentState;
|
||||
|
||||
// 显示 Toast
|
||||
static void show({required BuildContext context, required String message}) {
|
||||
dismiss();
|
||||
|
||||
_currentToast = OverlayEntry(
|
||||
builder: (context) => ObsToastWidget(
|
||||
message: message,
|
||||
onDismiss: () {
|
||||
_currentToast?.remove();
|
||||
_currentToast = null;
|
||||
_currentState = null;
|
||||
},
|
||||
),
|
||||
);
|
||||
|
||||
Overlay.of(context).insert(_currentToast!);
|
||||
}
|
||||
|
||||
// 主动消失(你要的)
|
||||
static void dismiss() {
|
||||
if (_currentState != null) {
|
||||
_currentState!._dismissToast();
|
||||
} else if (_currentToast != null) {
|
||||
_currentToast!.remove();
|
||||
_currentToast = null;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
State<ObsToastWidget> createState() => _ObsToastWidgetState();
|
||||
}
|
||||
|
||||
class _ObsToastWidgetState extends State<ObsToastWidget> with SingleTickerProviderStateMixin {
|
||||
late AnimationController _animationController;
|
||||
late Animation<double> _fadeAnimation;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
ObsToastWidget._currentState = this;
|
||||
|
||||
_animationController = AnimationController(vsync: this, duration: const Duration(milliseconds: 300));
|
||||
|
||||
_fadeAnimation = Tween<double>(begin: 0.0, end: 1.0).animate(CurvedAnimation(parent: _animationController, curve: Curves.easeInOut));
|
||||
|
||||
Future.delayed(const Duration(milliseconds: 50), () {
|
||||
if (mounted) _animationController.forward();
|
||||
});
|
||||
|
||||
// 已删除:自动消失逻辑
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_animationController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
// 主动消失逻辑
|
||||
void _dismissToast() {
|
||||
if (_animationController.status == AnimationStatus.completed) {
|
||||
_animationController.reverse().then((_) {
|
||||
widget.onDismiss?.call();
|
||||
ObsToastWidget._currentState = null;
|
||||
});
|
||||
} else {
|
||||
widget.onDismiss?.call();
|
||||
ObsToastWidget._currentState = null;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Positioned(
|
||||
// 定位:屏幕顶部居中(可根据需求调整)
|
||||
top: 100,
|
||||
left: MediaQuery.of(context).size.width * 0.1,
|
||||
right: MediaQuery.of(context).size.width * 0.1,
|
||||
child: FadeTransition(
|
||||
opacity: _fadeAnimation,
|
||||
child: Listener(
|
||||
child: GestureDetector(
|
||||
child: Container(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.1), blurRadius: 10, offset: const Offset(0, 2))],
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
// SVG 图标(替换为你的 SVG 路径/字符串)
|
||||
SvgPicture.string(
|
||||
'''<svg t="1758873211729" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32">
|
||||
<path d="M255.473371 889.382034s156.765623-7.832137 260.953235-8.78592c115.755886-1.059109 300.160731 8.78592 300.160731 8.78592l191.321234 21.635657s-298.896823 17.712274-491.481965 17.577692C327.533714 928.463726 52.662857 911.017691 52.662857 911.017691l202.810514-21.635657z" fill="#000000" opacity=".5"></path>
|
||||
<path d="M281.801874 125.270309C342.785463 81.785417 421.25312 64.365714 520.777143 64.365714c153.523931 0 292.975177 82.382263 367.504823 266.830995 44.985783 64.459337 58.596206 151.4496 46.869943 234.534034-11.819886 83.748571-49.68448 165.814857-110.381349 219.311543-181.151451 159.659154-414.210926 107.326903-517.298469 57.341074-60.930926-29.543863-194.814537-103.447406-211.093211-256.155063-8.358766-78.41792 0.234057-160.29696 54.740114-253.855451 28.636891-96.130194 69.933349-163.787337 130.679955-207.102537z m16.983772 23.821165C244.893989 187.517806 206.262857 248.931474 178.66752 342.372937l-0.509074 1.717394-0.906972 1.544778c-51.659337 87.98208-59.628983 163.857554-51.779291 237.491931 14.453029 135.59808 133.792914 203.3664 194.7648 232.930743 98.397623 47.712549 316.945554 95.319771 485.188754-52.964206 54.362697-47.914423 89.684846-123.011657 100.755749-201.450057 11.076754-78.488137-2.431269-158.041234-42.773943-214.955154l-1.000594-1.410195-0.643658-1.606217C791.663177 168.7552 662.308571 93.622857 520.777143 93.622857c-96.50176 0-167.979886 16.95744-221.991497 55.471543z" fill="#5E3424"></path>
|
||||
<path d="M839.890651 729.924754c-10.140526 12.925806-21.272869 24.833463-33.356068 35.477212-169.688503 149.460114-389.0176 100.954697-486.87104 53.537645-35.313371-17.109577-93.30688-48.47616-137.537829-100.691382-6.243474 5.605669-12.797074 8.902949-19.502811 8.987794C123.377371 727.727543 12.264594 582.275657 24.868571 495.908571c12.603977-86.367086 87.616366-200.074971 127.859566-248.60672 21.31968-25.717029 57.943771-39.532251 88.82176-46.226285C301.8752 121.990583 390.278583 90.697143 520.651337 90.697143c102.294674 0 198.094263 38.958811 270.093166 124.70272 31.963429 6.81984 72.139337 21.638583 94.380617 49.748846 39.122651 49.43872 108.593737 171.165989 119.219931 257.799314 10.626194 86.633326-100.861074 223.17056-140.086125 221.783771-8.586971-0.304274-16.805303-5.87776-24.368275-14.80704z" fill="#FDC57E"></path>
|
||||
<path d="M303.47264 483.16416c32.858697 0 59.491474-13.016503 59.491474-29.069897 0-16.05632-26.632777-29.069897-59.491474-29.069897-32.855771 0-59.491474 13.013577-59.491474 29.069897 0 16.053394 26.635703 29.069897 59.491474 29.069897z m429.962971 0c-32.855771 0-59.491474-13.016503-59.491474-29.069897 0-16.05632 26.635703-29.069897 59.491474-29.069897s59.491474 13.013577 59.491475 29.069897c0 16.053394-26.635703 29.069897-59.491475 29.069897z" fill="#F79A99"></path>
|
||||
<path d="M635.991771 396.589349c-3.847314 21.723429 11.465874 42.5984 34.2016 46.621257 46.855314 3.554743 47.0016-5.269211 47.244435-20.146469 0.06144-3.636663 0.125806-7.633189 0.88064-11.901806 3.847314-21.723429-11.465874-42.595474-34.2016-46.621257-22.7328-4.022857-44.280686 10.324846-48.125075 32.048275z m-231.438628 0.257462c3.826834 21.621029-11.413211 42.3936-34.03776 46.398903-48.397166 3.434789-48.040229-4.795246-47.425829-18.897188 0.169691-3.920457 0.359863-8.2944-0.47104-12.998949-3.82976-21.618103 11.410286-42.3936 34.03776-46.398903 22.624549-4.005303 44.070034 10.275109 47.896869 31.896137zM585.142857 475.314469c0 24.810057-31.4368 60.407223-70.217143 60.407222s-70.217143-35.597166-70.217143-60.407222c0-24.807131 31.4368-44.918491 70.217143-44.918492s70.217143 20.11136 70.217143 44.918492z m91.539749 66.358125a11.702857 11.702857 0 0 0-22.165212-7.522011c-4.174994 12.299703-16.129463 21.723429-32.762148 26.790766-16.52736 5.035154-35.210971 4.903497-48.88576 0.345234-39.105097-13.034057-78.336-17.197349-127.253943 0.067291-21.044663 7.428389-36.735269 3.42016-47.987566-3.560594-11.79648-7.320137-19.186834-18.26816-21.87264-24.508709a11.702857 11.702857 0 0 0-21.498148 9.254035c3.107109 7.223589 9.35936 17.048137 18.797714 25.793097l0.029257 0.260388c2.402011 20.892526 17.747383 61.78816 41.466149 97.335589 23.461303 35.16416 57.572206 68.742583 98.912548 68.742583 52.042606 0 88.028891-35.091017 110.477897-72.566492 11.299109-18.865006 19.47648-38.783269 24.836389-56.226377 4.332983-14.099017 6.948571-26.983863 7.767771-36.641645 8.961463-6.9632 16.231863-16.059246 20.137692-27.563155z" fill="#000000"></path>
|
||||
<path d="M511.596251 593.92c-53.642971 0-81.051063 23.704137-93.219108 41.056549 10.24 21.530331 49.2544 74.693486 87.771428 77.118902 59.377371 3.736137 87.771429-39.497143 106.788572-77.118902-10.140526-15.550171-45.231543-41.056549-101.340892-41.056549z" fill="#FF8F8E"></path>
|
||||
<path d="M495.57504 457.005349c0.816274 2.481006-3.408457 6.10304-9.438354 8.086674-6.029897 1.983634-11.577051 1.579886-12.396252-0.90112-0.816274-2.483931 3.408457-6.10304 9.438355-8.0896 6.026971-1.983634 11.577051-1.579886 12.396251 0.904046z" fill="#FFFFFF" opacity=".6"></path>
|
||||
<path d="M521.865509 415.796663c-30.462537-0.453486-60.439406 4.344686-79.17568 13.437806a8.777143 8.777143 0 1 1-7.665372-15.79008c22.2208-10.787109 55.310629-15.673051 87.104366-15.199086 31.694263 0.473966 64.257463 6.30784 85.076846 18.768457a8.777143 8.777143 0 0 1-9.017052 15.061577c-16.890149-10.108343-45.764023-15.819337-76.323108-16.278674z" fill="#480D21" opacity=".2"></path>
|
||||
<path d="M374.491429 406.674286a8.777143 8.777143 0 1 0 0-17.554286 8.777143 8.777143 0 0 0 0 17.554286z m291.108571 0c-5.655406 0-10.24-3.929234-10.24-8.777143s4.584594-8.777143 10.24-8.777143 10.24 3.929234 10.24 8.777143-4.584594 8.777143-10.24 8.777143z" fill="#FFFFFF"></path>
|
||||
<path d="M259.42016 216.49408a14.628571 14.628571 0 0 0-0.991817-29.239589c-29.789623 1.009371-86.185691 6.158629-122.801006 50.316435-20.711131 24.976823-50.029714 66.37568-75.808183 112.511268-25.646811 45.89568-48.590263 97.87392-55.278445 143.714012-3.639589 24.935863 1.7408 52.800366 11.401508 79.652571 9.736777 27.065783 24.265874 54.324663 40.316343 78.572983 16.041691 24.230766 33.911954 45.924937 50.623634 61.717943 8.338286 7.881874 16.685349 14.58176 24.634515 19.382857 7.595154 4.58752 16.471771 8.45824 25.453714 8.344137 16.699977-0.207726 29.9008-11.799406 39.292343-23.765577 9.856731-12.560091 18.320823-29.052343 25.131885-46.030263a329.619749 329.619749 0 0 0 15.910035-52.086491c3.531337-16.407406 5.46816-32.250149 4.637257-44.099292-0.643657-9.201371-2.595109-23.353051-4.827429-39.541028l-0.930377-6.743772c-2.653623-19.324343-5.608594-41.577326-7.624411-63.830308-2.018743-22.320274-3.048594-44.19584-1.971932-62.794606 1.114697-19.227794 4.38272-32.4608 9.017052-39.46496a14.628571 14.628571 0 0 0-24.400457-16.141166c-9.17504 13.867886-12.659566 33.841737-13.824 53.912137-1.199543 20.696503-0.032183 44.210469 2.042148 67.124663 2.080183 22.984411 5.117074 45.81376 7.776549 65.176137l0.912823 6.629669v0.002926c2.282057 16.553691 4.07552 29.576046 4.646034 37.712457 0.544183 7.799954-0.743131 20.512183-4.05504 35.90144a300.397714 300.397714 0 0 1-14.464732 47.352686c-6.269806 15.632091-13.508023 29.321509-20.992 38.856411-7.949166 10.128823-13.724526 12.539611-16.644388 12.57472-0.833829 0.011703-4.01408-0.544183-9.959132-4.134034-5.588114-3.373349-12.258743-8.6016-19.6608-15.599909-14.774857-13.961509-31.255406-33.838811-46.32576-56.60672-15.061577-21.808274-28.402834-46.077074-37.185828-69.8368-8.856137-23.94112-13.080869-46.281874-10.825142-64.687543-4.991269-40.679131-24.906606-90.237806-49.108114-136.534309-24.075703-46.050743-51.606674-87.399863-70.541897-111.332205-27.11552-34.265966-75.524389-43.019703-104.357303-44.658103z" fill="#5E3424"></path>
|
||||
<path d="M251.12576 932.603611c-21.079771 10.011794-63.362194 19.043474-63.868343-24.92416-0.631954-54.956617 25.295726-159.120823 135.960869-130.363977 110.665143 28.756846 122.681051 114.389577 117.619565 130.363977-5.05856 15.977326-15.807634 38.344411-51.22048 24.92416-8.64256 21.302126-35.161234 53.935543-72.092525 14.058058-14.122423 12.568869-47.174217 27.352503-66.399086-14.058058z m496.88576-1.930971c20.594103 9.710446 61.905189 18.467109 62.399634-24.1664 0.617326-53.291886-24.713509-154.299246-132.83328-126.414263-108.122697 27.884983-119.860663 110.922606-114.919131 126.414263 4.944457 15.491657 15.447771 37.179977 50.044343 24.1664 8.443611 20.655543 34.353737 52.302994 70.433645 13.633829 13.797669 12.188526 46.091703 26.5216 64.874789-13.633829z" fill="#FDC57E"></path>
|
||||
<path d="M193.108846 909.490469c-0.321829-27.408091 6.190811-66.053851 25.424457-93.625783 9.417874-13.502171 21.66784-24.066926 37.557394-29.821806 15.910034-5.760731 36.746971-7.159223 64.093623-0.125806 55.565166 14.289189 85.117806 42.247314 100.401737 67.443566 7.738514 12.75904 11.942766 25.017783 13.917623 34.798446 0.988891 4.891794 1.395566 9.040457 1.442377 12.200228 0.049737 3.177326-0.269166 4.66944-0.304274 4.830355l-0.002926 0.014628c-2.586331 8.077897-5.699291 14.309669-10.093714 17.627429-3.13344 2.366903-9.824549 5.412571-25.597074-0.500297l-13.285669-4.985418-5.38624 13.130606c-4.008229 9.783589-11.495131 20.087954-19.8656 24.011337-3.662994 1.717394-7.59808 2.29376-12.317257 0.968412-5.0176-1.407269-11.998354-5.286766-20.667246-14.552503l-9.698743-10.359954-10.6496 9.376914c-6.047451 5.3248-15.389257 10.266331-23.885531 10.327771a19.090286 19.090286 0 0 1-11.430766-3.548891c-3.856091-2.688731-8.434834-7.671223-12.756114-16.884297l-6.220069-13.253486-13.247634 6.22592c-10.187337 4.789394-23.990857 8.484571-34.023131 6.998309-4.578743-0.67584-7.3728-2.270354-9.169189-4.376869-1.831497-2.153326-4.131109-6.61504-4.236434-15.918811z m134.363428-151.908938c-31.80544-8.177371-58.801006-7.20896-81.340708 0.950858-22.557257 8.168594-39.380114 23.08096-51.594972 40.594285-24.031817 34.453211-31.041829 79.9744-30.684891 110.706103 0.16384 13.952731 3.718583 25.737509 11.220114 34.543909 7.53664 8.850286 17.554286 12.928731 27.15648 14.350628 12.931657 1.916343 26.723474-0.687543 38.060617-4.426605 4.599223 6.831543 9.859657 12.299703 15.746195 16.40448a48.341577 48.341577 0 0 0 28.367725 8.800548c12.141714-0.087771 23.288686-4.411977 32.042423-9.654857 8.086674 6.805211 16.334263 11.416137 24.745692 13.777189 11.989577 3.361646 23.12192 1.811017 32.636342-2.647772 12.843886-6.018194 22.28224-17.033509 28.534492-27.48416 16.372297 3.505006 30.055863 0.810423 40.813714-7.314286 12.170971-9.192594 17.507474-23.238949 20.327863-32.062902 2.489783-7.773623 2.144549-19.549623-0.321829-31.755703-2.606811-12.911177-7.995977-28.370651-17.580617-44.172435-19.362377-31.92832-55.386697-64.473966-118.12864-80.60928z m480.033646 151.908938c0.318903-27.408091-6.193737-66.053851-25.424457-93.625783-9.417874-13.502171-21.670766-24.066926-37.56032-29.821806-15.910034-5.760731-36.744046-7.159223-64.093623-0.125806-55.56224 14.289189-85.117806 42.247314-100.398811 67.443566-7.738514 12.75904-11.942766 25.017783-13.920549 34.798446-0.988891 4.891794-1.39264 9.040457-1.442377 12.200228-0.049737 3.177326 0.272091 4.672366 0.3072 4.830355v0.014628c2.586331 8.077897 5.702217 14.309669 10.093714 17.627429 3.13344 2.366903 9.827474 5.412571 25.597074-0.500297l13.288595-4.985418 5.383314 13.130606c4.011154 9.783589 11.495131 20.087954 19.8656 24.011337 3.662994 1.717394 7.59808 2.29376 12.317257 0.968412 5.020526-1.407269 11.998354-5.286766 20.670172-14.552503l9.698742-10.359954 10.6496 9.376914c6.044526 5.3248 15.386331 10.266331 23.885532 10.327771a19.096137 19.096137 0 0 0 11.430766-3.548891c3.856091-2.688731 8.434834-7.671223 12.756114-16.884297l6.217143-13.253486 13.25056 6.22592c10.187337 4.789394 23.990857 8.484571 34.020205 6.998309 4.581669-0.67584 7.375726-2.270354 9.172115-4.376869 1.831497-2.153326 4.128183-6.61504 4.236434-15.918811z m-134.363429-151.908938c31.80544-8.177371 58.79808-7.20896 81.340709 0.950858 22.557257 8.168594 39.377189 23.08096 51.592046 40.594285 24.034743 34.453211 31.044754 79.9744 30.684891 110.706103-0.160914 13.952731-3.718583 25.737509-11.217188 34.543909-7.53664 8.850286-17.554286 12.928731-27.15648 14.350628-12.934583 1.916343-26.723474-0.687543-38.060618-4.426605-4.599223 6.831543-9.859657 12.299703-15.746194 16.40448a48.35328 48.35328 0 0 1-28.367726 8.800548c-12.141714-0.087771-23.288686-4.411977-32.042422-9.654857-8.0896 6.805211-16.334263 11.416137-24.748618 13.777189-11.986651 3.361646-23.118994 1.811017-32.633417-2.647772-12.843886-6.018194-22.285166-17.033509-28.534491-27.48416-16.375223 3.505006-30.055863 0.810423-40.81664-7.314286-12.168046-9.192594-17.504549-23.238949-20.327863-32.062902-2.486857-7.773623-2.141623-19.549623 0.321829-31.755703 2.609737-12.911177 7.995977-28.370651 17.580617-44.172435 19.365303-31.92832 55.386697-64.473966 118.131565-80.60928z" fill="#5E3424"></path>
|
||||
</svg>''',
|
||||
width: 32,
|
||||
height: 32,
|
||||
),
|
||||
const SizedBox(width: 8), // 图标和文字间距
|
||||
// 提示文字
|
||||
Text(widget.message, style: const TextStyle(fontSize: 14, color: Colors.black87)),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user