Merge remote-tracking branch 'origin/develop_liyi' into develop_liyi
This commit is contained in:
commit
e1943d26d9
@ -55,11 +55,11 @@ FutureOr<void> main() async {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
//ToDo: 增加对讲调试、正式可删除
|
// //ToDo: 增加对讲调试、正式可删除
|
||||||
runApp(MultiProvider(providers: [
|
// runApp(MultiProvider(providers: [
|
||||||
ChangeNotifierProvider(create: (_) => DebugInfoModel()),
|
// ChangeNotifierProvider(create: (_) => DebugInfoModel()),
|
||||||
], child: MyApp(isLogin: isLogin)));
|
// ], child: MyApp(isLogin: isLogin)));
|
||||||
// runApp(MyApp(isLogin: isLogin));
|
runApp(MyApp(isLogin: isLogin));
|
||||||
}, onException: (FlutterErrorDetails details) async {
|
}, onException: (FlutterErrorDetails details) async {
|
||||||
debugPrint("FlutterErrorDetails $details");
|
debugPrint("FlutterErrorDetails $details");
|
||||||
});
|
});
|
||||||
|
|||||||
@ -225,19 +225,19 @@ class StartChartManage {
|
|||||||
/// 设置数据接收回调
|
/// 设置数据接收回调
|
||||||
_onReceiveData(_udpSocket!, Get.context!);
|
_onReceiveData(_udpSocket!, Get.context!);
|
||||||
|
|
||||||
//ToDo: 增加对讲调试、正式可删除
|
// //ToDo: 增加对讲调试、正式可删除
|
||||||
// 每秒重置数据速率
|
// // 每秒重置数据速率
|
||||||
Timer.periodic(Duration(seconds: 1), (Timer t) {
|
// Timer.periodic(Duration(seconds: 1), (Timer t) {
|
||||||
UdpTalkDataHandler().resetDataRates();
|
// UdpTalkDataHandler().resetDataRates();
|
||||||
// 更新调试信息
|
// // 更新调试信息
|
||||||
Provider.of<DebugInfoModel>(Get.context!, listen: false)
|
// Provider.of<DebugInfoModel>(Get.context!, listen: false)
|
||||||
.updateDebugInfo(
|
// .updateDebugInfo(
|
||||||
UdpTalkDataHandler().getLastRecvDataRate() ~/ 1024, // 转换为KB
|
// UdpTalkDataHandler().getLastRecvDataRate() ~/ 1024, // 转换为KB
|
||||||
UdpTalkDataHandler().getLastRecvPacketCount(),
|
// UdpTalkDataHandler().getLastRecvPacketCount(),
|
||||||
UdpTalkDataHandler().getLastSendDataRate() ~/ 1024, // 转换为KB
|
// UdpTalkDataHandler().getLastSendDataRate() ~/ 1024, // 转换为KB
|
||||||
UdpTalkDataHandler().getLastSendPacketCount(),
|
// UdpTalkDataHandler().getLastSendPacketCount(),
|
||||||
);
|
// );
|
||||||
});
|
// });
|
||||||
}).catchError((error) {
|
}).catchError((error) {
|
||||||
_log(text: 'Failed to bind UDP socket: $error');
|
_log(text: 'Failed to bind UDP socket: $error');
|
||||||
});
|
});
|
||||||
@ -983,16 +983,16 @@ class StartChartManage {
|
|||||||
if (dg?.data != null) {
|
if (dg?.data != null) {
|
||||||
final deserialize = ScpMessage.deserialize(dg!.data);
|
final deserialize = ScpMessage.deserialize(dg!.data);
|
||||||
|
|
||||||
//ToDo: 增加对讲调试、正式可删除
|
// //ToDo: 增加对讲调试、正式可删除
|
||||||
UdpTalkDataHandler().updateRecvDataRate(dg.data.length);
|
// UdpTalkDataHandler().updateRecvDataRate(dg.data.length);
|
||||||
|
|
||||||
// 更新调试信息
|
// // 更新调试信息
|
||||||
Provider.of<DebugInfoModel>(context, listen: false).updateDebugInfo(
|
// Provider.of<DebugInfoModel>(context, listen: false).updateDebugInfo(
|
||||||
UdpTalkDataHandler().getLastRecvDataRate() ~/ 1024, // 转换为KB
|
// UdpTalkDataHandler().getLastRecvDataRate() ~/ 1024, // 转换为KB
|
||||||
UdpTalkDataHandler().getLastRecvPacketCount(),
|
// UdpTalkDataHandler().getLastRecvPacketCount(),
|
||||||
UdpTalkDataHandler().getLastSendDataRate() ~/ 1024, // 转换为KB
|
// UdpTalkDataHandler().getLastSendDataRate() ~/ 1024, // 转换为KB
|
||||||
UdpTalkDataHandler().getLastSendPacketCount(),
|
// UdpTalkDataHandler().getLastSendPacketCount(),
|
||||||
);
|
// );
|
||||||
|
|
||||||
if (deserialize != null) {
|
if (deserialize != null) {
|
||||||
// 处理返回数据
|
// 处理返回数据
|
||||||
|
|||||||
@ -1,46 +1,33 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:ffi';
|
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'dart:math';
|
|
||||||
import 'dart:typed_data';
|
|
||||||
import 'dart:ui' as ui;
|
import 'dart:ui' as ui;
|
||||||
|
import 'dart:math'; // Import the math package to use sqrt
|
||||||
|
|
||||||
import 'package:flutter/rendering.dart';
|
import 'package:flutter/rendering.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
|
||||||
import 'package:flutter_pcm_sound/flutter_pcm_sound.dart';
|
import 'package:flutter_pcm_sound/flutter_pcm_sound.dart';
|
||||||
import 'package:flutter_screen_recording/flutter_screen_recording.dart';
|
import 'package:flutter_screen_recording/flutter_screen_recording.dart';
|
||||||
import 'package:flutter_voice_processor/flutter_voice_processor.dart';
|
import 'package:flutter_voice_processor/flutter_voice_processor.dart';
|
||||||
import 'package:gallery_saver/gallery_saver.dart';
|
import 'package:gallery_saver/gallery_saver.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:get_storage/get_storage.dart';
|
|
||||||
import 'package:image_gallery_saver/image_gallery_saver.dart';
|
import 'package:image_gallery_saver/image_gallery_saver.dart';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'package:permission_handler/permission_handler.dart';
|
import 'package:permission_handler/permission_handler.dart';
|
||||||
import 'package:star_lock/app_settings/app_settings.dart';
|
import 'package:star_lock/app_settings/app_settings.dart';
|
||||||
import 'package:star_lock/blue/blue_manage.dart';
|
|
||||||
import 'package:star_lock/blue/io_protocol/io_openLock.dart';
|
|
||||||
import 'package:star_lock/blue/io_tool/io_tool.dart';
|
|
||||||
import 'package:star_lock/login/login/entity/LoginEntity.dart';
|
import 'package:star_lock/login/login/entity/LoginEntity.dart';
|
||||||
import 'package:star_lock/main/lockDetail/lockDetail/lockDetail_logic.dart';
|
import 'package:star_lock/main/lockDetail/lockDetail/lockDetail_logic.dart';
|
||||||
import 'package:star_lock/main/lockDetail/lockDetail/lockDetail_state.dart';
|
import 'package:star_lock/main/lockDetail/lockDetail/lockDetail_state.dart';
|
||||||
import 'package:star_lock/main/lockDetail/lockDetail/lockNetToken_entity.dart';
|
import 'package:star_lock/main/lockDetail/lockDetail/lockNetToken_entity.dart';
|
||||||
import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart';
|
import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart';
|
||||||
import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSet_logic.dart';
|
|
||||||
import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSet_state.dart';
|
|
||||||
import 'package:star_lock/main/lockMian/entity/lockListInfo_entity.dart';
|
import 'package:star_lock/main/lockMian/entity/lockListInfo_entity.dart';
|
||||||
import 'package:star_lock/main/lockMian/lockList/lockList_logic.dart';
|
|
||||||
import 'package:star_lock/network/api_repository.dart';
|
import 'package:star_lock/network/api_repository.dart';
|
||||||
import 'package:star_lock/talk/call/g711.dart';
|
import 'package:star_lock/talk/call/g711.dart';
|
||||||
import 'package:star_lock/talk/starChart/constant/talk_status.dart';
|
import 'package:star_lock/talk/starChart/constant/talk_status.dart';
|
||||||
import 'package:star_lock/talk/starChart/proto/talk_data.pb.dart';
|
import 'package:star_lock/talk/starChart/proto/talk_data.pb.dart';
|
||||||
import 'package:star_lock/talk/starChart/proto/talk_data.pbenum.dart';
|
|
||||||
import 'package:star_lock/talk/starChart/proto/talk_expect.pb.dart';
|
import 'package:star_lock/talk/starChart/proto/talk_expect.pb.dart';
|
||||||
import 'package:star_lock/talk/starChart/star_chart_manage.dart';
|
import 'package:star_lock/talk/starChart/star_chart_manage.dart';
|
||||||
import 'package:star_lock/talk/starChart/views/talkView/talk_view_state.dart';
|
import 'package:star_lock/talk/starChart/views/talkView/talk_view_state.dart';
|
||||||
import 'package:star_lock/tools/bugly/bugly_tool.dart';
|
import 'package:star_lock/tools/bugly/bugly_tool.dart';
|
||||||
import 'package:star_lock/tools/commonDataManage.dart';
|
|
||||||
import 'package:star_lock/tools/storage.dart';
|
|
||||||
|
|
||||||
import '../../../../tools/baseGetXController.dart';
|
import '../../../../tools/baseGetXController.dart';
|
||||||
|
|
||||||
@ -68,7 +55,7 @@ class TalkViewLogic extends BaseGetXController {
|
|||||||
if (Platform.isAndroid) {
|
if (Platform.isAndroid) {
|
||||||
FlutterPcmSound.setFeedThreshold(1024); // Android 平台的特殊处理
|
FlutterPcmSound.setFeedThreshold(1024); // Android 平台的特殊处理
|
||||||
} else {
|
} else {
|
||||||
FlutterPcmSound.setFeedThreshold(sampleRate ~/ 32); // 非 Android 平台的处理
|
FlutterPcmSound.setFeedThreshold(2000); // 非 Android 平台的处理
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -621,6 +608,54 @@ class TalkViewLogic extends BaseGetXController {
|
|||||||
}
|
}
|
||||||
return processedList;
|
return processedList;
|
||||||
}
|
}
|
||||||
|
//test测试降噪算法
|
||||||
|
// List<int> preprocessAudio(List<int> pcmList) {
|
||||||
|
// final List<int> processedList = [];
|
||||||
|
// final int windowSize = 5;
|
||||||
|
// final int thresholdFactor = 2; // 动态阈值的倍数
|
||||||
|
|
||||||
|
// for (int i = 0; i < pcmList.length; i++) {
|
||||||
|
// int pcmVal = pcmList[i];
|
||||||
|
|
||||||
|
// // 计算当前窗口内的标准差
|
||||||
|
// int sum = 0;
|
||||||
|
// int count = 0;
|
||||||
|
// for (int j = i; j < i + windowSize && j < pcmList.length; j++) {
|
||||||
|
// sum += pcmList[j];
|
||||||
|
// count++;
|
||||||
|
// }
|
||||||
|
// int mean = sum ~/ count;
|
||||||
|
|
||||||
|
// // 计算标准差
|
||||||
|
// int varianceSum = 0;
|
||||||
|
// for (int j = i; j < i + windowSize && j < pcmList.length; j++) {
|
||||||
|
// varianceSum += (pcmList[j] - mean) * (pcmList[j] - mean);
|
||||||
|
// }
|
||||||
|
// double standardDeviation =
|
||||||
|
// sqrt(varianceSum / count); // Use sqrt from dart:math
|
||||||
|
|
||||||
|
// // 动态阈值
|
||||||
|
// int dynamicThreshold = (standardDeviation * thresholdFactor).toInt();
|
||||||
|
|
||||||
|
// // 动态降噪:如果信号小于动态阈值,则设为0
|
||||||
|
// if (pcmVal.abs() < dynamicThreshold) {
|
||||||
|
// pcmVal = 0;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // 移动平均滤波器
|
||||||
|
// int sumFilter = 0;
|
||||||
|
// int countFilter = 0;
|
||||||
|
// for (int j = i; j < i + windowSize && j < pcmList.length; j++) {
|
||||||
|
// sumFilter += pcmList[j];
|
||||||
|
// countFilter++;
|
||||||
|
// }
|
||||||
|
// int average = sumFilter ~/ countFilter;
|
||||||
|
|
||||||
|
// processedList.add(average);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return processedList;
|
||||||
|
// }
|
||||||
|
|
||||||
List<int> listLinearToALaw(List<int> pcmList) {
|
List<int> listLinearToALaw(List<int> pcmList) {
|
||||||
final List<int> aLawList = [];
|
final List<int> aLawList = [];
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import 'dart:typed_data';
|
|||||||
import 'dart:ui';
|
import 'dart:ui';
|
||||||
|
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/rendering.dart';
|
import 'package:flutter/rendering.dart';
|
||||||
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
||||||
@ -54,7 +55,7 @@ class ShowCupertinoAlertView {
|
|||||||
child: Text(
|
child: Text(
|
||||||
'${"开启微信接收报警消息需要先关注".tr}$qrCodeText${"微信公众号,请保存二维码并使用微信扫一扫设置".tr}',
|
'${"开启微信接收报警消息需要先关注".tr}$qrCodeText${"微信公众号,请保存二维码并使用微信扫一扫设置".tr}',
|
||||||
style:
|
style:
|
||||||
TextStyle(fontSize: 24.sp, color: Colors.black),
|
TextStyle(fontSize: 24.sp, color: Colors.black),
|
||||||
)),
|
)),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 60.h,
|
height: 60.h,
|
||||||
@ -159,8 +160,8 @@ class ShowCupertinoAlertView {
|
|||||||
//发送需要实名认证的电子钥匙时身份信息确认框
|
//发送需要实名认证的电子钥匙时身份信息确认框
|
||||||
void realNameIDCardInfoComfirmAlert(
|
void realNameIDCardInfoComfirmAlert(
|
||||||
{required String getNameStr,
|
{required String getNameStr,
|
||||||
required String getIDCardStr,
|
required String getIDCardStr,
|
||||||
required VoidCallback onConfirm}) {
|
required VoidCallback onConfirm}) {
|
||||||
showCupertinoDialog(
|
showCupertinoDialog(
|
||||||
context: Get.context!,
|
context: Get.context!,
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
@ -340,7 +341,7 @@ class ShowCupertinoAlertView {
|
|||||||
),
|
),
|
||||||
CupertinoDialogAction(
|
CupertinoDialogAction(
|
||||||
child:
|
child:
|
||||||
Text('购买'.tr, style: TextStyle(color: AppColors.mainColor)),
|
Text('购买'.tr, style: TextStyle(color: AppColors.mainColor)),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
Get.back();
|
Get.back();
|
||||||
sureClick();
|
sureClick();
|
||||||
@ -391,7 +392,7 @@ class ShowCupertinoAlertView {
|
|||||||
),
|
),
|
||||||
CupertinoDialogAction(
|
CupertinoDialogAction(
|
||||||
child:
|
child:
|
||||||
Text('删除'.tr, style: TextStyle(color: AppColors.mainColor)),
|
Text('删除'.tr, style: TextStyle(color: AppColors.mainColor)),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
Get.back();
|
Get.back();
|
||||||
clearClick();
|
clearClick();
|
||||||
@ -406,8 +407,8 @@ class ShowCupertinoAlertView {
|
|||||||
//可视门铃二维码弹窗
|
//可视门铃二维码弹窗
|
||||||
void showVisualDoorbellCodeAlert(
|
void showVisualDoorbellCodeAlert(
|
||||||
{required BuildContext widgetContext,
|
{required BuildContext widgetContext,
|
||||||
required String qrCodeUrl,
|
required String qrCodeUrl,
|
||||||
required String qrCodeText}) {
|
required String qrCodeText}) {
|
||||||
showCupertinoModalPopup(
|
showCupertinoModalPopup(
|
||||||
context: widgetContext,
|
context: widgetContext,
|
||||||
builder: (BuildContext context) {
|
builder: (BuildContext context) {
|
||||||
@ -447,7 +448,7 @@ class ShowCupertinoAlertView {
|
|||||||
child: Text(
|
child: Text(
|
||||||
qrCodeText,
|
qrCodeText,
|
||||||
style:
|
style:
|
||||||
TextStyle(fontSize: 24.sp, color: Colors.black),
|
TextStyle(fontSize: 24.sp, color: Colors.black),
|
||||||
)),
|
)),
|
||||||
Container(
|
Container(
|
||||||
margin: EdgeInsets.only(left: 60.w, right: 60.w),
|
margin: EdgeInsets.only(left: 60.w, right: 60.w),
|
||||||
@ -456,21 +457,33 @@ class ShowCupertinoAlertView {
|
|||||||
onClick: () async {
|
onClick: () async {
|
||||||
// 截图并保存到相册
|
// 截图并保存到相册
|
||||||
try {
|
try {
|
||||||
final RenderRepaintBoundary boundary =
|
final Color qrcodeStyleColor =
|
||||||
_repaintBoundaryKey.currentContext!
|
defaultTargetPlatform == TargetPlatform.iOS
|
||||||
.findRenderObject()!
|
? const Color(0xFF000000)
|
||||||
as RenderRepaintBoundary;
|
: Colors.white;
|
||||||
final image = await boundary.toImage();
|
final QrPainter painter = QrPainter(
|
||||||
final ByteData? byteData = await image
|
data: qrCodeUrl,
|
||||||
.toByteData(format: ImageByteFormat.png);
|
version: QrVersions.auto,
|
||||||
|
gapless: false,
|
||||||
|
errorCorrectionLevel: QrErrorCorrectLevel.L,
|
||||||
|
eyeStyle: QrEyeStyle(
|
||||||
|
eyeShape: QrEyeShape.square,
|
||||||
|
color: qrcodeStyleColor,
|
||||||
|
),
|
||||||
|
dataModuleStyle: QrDataModuleStyle(
|
||||||
|
dataModuleShape: QrDataModuleShape.square,
|
||||||
|
color: qrcodeStyleColor,
|
||||||
|
));
|
||||||
|
final ByteData? byteData =
|
||||||
|
await painter.toImageData(600.0,
|
||||||
|
format: ImageByteFormat.png);
|
||||||
final Uint8List pngBytes =
|
final Uint8List pngBytes =
|
||||||
byteData!.buffer.asUint8List();
|
byteData!.buffer.asUint8List();
|
||||||
|
|
||||||
final result =
|
final result =
|
||||||
await ImageGallerySaver.saveImage(
|
await ImageGallerySaver.saveImage(
|
||||||
Uint8List.fromList(pngBytes),
|
Uint8List.fromList(pngBytes),
|
||||||
quality: 100,
|
quality: 100,
|
||||||
name: 'qr_code');
|
name: 'qr_code');
|
||||||
if (result['isSuccess']) {
|
if (result['isSuccess']) {
|
||||||
EasyLoading.showToast('保存成功'.tr);
|
EasyLoading.showToast('保存成功'.tr);
|
||||||
} else {
|
} else {
|
||||||
@ -498,113 +511,113 @@ class ShowCupertinoAlertView {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// //邮件通知类型选择弹窗
|
// //邮件通知类型选择弹窗
|
||||||
// void emailNotifyTypeSlectAlert() {
|
// void emailNotifyTypeSlectAlert() {
|
||||||
// showCupertinoDialog(
|
// showCupertinoDialog(
|
||||||
// context: Get.context!,
|
// context: Get.context!,
|
||||||
// builder: (BuildContext context) {
|
// builder: (BuildContext context) {
|
||||||
// return CupertinoAlertDialog(
|
// return CupertinoAlertDialog(
|
||||||
// title: const Text('类型选择'),
|
// title: const Text('类型选择'),
|
||||||
// content: Column(
|
// content: Column(
|
||||||
// children: <Widget>[
|
// children: <Widget>[
|
||||||
// Padding(
|
// Padding(
|
||||||
// padding: EdgeInsets.only(
|
// padding: EdgeInsets.only(
|
||||||
// left: 10.w, top: 8.h, bottom: 16.h, right: 10.w),
|
// left: 10.w, top: 8.h, bottom: 16.h, right: 10.w),
|
||||||
// child: Align(
|
// child: Align(
|
||||||
// alignment: Alignment.centerLeft,
|
// alignment: Alignment.centerLeft,
|
||||||
// child: Text('请选择要使用哪种类型', style: TextStyle(fontSize: 20.sp)),
|
// child: Text('请选择要使用哪种类型', style: TextStyle(fontSize: 20.sp)),
|
||||||
// ),
|
// ),
|
||||||
// ),
|
// ),
|
||||||
// GestureDetector(
|
// GestureDetector(
|
||||||
// onTap: () {
|
// onTap: () {
|
||||||
// setState(() {
|
// setState(() {
|
||||||
// isSystemEmailSelected = true;
|
// isSystemEmailSelected = true;
|
||||||
// });
|
// });
|
||||||
// },
|
// },
|
||||||
// child: Row(
|
// child: Row(
|
||||||
// mainAxisAlignment: MainAxisAlignment.start,
|
// mainAxisAlignment: MainAxisAlignment.start,
|
||||||
// crossAxisAlignment: CrossAxisAlignment.center,
|
// crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
// children: <Widget>[
|
// children: <Widget>[
|
||||||
// Image.asset(
|
// Image.asset(
|
||||||
// isSystemEmailSelected
|
// isSystemEmailSelected
|
||||||
// ? 'images/icon_round_select.png'
|
// ? 'images/icon_round_select.png'
|
||||||
// : 'images/icon_round_unSelect.png',
|
// : 'images/icon_round_unSelect.png',
|
||||||
// width: 30.w,
|
// width: 30.w,
|
||||||
// height: 30.w,
|
// height: 30.w,
|
||||||
// ),
|
// ),
|
||||||
// Padding(
|
// Padding(
|
||||||
// padding: EdgeInsets.only(left: 10.w),
|
// padding: EdgeInsets.only(left: 10.w),
|
||||||
// child: Text(
|
// child: Text(
|
||||||
// '系统邮件(推荐)',
|
// '系统邮件(推荐)',
|
||||||
// style: TextStyle(
|
// style: TextStyle(
|
||||||
// fontSize: 22.sp, fontWeight: FontWeight.bold),
|
// fontSize: 22.sp, fontWeight: FontWeight.bold),
|
||||||
// ),
|
// ),
|
||||||
// ),
|
// ),
|
||||||
// ],
|
// ],
|
||||||
// ),
|
// ),
|
||||||
// ),
|
// ),
|
||||||
// Padding(
|
// Padding(
|
||||||
// padding: EdgeInsets.only(top: 6.h, left: 10.w, bottom: 10.h),
|
// padding: EdgeInsets.only(top: 6.h, left: 10.w, bottom: 10.h),
|
||||||
// child: Align(
|
// child: Align(
|
||||||
// alignment: Alignment.centerLeft,
|
// alignment: Alignment.centerLeft,
|
||||||
// child: Text(
|
// child: Text(
|
||||||
// '邮件将从软件平台直接发给用户,请根据需要在软件那里购买邮件数量',
|
// '邮件将从软件平台直接发给用户,请根据需要在软件那里购买邮件数量',
|
||||||
// style: TextStyle(fontSize: 18.sp),
|
// style: TextStyle(fontSize: 18.sp),
|
||||||
// textAlign: TextAlign.left,
|
// textAlign: TextAlign.left,
|
||||||
// ),
|
// ),
|
||||||
// ),
|
// ),
|
||||||
// ),
|
// ),
|
||||||
// GestureDetector(
|
// GestureDetector(
|
||||||
// onTap: () {
|
// onTap: () {
|
||||||
// setState(() {
|
// setState(() {
|
||||||
// isSystemEmailSelected = false;
|
// isSystemEmailSelected = false;
|
||||||
// });
|
// });
|
||||||
// },
|
// },
|
||||||
// child: Row(
|
// child: Row(
|
||||||
// mainAxisAlignment: MainAxisAlignment.start,
|
// mainAxisAlignment: MainAxisAlignment.start,
|
||||||
// crossAxisAlignment: CrossAxisAlignment.center,
|
// crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
// children: <Widget>[
|
// children: <Widget>[
|
||||||
// Image.asset(
|
// Image.asset(
|
||||||
// !isSystemEmailSelected
|
// !isSystemEmailSelected
|
||||||
// ? 'images/icon_round_select.png'
|
// ? 'images/icon_round_select.png'
|
||||||
// : 'images/icon_round_unSelect.png',
|
// : 'images/icon_round_unSelect.png',
|
||||||
// width: 30.w,
|
// width: 30.w,
|
||||||
// height: 30.w,
|
// height: 30.w,
|
||||||
// ),
|
// ),
|
||||||
// Padding(
|
// Padding(
|
||||||
// padding: EdgeInsets.only(left: 10.w),
|
// padding: EdgeInsets.only(left: 10.w),
|
||||||
// child: Text(
|
// child: Text(
|
||||||
// '个人邮件',
|
// '个人邮件',
|
||||||
// style: TextStyle(
|
// style: TextStyle(
|
||||||
// fontSize: 22.sp, fontWeight: FontWeight.bold),
|
// fontSize: 22.sp, fontWeight: FontWeight.bold),
|
||||||
// ),
|
// ),
|
||||||
// ),
|
// ),
|
||||||
// ],
|
// ],
|
||||||
// ),
|
// ),
|
||||||
// ),
|
// ),
|
||||||
// Padding(
|
// Padding(
|
||||||
// padding: EdgeInsets.only(top: 6.h, left: 10.w),
|
// padding: EdgeInsets.only(top: 6.h, left: 10.w),
|
||||||
// child: Align(
|
// child: Align(
|
||||||
// alignment: Alignment.centerLeft,
|
// alignment: Alignment.centerLeft,
|
||||||
// child: Text(
|
// child: Text(
|
||||||
// '邮件将从你的个人邮箱发给用户',
|
// '邮件将从你的个人邮箱发给用户',
|
||||||
// style: TextStyle(fontSize: 18.sp),
|
// style: TextStyle(fontSize: 18.sp),
|
||||||
// ),
|
// ),
|
||||||
// ),
|
// ),
|
||||||
// ),
|
// ),
|
||||||
// ],
|
// ],
|
||||||
// ),
|
// ),
|
||||||
// actions: <Widget>[
|
// actions: <Widget>[
|
||||||
// CupertinoDialogAction(
|
// CupertinoDialogAction(
|
||||||
// onPressed: Get.back,
|
// onPressed: Get.back,
|
||||||
// child: Text(
|
// child: Text(
|
||||||
// '确定'.tr,
|
// '确定'.tr,
|
||||||
// style: TextStyle(color: AppColors.mainColor),
|
// style: TextStyle(color: AppColors.mainColor),
|
||||||
// ),
|
// ),
|
||||||
// ),
|
// ),
|
||||||
// ],
|
// ],
|
||||||
// );
|
// );
|
||||||
// },
|
// },
|
||||||
// );
|
// );
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user