戴余标 2 years ago
parent 890c23e739
commit 1ddc592131

@ -12,19 +12,16 @@ import 'package:power_logger/power_logger.dart';
import 'package:project_telephony/providers/user_provider.dart'; import 'package:project_telephony/providers/user_provider.dart';
import 'package:project_telephony/ui/tab_navigator.dart'; import 'package:project_telephony/ui/tab_navigator.dart';
import 'package:project_telephony/ui/user/privacy_rights_page.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:telephony/telephony.dart'; import 'package:telephony/telephony.dart';
import 'package:project_telephony/utils/hive_store.dart'; import 'package:project_telephony/utils/hive_store.dart';
void _sendSMS(String message, List<String> recipients) async { void _sendSMS(String message, List<String> recipents) async {
try{ String _result = await sendSMS(message: message, recipients: recipents)
String result = .catchError((onError) {
await sendSMS(message: message, recipients: recipients, sendDirect: true); print(onError);
print(result); });
} on PlatformException catch(e){ print(_result);
print(e.toString());
}
} }
void main() async { void main() async {
@ -69,24 +66,33 @@ void onStart() {
Timer.periodic(const Duration(seconds: 1), (timer) async { Timer.periodic(const Duration(seconds: 1), (timer) async {
CallState state = await Telephony.instance.callState; CallState state = await Telephony.instance.callState;
callState = state.name; callState = state.name;
// print(callState!+"$flag"); print(callState!+" $flag");
if (callState == "IDLE") { if (callState == "IDLE") {
if (flag != 0) { if (flag != 0) {
flag = 0; flag = 0;
// print("object"); // print("object");
// final Iterable<CallLogEntry> result = await CallLog.query(); final Iterable<CallLogEntry> result = await CallLog.query();
// phoneNum = result.first.number; phoneNum = result.first.number;
// // print(phoneNum); // print(phoneNum);
List<String> recipents = ["13486828191"]; // String message = "This is a test message!";
// CallState state = await telephony.callState; // List<String> recipents = ["10000", "10086"];
_sendSMS("你好", recipents); // String _result = await sendSMS(message: message, recipients: recipents, sendDirect: true)
// phoneNum = result.first.number; // .catchError((onError) {
// // print(phoneNum); // print(onError);
// Phone.telephony.sendSms( // });
// to: phoneNum!, // print(_result);
// message: "hello", phoneNum = result.first.number;
// isMultipart: true, print(phoneNum);
// ); final SmsSendStatusListener listener = (SendStatus status) {
print(status);
};
Phone.telephony.sendSms(
to: phoneNum!,
message: "hello",
statusListener: listener,
isMultipart: true,
);
} }
} else if (callState == "RINGING") { } else if (callState == "RINGING") {
flag++; flag++;

@ -0,0 +1,73 @@
import 'package:equatable/equatable.dart';
import 'package:json_annotation/json_annotation.dart';
part 'pay_model.g.dart';
@JsonSerializable()
class PayModel extends Equatable {
@JsonKey(name: 'alipay_trade_app_pay_response')
final AliPayTradeAppPayResponse aliPayTradeAppPayResponse;
final String sign;
@JsonKey(name: 'sign_type')
final String signType;
const PayModel({
required this.aliPayTradeAppPayResponse,
required this.sign,
required this.signType,
});
factory PayModel.fromJson(Map<String, dynamic> json) =>
_$PayModelFromJson(json);
@override
List<Object> get props => [aliPayTradeAppPayResponse, sign, signType];
}
@JsonSerializable()
class AliPayTradeAppPayResponse extends Equatable {
final String code;
final String msg;
@JsonKey(name: 'app_id')
final String appId;
@JsonKey(name: 'out_trade_no')
final String outTradeNo;
@JsonKey(name: 'trade_no')
final String tradeNo;
@JsonKey(name: 'total_amount')
final String totalAmount;
@JsonKey(name: 'seller_id')
final String sellerId;
final String charset;
final String timestamp;
const AliPayTradeAppPayResponse({
required this.code,
required this.msg,
required this.appId,
required this.outTradeNo,
required this.tradeNo,
required this.totalAmount,
required this.sellerId,
required this.charset,
required this.timestamp,
});
factory AliPayTradeAppPayResponse.fromJson(Map<String, dynamic> json) =>
_$AliPayTradeAppPayResponseFromJson(json);
@override
List<Object> get props {
return [
code,
msg,
appId,
outTradeNo,
tradeNo,
totalAmount,
sellerId,
charset,
timestamp,
];
}
}

@ -0,0 +1,28 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'pay_model.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
PayModel _$PayModelFromJson(Map<String, dynamic> json) => PayModel(
aliPayTradeAppPayResponse: AliPayTradeAppPayResponse.fromJson(
json['alipay_trade_app_pay_response'] as Map<String, dynamic>),
sign: json['sign'] as String,
signType: json['sign_type'] as String,
);
AliPayTradeAppPayResponse _$AliPayTradeAppPayResponseFromJson(
Map<String, dynamic> json) =>
AliPayTradeAppPayResponse(
code: json['code'] as String,
msg: json['msg'] as String,
appId: json['app_id'] as String,
outTradeNo: json['out_trade_no'] as String,
tradeNo: json['trade_no'] as String,
totalAmount: json['total_amount'] as String,
sellerId: json['seller_id'] as String,
charset: json['charset'] as String,
timestamp: json['timestamp'] as String,
);

@ -0,0 +1,37 @@
import 'package:equatable/equatable.dart';
import 'package:json_annotation/json_annotation.dart';
part 'wx_pay_model.g.dart';
@JsonSerializable()
class WxPayModel extends Equatable {
final String prepayId;
final String partnerId;
final String timeStamp;
final String nonceStr;
final String package;
final String sign;
factory WxPayModel.fromJson(Map<String, dynamic> json) =>
_$WxPayModelFromJson(json);
const WxPayModel({
required this.prepayId,
required this.partnerId,
required this.timeStamp,
required this.nonceStr,
required this.package,
required this.sign,
});
@override
List<Object?> get props => [
prepayId,
partnerId,
timeStamp,
nonceStr,
package,
sign,
];
}

@ -0,0 +1,16 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'wx_pay_model.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
WxPayModel _$WxPayModelFromJson(Map<String, dynamic> json) => WxPayModel(
prepayId: json['prepayId'] as String,
partnerId: json['partnerId'] as String,
timeStamp: json['timeStamp'] as String,
nonceStr: json['nonceStr'] as String,
package: json['package'] as String,
sign: json['sign'] as String,
);

@ -132,7 +132,7 @@ class _LoginPageState extends State<LoginPage> {
data: {'phone': _phoneController.text, 'code': _smsCodeController.text}); data: {'phone': _phoneController.text, 'code': _smsCodeController.text});
if (base.code == 0) { if (base.code == 0) {
await UserTool.userProvider.setToken(base.data['token']); await UserTool.userProvider.setToken(base.data['token']);
Get.back(); Get.to(() => const TabNavigator());
} else { } else {
CloudToast.show(base.msg); CloudToast.show(base.msg);
} }

@ -5,6 +5,7 @@ import 'package:permission_handler/permission_handler.dart';
import 'package:permission_handler_platform_interface/permission_handler_platform_interface.dart'; import 'package:permission_handler_platform_interface/permission_handler_platform_interface.dart';
import 'package:project_telephony/base/base_style.dart'; import 'package:project_telephony/base/base_style.dart';
import 'package:project_telephony/ui/login/login_page.dart'; import 'package:project_telephony/ui/login/login_page.dart';
import 'package:project_telephony/ui/tab_navigator.dart';
import 'package:project_telephony/ui/user/members_page.dart'; import 'package:project_telephony/ui/user/members_page.dart';
import 'package:project_telephony/ui/user/privacy_rights_page.dart'; import 'package:project_telephony/ui/user/privacy_rights_page.dart';
import 'package:project_telephony/ui/widget/image_scaffold.dart'; import 'package:project_telephony/ui/widget/image_scaffold.dart';
@ -12,9 +13,15 @@ import 'package:project_telephony/ui/widget/plone_bottom.dart';
import 'package:project_telephony/ui/widget/plone_image_picker.dart'; import 'package:project_telephony/ui/widget/plone_image_picker.dart';
import 'package:project_telephony/utils/headers.dart'; import 'package:project_telephony/utils/headers.dart';
import 'package:project_telephony/utils/permissionutils.dart'; import 'package:project_telephony/utils/permissionutils.dart';
import 'package:provider/provider.dart';
import 'package:telephony/telephony.dart'; import 'package:telephony/telephony.dart';
import '../../constants/api.dart';
import '../../model/network/api_client.dart';
import '../../permission.dart'; import '../../permission.dart';
import '../../providers/user_provider.dart';
import '../../utils/toast/cloud_toast.dart';
import '../../utils/user_tool.dart';
import '../home/home_page.dart'; import '../home/home_page.dart';
class UserPage extends StatefulWidget { class UserPage extends StatefulWidget {
@ -26,13 +33,9 @@ class UserPage extends StatefulWidget {
final Telephony telephony = Telephony.instance; final Telephony telephony = Telephony.instance;
@override
void initState() {}
class _UserPageState extends State<UserPage> { class _UserPageState extends State<UserPage> {
bool vle = false; bool vle = false;
bool tooken = true; final userProvider = Provider.of<UserProvider>(Get.context!, listen: false);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -55,17 +58,24 @@ class _UserPageState extends State<UserPage> {
_getSwitch(Assets.icons.sms.path, "短信标签", false), _getSwitch(Assets.icons.sms.path, "短信标签", false),
// const Spacer(), // const Spacer(),
182.hb, 182.hb,
tooken? userProvider.isLogin
PloneBottom( ? PloneBottom(
border: false, border: false,
onTap: () { onTap: () async{
Get.to(() => const HomePage()); var cancel = CloudToast.loading;
}, var base = await apiClient.request(API.manager.logout, showMessage: true);
textColor: const Color(0xFF1890FF), if (base.code == 0) {
color1: const Color(0xFFEBF5FF), UserTool.userProvider.logout();
color2: const Color(0xFFEBF5FF), Get.offAll(const HomePage());
text: "退出登录", }
):const SizedBox() cancel();
},
textColor: const Color(0xFF1890FF),
color1: const Color(0xFFEBF5FF),
color2: const Color(0xFFEBF5FF),
text: "退出登录",
)
: const SizedBox()
]), ]),
); );
} }
@ -84,7 +94,7 @@ class _UserPageState extends State<UserPage> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
tooken? "xxxxx": "登录/注册" , userProvider.isLogin ? userProvider.userInfo.name : "登录/注册",
style: TextStyle( style: TextStyle(
fontSize: BaseStyle.fontSize48, fontSize: BaseStyle.fontSize48,
color: BaseStyle.color333333, color: BaseStyle.color333333,
@ -92,7 +102,7 @@ class _UserPageState extends State<UserPage> {
), ),
24.hb, 24.hb,
Text( Text(
tooken ? "登录获取更多信息" : "欢迎您登录短信帮手", userProvider.isLogin ? "欢迎您登录短信帮手" : "登录获取更多信息",
style: TextStyle( style: TextStyle(
fontSize: BaseStyle.fontSize28, fontSize: BaseStyle.fontSize28,
color: BaseStyle.color333333), color: BaseStyle.color333333),

@ -1,166 +1,166 @@
// import 'dart:async'; import 'dart:async';
// import 'dart:convert'; import 'dart:convert';
// import 'package:bot_toast/bot_toast.dart'; import 'package:bot_toast/bot_toast.dart';
// import 'package:cloud_car/model/pay/wx_pay_model.dart'; import 'package:dio/dio.dart';
// import 'package:cloud_car/utils/new_work/api_client.dart'; import 'package:flutter/foundation.dart';
// import 'package:cloud_car/utils/toast/cloud_toast.dart'; import 'package:fluwx/fluwx.dart';
// import 'package:dio/dio.dart'; import 'package:power_logger/power_logger.dart';
// import 'package:flutter/foundation.dart'; import 'package:project_telephony/utils/toast/cloud_toast.dart';
// import 'package:fluwx/fluwx.dart'; import 'package:tobias/tobias.dart';
// import 'package:power_logger/power_logger.dart';
// import 'package:tobias/tobias.dart'; import '../model/network/api_client.dart';
import '../model/pay/pay_model.dart';
// import '../model/pay/pay_model.dart'; import '../model/pay/wx_pay_model.dart';
// enum PAYTYPE { enum PAYTYPE {
// /// ///
// ali, ali,
// /// ///
// wx, wx,
// /// ///
// cash, cash,
// ///pos ///pos
// pos pos
// } }
// class PayUtil { class PayUtil {
// static final PayUtil _instance = PayUtil._(); static final PayUtil _instance = PayUtil._();
// factory PayUtil() => _instance; factory PayUtil() => _instance;
// PayUtil._(); PayUtil._();
// void resultSatus(String status) { void resultSatus(String status) {
// switch (status) { switch (status) {
// case '8000': case '8000':
// BotToast.showText(text: '正在处理中'); BotToast.showText(text: '正在处理中');
// break; break;
// case '4000': case '4000':
// BotToast.showText(text: '订单支付失败'); BotToast.showText(text: '订单支付失败');
// break; break;
// case '5000': case '5000':
// BotToast.showText(text: '重复请求'); BotToast.showText(text: '重复请求');
// break; break;
// case '6001': case '6001':
// BotToast.showText(text: ' 用户中途取消'); BotToast.showText(text: ' 用户中途取消');
// break; break;
// case '6002': case '6002':
// BotToast.showText(text: '网络连接出错'); BotToast.showText(text: '网络连接出错');
// break; break;
// case '6004': case '6004':
// BotToast.showText(text: '支付结果未知,请查询商户订单列表中订单的支付状态'); BotToast.showText(text: '支付结果未知,请查询商户订单列表中订单的支付状态');
// break; break;
// default: default:
// BotToast.showText(text: '其他支付错误'); BotToast.showText(text: '其他支付错误');
// break; break;
// } }
// } }
// String _resultStatus = ''; String _resultStatus = '';
// /// ///
// /// ///
// Future<bool> callAliPay(String order, {String? apiPath}) async { Future<bool> callAliPay(String order, {String? apiPath}) async {
// var install = await isAliPayInstalled(); var install = await isAliPayInstalled();
// if (!install) { if (!install) {
// BotToast.showText(text: '未安装支付宝!'); BotToast.showText(text: '未安装支付宝!');
// return false; return false;
// } }
// Map<dynamic, dynamic> result = {}; Map<dynamic, dynamic> result = {};
// try { try {
// result = await aliPay(order); result = await aliPay(order);
// } catch (e) { } catch (e) {
// if (kDebugMode) { if (kDebugMode) {
// print(e.toString()); print(e.toString());
// } }
// } }
// _resultStatus = result['resultStatus']; _resultStatus = result['resultStatus'];
// if (_resultStatus == '9000') { if (_resultStatus == '9000') {
// String res = result['result']; String res = result['result'];
// PayModel model = PayModel.fromJson(jsonDecode(res)); PayModel model = PayModel.fromJson(jsonDecode(res));
// if (apiPath != null) { if (apiPath != null) {
// bool confirmResult = await _confirmPayResult( bool confirmResult = await _confirmPayResult(
// apiPath, model.aliPayTradeAppPayResponse.outTradeNo); apiPath, model.aliPayTradeAppPayResponse.outTradeNo);
// return confirmResult; return confirmResult;
// } else { } else {
// CloudToast.show('支付成功'); CloudToast.show('支付成功');
// return true; return true;
// } }
// } else { } else {
// resultSatus(_resultStatus); resultSatus(_resultStatus);
// return false; return false;
// } }
// } }
// Future<bool> _confirmPayResult(String path, String code) async { Future<bool> _confirmPayResult(String path, String code) async {
// try { try {
// int status = 0; int status = 0;
// for (var i = 0; i < 3; i++) { for (var i = 0; i < 3; i++) {
// await Future.delayed(const Duration(milliseconds: 1000), () async { await Future.delayed(const Duration(milliseconds: 1000), () async {
// Response response = await apiClient.dio.get(path, queryParameters: { Response response = await apiClient.dio.get(path, queryParameters: {
// "code": code, "code": code,
// }); });
// status = response.data['status'] as int; status = response.data['status'] as int;
// }); });
// if (status == 2) { if (status == 2) {
// break; break;
// } }
// } }
// if (status == 2) { if (status == 2) {
// BotToast.showText(text: '交易成功'); BotToast.showText(text: '交易成功');
// return true; return true;
// } else { } else {
// BotToast.showText(text: '交易失败 错误码$status'); BotToast.showText(text: '交易失败 错误码$status');
// return false; return false;
// } }
// } catch (e) { } catch (e) {
// BotToast.showText(text: '网络请求错误'); BotToast.showText(text: '网络请求错误');
// LoggerData.addData(e); LoggerData.addData(e);
// return false; return false;
// } }
// } }
// /// ///
// StreamSubscription? _wxPayStream; StreamSubscription? _wxPayStream;
// void wxPayAddListener( void wxPayAddListener(
// {required VoidCallback paySuccess, {required VoidCallback paySuccess,
// Function(BaseWeChatResponse)? payError}) { Function(BaseWeChatResponse)? payError}) {
// _wxPayStream = weChatResponseEventHandler.listen((event) { _wxPayStream = weChatResponseEventHandler.listen((event) {
// if (kDebugMode) { if (kDebugMode) {
// print('errorCode:${event.errCode} errorStr:${event.errStr}'); print('errorCode:${event.errCode} errorStr:${event.errStr}');
// } }
// if (event.errCode == 0) { if (event.errCode == 0) {
// paySuccess(); paySuccess();
// } else { } else {
// LoggerData.addData( LoggerData.addData(
// 'errorCode:${event.errCode} errorStr:${event.errStr ?? '支付失败'}'); 'errorCode:${event.errCode} errorStr:${event.errStr ?? '支付失败'}');
// CloudToast.show(event.errStr ?? '支付失败'); CloudToast.show(event.errStr ?? '支付失败');
// if (payError != null) payError(event); if (payError != null) payError(event);
// //payError == null ? null : payError(event); //payError == null ? null : payError(event);
// } }
// }); });
// } }
// void removeWxPayListener() { void removeWxPayListener() {
// _wxPayStream?.cancel(); _wxPayStream?.cancel();
// } }
// Future callWxPay({ Future callWxPay({
// required WxPayModel payModel, required WxPayModel payModel,
// }) async { }) async {
// await payWithWeChat( await payWithWeChat(
// appId: 'wx9bc3ffb23a749254', appId: 'wx9bc3ffb23a749254',
// partnerId: payModel.partnerId, partnerId: payModel.partnerId,
// prepayId: payModel.prepayId, prepayId: payModel.prepayId,
// packageValue: payModel.package, packageValue: payModel.package,
// nonceStr: payModel.nonceStr, nonceStr: payModel.nonceStr,
// timeStamp: int.parse(payModel.timeStamp), timeStamp: int.parse(payModel.timeStamp),
// sign: payModel.sign); sign: payModel.sign);
// } }
// } }

Loading…
Cancel
Save