Merge branch 'release' of https://gitee.com/starlock-cn/app-starlock into release

This commit is contained in:
魏少阳 2024-05-30 13:37:25 +08:00
commit a04f3523df
24 changed files with 255 additions and 153 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -112,7 +112,7 @@ android {
dimension "flavor-type" dimension "flavor-type"
applicationId "com.xhjcn.lock" applicationId "com.xhjcn.lock"
signingConfig signingConfigs.xhj signingConfig signingConfigs.xhj
resValue "string", "app_name", "锁" resValue "string", "app_name", "星星锁"
manifestPlaceholders.JPUSH_PKGNAME = "com.xhjcn.lock" manifestPlaceholders.JPUSH_PKGNAME = "com.xhjcn.lock"
} }
} }

View File

@ -95,7 +95,7 @@ flavors:
bundleId: "com.skychip.lock" bundleId: "com.skychip.lock"
xhj: xhj:
app: app:
name: "锁" name: "星星锁"
icon: "assets/icon/xhj.png" icon: "assets/icon/xhj.png"
android: android:
applicationId: "com.xhjcn.lock" applicationId: "com.xhjcn.lock"

View File

@ -2,5 +2,5 @@
FLUTTER_TARGET=lib/main_xhj_full.dart FLUTTER_TARGET=lib/main_xhj_full.dart
ASSET_PREFIX=xhj ASSET_PREFIX=xhj
BUNDLE_NAME= BUNDLE_NAME=星星
BUNDLE_DISPLAY_NAME= BUNDLE_DISPLAY_NAME=星星

View File

@ -2,5 +2,5 @@
FLUTTER_TARGET=lib/main_xhj_full.dart FLUTTER_TARGET=lib/main_xhj_full.dart
ASSET_PREFIX=xhj ASSET_PREFIX=xhj
BUNDLE_NAME= BUNDLE_NAME=星星
BUNDLE_DISPLAY_NAME= BUNDLE_DISPLAY_NAME=星星

View File

@ -2,5 +2,5 @@
FLUTTER_TARGET=lib/main_xhj_lite.dart FLUTTER_TARGET=lib/main_xhj_lite.dart
ASSET_PREFIX=xhj ASSET_PREFIX=xhj
BUNDLE_NAME= BUNDLE_NAME=星星
BUNDLE_DISPLAY_NAME= BUNDLE_DISPLAY_NAME=星星

View File

@ -38,16 +38,6 @@
<string/> <string/>
</array> </array>
</dict> </dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>weixin</string>
<key>CFBundleURLSchemes</key>
<array>
<string>123456</string>
</array>
</dict>
<dict> <dict>
<key>CFBundleTypeRole</key> <key>CFBundleTypeRole</key>
<string>Editor</string> <string>Editor</string>

View File

@ -40,21 +40,21 @@ class XSConstantMacro {
switch (keyStatus) { switch (keyStatus) {
case 110401: case 110401:
// 使 // 使
return ""; return '';
case 110402: case 110402:
return "待接收"; return '待接收';
case 110403: case 110403:
return "未生效"; return '未生效';
case 110405: case 110405:
return "已冻结"; return '已冻结';
case 110408: case 110408:
return "已删除"; return '已删除';
// case 110410: // case 110410:
// return "已重置"; // return "已重置";
case 110412: case 110412:
return "已过期"; return '已过期';
default: default:
return "未知"; return '未知';
} }
} }
@ -75,8 +75,14 @@ class XSConstantMacro {
static int userTypeSuperAdmin = 110301; // static int userTypeSuperAdmin = 110301; //
static int userTypeAuthorizedAdmin = 110302; // static int userTypeAuthorizedAdmin = 110302; //
// //
static int keyRightAdmin = 1; // static int keyRightAdmin = 1; //
static int keyRightOrdinary = 2; // static int keyRightOrdinary = 2; //
//
static int webBuyTypeSMS = 1; //
static int webBuyTypeEmail = 2; //
static int webBuyTypeVip = 3; //VIP购买
static int webBuyTypeAuth = 4; //
static int webBuyTypeShop = 5; //
} }

View File

@ -59,7 +59,7 @@ class F {
case Flavor.sky: case Flavor.sky:
return '锁通通'; return '锁通通';
case Flavor.xhj: case Flavor.xhj:
return ''; return '星星';
default: default:
throw Exception('flavor[$name] title not found'); throw Exception('flavor[$name] title not found');
} }
@ -76,7 +76,7 @@ class F {
case Flavor.sky: case Flavor.sky:
return '锁通通'; return '锁通通';
case Flavor.xhj: case Flavor.xhj:
return ''; return '星星';
default: default:
throw Exception('flavor[$name] title not found'); throw Exception('flavor[$name] title not found');
} }

View File

@ -5,6 +5,7 @@ import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/appRouters.dart'; import 'package:star_lock/appRouters.dart';
import 'package:star_lock/app_settings/app_settings.dart'; import 'package:star_lock/app_settings/app_settings.dart';
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.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/authorizedAdmin/authorizedAdmin/authorizedAdmin_entity.dart'; import 'package:star_lock/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_entity.dart';
import 'package:star_lock/main/lockDetail/authorizedAdmin/authorizedAdmin/notice_template_entity.dart'; import 'package:star_lock/main/lockDetail/authorizedAdmin/authorizedAdmin/notice_template_entity.dart';
@ -254,8 +255,9 @@ class AuthorizedAdminLogic extends BaseGetXController {
ShowCupertinoAlertView().showBuyTipWithContentAlert( ShowCupertinoAlertView().showBuyTipWithContentAlert(
titleStr: '实名认证为付费功能,请购买后再使用'.tr, titleStr: '实名认证为付费功能,请购买后再使用'.tr,
sureClick: () { sureClick: () {
Get.toNamed(Routers.advancedFeaturesWebPage, Get.toNamed(Routers.advancedFeaturesWebPage, arguments: {
arguments: <String, bool>{'isShop': false}); 'webBuyType': XSConstantMacro.webBuyTypeAuth,
});
}); });
} else if (entity.errorCode == 433) { } else if (entity.errorCode == 433) {
// //

View File

@ -163,8 +163,9 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
ShowCupertinoAlertView().showBuyTipWithContentAlert( ShowCupertinoAlertView().showBuyTipWithContentAlert(
titleStr: '实名认证为付费功能,请购买后再使用'.tr, titleStr: '实名认证为付费功能,请购买后再使用'.tr,
sureClick: () { sureClick: () {
Get.toNamed(Routers.advancedFeaturesWebPage, Get.toNamed(Routers.advancedFeaturesWebPage, arguments: {
arguments: <String, bool>{'isShop': false}); 'webBuyType': XSConstantMacro.webBuyTypeAuth,
});
}); });
} else if (entity.errorCode == 433) { } else if (entity.errorCode == 433) {
// //
@ -402,8 +403,9 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
ShowCupertinoAlertView().showBuyTipWithContentAlert( ShowCupertinoAlertView().showBuyTipWithContentAlert(
titleStr: '实名认证为付费功能,请购买后再使用'.tr, titleStr: '实名认证为付费功能,请购买后再使用'.tr,
sureClick: () { sureClick: () {
Get.toNamed(Routers.advancedFeaturesWebPage, Get.toNamed(Routers.advancedFeaturesWebPage, arguments: {
arguments: <String, bool>{'isShop': false}); 'webBuyType': XSConstantMacro.webBuyTypeAuth,
});
}); });
} else if (entity.errorCode == 433) { } else if (entity.errorCode == 433) {
// //

View File

@ -200,8 +200,9 @@ class SendElectronicKeyViewLogic extends BaseGetXController {
ShowCupertinoAlertView().showBuyTipWithContentAlert( ShowCupertinoAlertView().showBuyTipWithContentAlert(
titleStr: '实名认证为付费功能,请购买后再使用'.tr, titleStr: '实名认证为付费功能,请购买后再使用'.tr,
sureClick: () { sureClick: () {
Get.toNamed(Routers.advancedFeaturesWebPage, Get.toNamed(Routers.advancedFeaturesWebPage, arguments: {
arguments: {'isShop': false}); 'webBuyType': XSConstantMacro.webBuyTypeAuth,
});
}); });
} else if (entity.errorCode == 433) { } else if (entity.errorCode == 433) {
// //

View File

@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
import 'package:star_lock/flavors.dart'; import 'package:star_lock/flavors.dart';
import 'package:star_lock/mine/mine/starLockMine_state.dart'; import 'package:star_lock/mine/mine/starLockMine_state.dart';
import 'package:star_lock/tools/commonDataManage.dart'; import 'package:star_lock/tools/commonDataManage.dart';
@ -98,7 +99,9 @@ class StarLockMinePageState extends State<StarLockMinePage> with BaseWidget {
// logic.showToast('请先添加锁'); // logic.showToast('请先添加锁');
// } else { // } else {
Get.toNamed(Routers.advancedFeaturesWebPage, Get.toNamed(Routers.advancedFeaturesWebPage,
arguments: <String, bool>{'isShop': true}); arguments: {
'webBuyType': XSConstantMacro.webBuyTypeVip,
});
// } // }
} else { } else {
Get.toNamed( Get.toNamed(

View File

@ -311,6 +311,16 @@ class _MineSetPageState extends State<MineSetPage> with WidgetsBindingObserver {
Navigator.pushNamed( Navigator.pushNamed(
context, Routers.aPPUnlockNeedMobileNetworkingLockPage); context, Routers.aPPUnlockNeedMobileNetworkingLockPage);
}), }),
if (!F.isLite && widget.showAbout)
CommonItem(
leftTitel: TranslationLoader.lanKeys!.valueAddedServices!.tr,
isHaveLine: true,
isHaveDirection: true,
action: () {
Get.back();
Get.toNamed(Routers.valueAddedServicesPage);
},
),
SizedBox( SizedBox(
height: 10.h, height: 10.h,
), ),
@ -342,16 +352,6 @@ class _MineSetPageState extends State<MineSetPage> with WidgetsBindingObserver {
action: () { action: () {
logic.showToast('功能暂未开放'.tr); logic.showToast('功能暂未开放'.tr);
}), }),
if (!F.isLite && widget.showAbout)
CommonItem(
leftTitel: TranslationLoader.lanKeys!.valueAddedServices!.tr,
isHaveLine: true,
isHaveDirection: true,
action: () {
Get.back();
Get.toNamed(Routers.valueAddedServicesPage);
},
),
if (widget.showAbout) if (widget.showAbout)
CommonItem( CommonItem(
leftTitel: TranslationLoader.lanKeys!.about!.tr, leftTitel: TranslationLoader.lanKeys!.about!.tr,

View File

@ -4,6 +4,7 @@ import 'package:flutter/services.dart';
import 'package:fluwx/fluwx.dart'; import 'package:fluwx/fluwx.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/app_settings/app_settings.dart'; import 'package:star_lock/app_settings/app_settings.dart';
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
import 'package:star_lock/flavors.dart'; import 'package:star_lock/flavors.dart';
import 'package:star_lock/mine/mall/webview/webview_logic.dart'; import 'package:star_lock/mine/mall/webview/webview_logic.dart';
import 'package:star_lock/mine/valueAddedServices/advancedFeaturesWeb/advancedFeaturesWeb_entity.dart'; import 'package:star_lock/mine/valueAddedServices/advancedFeaturesWeb/advancedFeaturesWeb_entity.dart';
@ -20,13 +21,27 @@ class AdvancedFeaturesWebLogic extends BaseGetXController {
// //
Future<void> getVipBuyURLRequest() async { Future<void> getVipBuyURLRequest() async {
AdvancedFeaturesWebEntity entity = final AdvancedFeaturesWebEntity entity =
await ApiRepository.to.getServicePackageBuyUrl(); await ApiRepository.to.getServicePackageBuyUrl();
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
state.vipBuyUrl.value = state.isVipShop.value == true if (state.webBuyType.value == XSConstantMacro.webBuyTypeVip) {
? entity.data!.vipBuyUrl! state.webBuyUrl.value = entity.data!.vipBuyUrl!;
: entity.data!.cloudauthBuyUrl!; state.webBuyTitle.value = '高级功能'.tr;
state.vipBuyWebView.setNavigationDelegate( } else if (state.webBuyType.value == XSConstantMacro.webBuyTypeAuth) {
state.webBuyUrl.value = entity.data!.cloudauthBuyUrl!;
state.webBuyTitle.value = '实名认证'.tr;
} else if (state.webBuyType.value == XSConstantMacro.webBuyTypeSMS) {
state.webBuyUrl.value = entity.data!.smsBuyUrl!;
state.webBuyTitle.value = '短信购买'.tr;
} else if (state.webBuyType.value == XSConstantMacro.webBuyTypeEmail) {
state.webBuyUrl.value = entity.data!.emailBuyUrl!;
state.webBuyTitle.value = '邮件购买'.tr;
} else if (state.webBuyType.value == XSConstantMacro.webBuyTypeShop) {
state.webBuyUrl.value = entity.data!.shopList!;
state.webBuyTitle.value = '商城购买'.tr;
}
state.webBuyView.setNavigationDelegate(
NavigationDelegate( NavigationDelegate(
onProgress: (int progress) { onProgress: (int progress) {
// Update loading bar. // Update loading bar.
@ -49,9 +64,9 @@ class AdvancedFeaturesWebLogic extends BaseGetXController {
}, },
), ),
); );
state.vipBuyWebView.loadRequest(Uri.parse(state.vipBuyUrl.value)); state.webBuyView.loadRequest(Uri.parse(state.webBuyUrl.value));
state.vipBuyWebView.addJavaScriptChannel( state.webBuyView.addJavaScriptChannel(
"FlutterBridge", 'FlutterBridge',
onMessageReceived: (JavaScriptMessage message) async { onMessageReceived: (JavaScriptMessage message) async {
flutterBridge(message); flutterBridge(message);
}, },
@ -66,9 +81,9 @@ class AdvancedFeaturesWebLogic extends BaseGetXController {
if (obj is! Map && obj['action'] is String) { if (obj is! Map && obj['action'] is String) {
return; return;
} }
String action = obj['action']; final String action = obj['action'];
dynamic data = obj['data']; final dynamic data = obj['data'];
String? callFun = obj['callFun']; final String? callFun = obj['callFun'];
switch (action) { switch (action) {
case 'WechatPayParams': case 'WechatPayParams':
// //
@ -79,15 +94,15 @@ class AdvancedFeaturesWebLogic extends BaseGetXController {
// //
Future<void> wxPay(dynamic data, String? callFun) async { Future<void> wxPay(dynamic data, String? callFun) async {
WxPayTool.pay(WxPayTool.mapToPayment(data), (response) { WxPayTool.pay(WxPayTool.mapToPayment(data), (WeChatResponse response) {
if (response is WeChatPaymentResponse) { if (response is WeChatPaymentResponse) {
Map data = { final Map data = {
'type': response.type, 'type': response.type,
'extData': response.extData, 'extData': response.extData,
'errCode': response.errCode, 'errCode': response.errCode,
'errStr': response.errStr, 'errStr': response.errStr,
}; };
state.vipBuyWebView.runJavaScript( state.webBuyView.runJavaScript(
'window.$callFun(`${json.encode(data)}`)', 'window.$callFun(`${json.encode(data)}`)',
); );
} }
@ -96,9 +111,9 @@ class AdvancedFeaturesWebLogic extends BaseGetXController {
//webview 退退 //webview 退退
Future<bool> canGoBack(bool didPop) async { Future<bool> canGoBack(bool didPop) async {
bool canGoBack = await state.vipBuyWebView.canGoBack(); final bool canGoBack = await state.webBuyView.canGoBack();
if (canGoBack) { if (canGoBack) {
await state.vipBuyWebView.goBack(); await state.webBuyView.goBack();
} else if (state.allowReturn) { } else if (state.allowReturn) {
Get.back(); Get.back();
} else { } else {
@ -123,7 +138,7 @@ class AdvancedFeaturesWebLogic extends BaseGetXController {
if (state.allowReturn) { if (state.allowReturn) {
return; return;
} }
state.vipBuyWebView.canGoBack().then((value) { state.webBuyView.canGoBack().then((bool value) {
state.canGoBack = value; state.canGoBack = value;
update(); update();
}); });

View File

@ -3,6 +3,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/app_settings/app_colors.dart';
import 'package:star_lock/mine/valueAddedServices/advancedFeaturesWeb/advancedFeaturesWeb_logic.dart'; import 'package:star_lock/mine/valueAddedServices/advancedFeaturesWeb/advancedFeaturesWeb_logic.dart';
import 'package:star_lock/mine/valueAddedServices/advancedFeaturesWeb/advancedFeaturesWeb_state.dart';
import 'package:star_lock/tools/titleAppBar.dart'; import 'package:star_lock/tools/titleAppBar.dart';
import 'package:webview_flutter/webview_flutter.dart'; import 'package:webview_flutter/webview_flutter.dart';
@ -15,10 +16,9 @@ class AdvancedFeaturesWebPage extends StatefulWidget {
} }
class _AdvancedFeaturesWebPageState extends State<AdvancedFeaturesWebPage> { class _AdvancedFeaturesWebPageState extends State<AdvancedFeaturesWebPage> {
@override final AdvancedFeaturesWebLogic logic = Get.put(AdvancedFeaturesWebLogic());
void initState() { final AdvancedFeaturesWebState state =
super.initState(); Get.find<AdvancedFeaturesWebLogic>().state;
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -32,9 +32,7 @@ class _AdvancedFeaturesWebPageState extends State<AdvancedFeaturesWebPage> {
resizeToAvoidBottomInset: false, resizeToAvoidBottomInset: false,
backgroundColor: const Color(0xFFFFFFFF), backgroundColor: const Color(0xFFFFFFFF),
appBar: TitleAppBar( appBar: TitleAppBar(
barTitle: logic.state.isVipShop.value == true barTitle: state.webBuyTitle.value,
? '高级功能'.tr
: '实名认证'.tr,
haveBack: true, haveBack: true,
backgroundColor: AppColors.mainColor, backgroundColor: AppColors.mainColor,
backAction: () => logic.canGoBack(false), backAction: () => logic.canGoBack(false),
@ -56,8 +54,8 @@ class _AdvancedFeaturesWebPageState extends State<AdvancedFeaturesWebPage> {
), ),
), ),
Expanded( Expanded(
child: WebViewWidget( child:
controller: logic.state.vipBuyWebView), WebViewWidget(controller: logic.state.webBuyView),
), ),
], ],
))), ))),

View File

@ -1,29 +1,40 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
import 'package:star_lock/mine/mall/webview/webview_logic.dart'; import 'package:star_lock/mine/mall/webview/webview_logic.dart';
import 'package:webview_flutter/webview_flutter.dart'; import 'package:webview_flutter/webview_flutter.dart';
class AdvancedFeaturesWebState { class AdvancedFeaturesWebState {
var vipBuyUrl = "".obs; // AdvancedFeaturesWebState() {
var webProgress = 0.0.obs; if (Get.arguments['webBuyType'] != null) {
webBuyType.value = Get.arguments['webBuyType'];
if (webBuyType.value == XSConstantMacro.webBuyTypeVip) {
webBuyTitle.value = '高级功能'.tr;
} else if (webBuyType.value == XSConstantMacro.webBuyTypeAuth) {
webBuyTitle.value = '实名认证'.tr;
} else if (webBuyType.value == XSConstantMacro.webBuyTypeSMS) {
webBuyTitle.value = '短信购买'.tr;
} else if (webBuyType.value == XSConstantMacro.webBuyTypeEmail) {
webBuyTitle.value = '邮件购买'.tr;
} else if (webBuyType.value == XSConstantMacro.webBuyTypeShop) {
webBuyTitle.value = '商城购买'.tr;
}
}
}
RxString webBuyUrl = ''.obs; //
RxInt webBuyType = 0.obs; //
RxString webBuyTitle = ''.obs;
RxDouble webProgress = 0.0.obs;
bool allowReturn = true; bool allowReturn = true;
late WebViewController vipBuyWebView = initWebViewController(); late WebViewController webBuyView = initWebViewController();
var isVipShop = true.obs; //
bool canGoBack = false; bool canGoBack = false;
//webView控制器 //webView控制器
WebViewController initWebViewController() { WebViewController initWebViewController() {
WebViewController allWebView = WebViewController(); final WebViewController allWebView = WebViewController();
allWebView.setJavaScriptMode(JavaScriptMode.unrestricted); allWebView.setJavaScriptMode(JavaScriptMode.unrestricted);
allWebView.setBackgroundColor(Colors.white); allWebView.setBackgroundColor(Colors.white);
allWebView.setUserAgent(WebViewLogic.userAgent); allWebView.setUserAgent(WebViewLogic.userAgent);
return allWebView; return allWebView;
} }
AdvancedFeaturesWebState() {
Map map = Get.arguments;
if (map['isShop'] != null) {
isVipShop.value = map['isShop'];
}
}
} }

View File

@ -2,7 +2,9 @@ import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesList/valueAddedServicesList_logic.dart'; import 'package:star_lock/mine/valueAddedServices/valueAddedServicesList/valueAddedServicesList_logic.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesList/valueAddedServicesList_state.dart';
import 'package:star_lock/tools/commonDataManage.dart'; import 'package:star_lock/tools/commonDataManage.dart';
import 'package:star_lock/tools/storage.dart'; import 'package:star_lock/tools/storage.dart';
@ -21,8 +23,10 @@ class ValueAddedServicesListPage extends StatefulWidget {
class _ValueAddedServicesPageListState class _ValueAddedServicesPageListState
extends State<ValueAddedServicesListPage> { extends State<ValueAddedServicesListPage> {
final logic = Get.put(ValueAddedServicesListLogic()); final ValueAddedServicesListLogic logic =
final state = Get.find<ValueAddedServicesListLogic>().state; Get.put(ValueAddedServicesListLogic());
final ValueAddedServicesListState state =
Get.find<ValueAddedServicesListLogic>().state;
@override @override
void initState() { void initState() {
@ -40,21 +44,19 @@ class _ValueAddedServicesPageListState
haveBack: true, haveBack: true,
backgroundColor: AppColors.mainColor), backgroundColor: AppColors.mainColor),
body: ListView( body: ListView(
children: [ children: <Widget>[
// _valueAddedServicesItem( _valueAddedServicesItem(
// Image.asset('images/mine/icon_mine_valueAddedServices_note.png'), Image.asset('images/mine/icon_mine_valueAddedServices_note.png'),
// TranslationLoader.lanKeys!.note!.tr, () { TranslationLoader.lanKeys!.note!.tr, () {
// Navigator.pushNamed( Get.toNamed(Routers.valueAddedServicesNoteAndEmailDetailPage,
// context, Routers.valueAddedServicesNoteAndEmailDetailPage, arguments: {'type': 1});
// arguments: 1); }),
// }), _valueAddedServicesItem(
// _valueAddedServicesItem( Image.asset('images/mine/icon_mine_valueAddedServices_email.png'),
// Image.asset('images/mine/icon_mine_valueAddedServices_email.png'), TranslationLoader.lanKeys!.mail!.tr, () {
// TranslationLoader.lanKeys!.mail!.tr, () { Get.toNamed(Routers.valueAddedServicesNoteAndEmailDetailPage,
// Navigator.pushNamed( arguments: {'type': 2});
// context, Routers.valueAddedServicesNoteAndEmailDetailPage, }),
// arguments: 2);
// }),
_valueAddedServicesItem( _valueAddedServicesItem(
Image.asset( Image.asset(
'images/mine/icon_mine_valueAddedServices_realName.png'), 'images/mine/icon_mine_valueAddedServices_realName.png'),
@ -64,13 +66,14 @@ class _ValueAddedServicesPageListState
_valueAddedServicesItem( _valueAddedServicesItem(
Image.asset('images/mine/icon_mine_valueAddedServices_vip.png'), Image.asset('images/mine/icon_mine_valueAddedServices_vip.png'),
TranslationLoader.lanKeys!.advancedFunction!.tr, () async { TranslationLoader.lanKeys!.advancedFunction!.tr, () async {
var isVip = await Storage.getBool(saveIsVip); bool? isVip = await Storage.getBool(saveIsVip);
if (isVip == null || !isVip) { if (isVip == null || !isVip) {
// if (CommonDataManage().currentKeyInfo.isLockOwner != 1) { // if (CommonDataManage().currentKeyInfo.isLockOwner != 1) {
// logic.showToast('请先添加锁'); // logic.showToast('请先添加锁');
// } else { // } else {
Get.toNamed(Routers.advancedFeaturesWebPage, Get.toNamed(Routers.advancedFeaturesWebPage, arguments: {
arguments: <String, bool>{'isShop': true}); 'webBuyType': XSConstantMacro.webBuyTypeVip,
});
// } // }
} else { } else {
Get.toNamed(Routers.valueAddedServicesHighFunctionPage); Get.toNamed(Routers.valueAddedServicesHighFunctionPage);
@ -91,34 +94,34 @@ class _ValueAddedServicesPageListState
Image.asset( Image.asset(
'images/mine/icon_mine_valueAddedServices_storage.png'), 'images/mine/icon_mine_valueAddedServices_storage.png'),
TranslationLoader.lanKeys!.recordsRetention!.tr, () { TranslationLoader.lanKeys!.recordsRetention!.tr, () {
EasyLoading.showToast("功能暂未开放", duration: 2000.milliseconds); EasyLoading.showToast('功能暂未开放', duration: 2000.milliseconds);
}), }),
_valueAddedServicesItem( _valueAddedServicesItem(
Image.asset('images/mine/icon_mine_valueAddedServices_vip.png'), Image.asset('images/mine/icon_mine_valueAddedServices_vip.png'),
'可视对讲', () { '可视对讲', () {
EasyLoading.showToast("功能暂未开放", duration: 2000.milliseconds); EasyLoading.showToast('功能暂未开放', duration: 2000.milliseconds);
}), }),
_valueAddedServicesItem( _valueAddedServicesItem(
Text( Text(
"A", 'A',
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 38.sp, fontSize: 38.sp,
fontWeight: FontWeight.w600), fontWeight: FontWeight.w600),
), ),
"Amazon Alexa", () { 'Amazon Alexa', () {
EasyLoading.showToast("功能暂未开放", duration: 2000.milliseconds); EasyLoading.showToast('功能暂未开放', duration: 2000.milliseconds);
}), }),
_valueAddedServicesItem( _valueAddedServicesItem(
Text( Text(
"G", 'G',
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 38.sp, fontSize: 38.sp,
fontWeight: FontWeight.w600), fontWeight: FontWeight.w600),
), ),
"Google Home", () { 'Google Home', () {
EasyLoading.showToast("功能暂未开放", duration: 2000.milliseconds); EasyLoading.showToast('功能暂未开放', duration: 2000.milliseconds);
}), }),
], ],
), ),
@ -138,7 +141,7 @@ class _ValueAddedServicesPageListState
borderRadius: BorderRadius.circular(10.w), borderRadius: BorderRadius.circular(10.w),
), ),
child: Row( child: Row(
children: [ children: <Widget>[
Container( Container(
width: 50.w, width: 50.w,
height: 50.w, height: 50.w,

View File

@ -0,0 +1,44 @@
import 'dart:async';
import 'package:star_lock/mine/valueAddedServices/advancedFeaturesWeb/advancedFeaturesWeb_entity.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesNoteAndEmailDetail/valueAddedServicesNoteAndEmailDetail_state.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import '../../../network/api_repository.dart';
class ValueAddedServicesNoteAndEmailDetailLogic extends BaseGetXController {
final ValueAddedServicesNoteAndEmailDetailState state =
ValueAddedServicesNoteAndEmailDetailState();
//
Future<void> getServiceUserPackage() async {
var entity = await ApiRepository.to.getServiceUserPackage();
if (entity.errorCode!.codeIsSuccessful) {
if (state.selectType.value == 1) {
state.remainCount.value = entity.data!.smsCount!;
} else if (state.selectType.value == 2) {
state.remainCount.value = entity.data!.emailCount!;
}
state.remainCount.refresh();
}
}
//
Future<void> getServicePackageBuyUrl() async {
final AdvancedFeaturesWebEntity entity =
await ApiRepository.to.getServicePackageBuyUrl();
if (entity.errorCode!.codeIsSuccessful) {
if (state.selectType.value == 1) {
state.buyUrl.value = entity.data!.smsBuyUrl!;
} else if (state.selectType.value == 2) {
state.buyUrl.value = entity.data!.emailBuyUrl!;
}
state.buyUrl.refresh();
}
}
@override
void onInit() {
super.onInit();
getServiceUserPackage();
}
}

View File

@ -1,6 +1,9 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesNoteAndEmailDetail/valueAddedServicesNoteAndEmailDetail_logic.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesNoteAndEmailDetail/valueAddedServicesNoteAndEmailDetail_state.dart';
import '../../../appRouters.dart'; import '../../../appRouters.dart';
import '../../../app_settings/app_colors.dart'; import '../../../app_settings/app_colors.dart';
@ -18,33 +21,41 @@ class ValueAddedServicesNoteAndEmailDetailPage extends StatefulWidget {
class _ValueAddedServicesNoteAndEmailDetailPageState class _ValueAddedServicesNoteAndEmailDetailPageState
extends State<ValueAddedServicesNoteAndEmailDetailPage> { extends State<ValueAddedServicesNoteAndEmailDetailPage> {
final ValueAddedServicesNoteAndEmailDetailLogic logic =
Get.put(ValueAddedServicesNoteAndEmailDetailLogic());
final ValueAddedServicesNoteAndEmailDetailState state =
Get.find<ValueAddedServicesNoteAndEmailDetailLogic>().state;
@override
void initState() {
super.initState();
logic.getServicePackageBuyUrl();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var type = ModalRoute.of(context)?.settings.arguments as int;
return Scaffold( return Scaffold(
backgroundColor: AppColors.mainBackgroundColor, backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar( appBar: TitleAppBar(
barTitle: type == 1 barTitle: state.selectType.value == 1
? TranslationLoader.lanKeys!.note!.tr ? TranslationLoader.lanKeys!.note!.tr
: TranslationLoader.lanKeys!.mail!.tr, : TranslationLoader.lanKeys!.mail!.tr,
haveBack: true, haveBack: true,
backgroundColor: AppColors.mainColor), backgroundColor: AppColors.mainColor),
body: Column( body: Column(
children: [ children: <Widget>[
Container( Container(
width: 1.sw, width: 1.sw,
// color: Colors.grey.shade300,
padding: EdgeInsets.only( padding: EdgeInsets.only(
left: 25.h, right: 25.h, top: 25.h, bottom: 10.h), left: 25.h, right: 25.h, top: 25.h, bottom: 10.h),
child: Text( child: Text(
type == 1 state.selectType.value == 1
? TranslationLoader.lanKeys!.smsBuyTip!.tr ? TranslationLoader.lanKeys!.smsBuyTip!.tr
: TranslationLoader.lanKeys!.emailBuyTip!.tr, : TranslationLoader.lanKeys!.emailBuyTip!.tr,
style: TextStyle( style: TextStyle(
color: AppColors.darkGrayTextColor, fontSize: 18.sp), color: AppColors.darkGrayTextColor, fontSize: 18.sp),
)), )),
middleWidget(type), middleWidget(state.selectType.value),
], ],
), ),
); );
@ -53,31 +64,30 @@ class _ValueAddedServicesNoteAndEmailDetailPageState
Widget middleWidget(int type) { Widget middleWidget(int type) {
return Container( return Container(
width: 1.sw, width: 1.sw,
// height: 100,
// color: Colors.grey.shade300,
margin: EdgeInsets.all(10.h), margin: EdgeInsets.all(10.h),
decoration: const BoxDecoration( decoration: const BoxDecoration(
image: DecorationImage( image: DecorationImage(
image: AssetImage( image: AssetImage(
"images/mine/icon_mine_valueAddedServices_noteTop.png"), 'images/mine/icon_mine_valueAddedServices_noteTop.png'),
fit: BoxFit.cover)), fit: BoxFit.cover)),
child: Column(children: [ child: Column(children: <Widget>[
// SizedBox(height:10),
Container( Container(
margin: margin:
const EdgeInsets.only(top: 15, bottom: 15, left: 30, right: 30), const EdgeInsets.only(top: 15, bottom: 15, left: 30, right: 30),
child: Row( child: Row(
children: [ children: <Widget>[
Expanded( Expanded(
child: Text( child: Obx(() => Text(
"${TranslationLoader.lanKeys!.currentRemainingQuantity!.tr}:0", '${TranslationLoader.lanKeys!.currentRemainingQuantity!.tr}:${state.remainCount.value}',
style: TextStyle(fontSize: 24.sp), style: TextStyle(fontSize: 24.sp),
)), ))),
GestureDetector( GestureDetector(
onTap: () { onTap: () {
Navigator.pushNamed( Get.toNamed(Routers.advancedFeaturesWebPage, arguments: {
context, Routers.valueAddedServicesBuyPage, 'webBuyType': state.selectType.value == 1
arguments: type); ? XSConstantMacro.webBuyTypeSMS
: XSConstantMacro.webBuyTypeEmail,
});
}, },
child: Container( child: Container(
width: 50, width: 50,
@ -93,14 +103,11 @@ class _ValueAddedServicesNoteAndEmailDetailPageState
], ],
), ),
), ),
// SizedBox(height:20.h),
Container( Container(
margin: const EdgeInsets.only(top: 10, bottom: 10), margin: const EdgeInsets.only(top: 10, bottom: 10),
// color: Colors.red,
// height: 100.h,
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: <Widget>[
GestureDetector( GestureDetector(
onTap: () { onTap: () {
if (type == 1) { if (type == 1) {
@ -112,12 +119,12 @@ class _ValueAddedServicesNoteAndEmailDetailPageState
} }
}, },
child: Row( child: Row(
children: [ children: <Widget>[
SizedBox( SizedBox(
width: 30.w, width: 30.w,
), ),
Image.asset( Image.asset(
"images/mine/icon_mine_valueAddedServices_buyIcon.png", 'images/mine/icon_mine_valueAddedServices_buyIcon.png',
width: 36.w, width: 36.w,
height: 36.w, height: 36.w,
), ),

View File

@ -0,0 +1,15 @@
import 'package:get/get.dart';
class ValueAddedServicesNoteAndEmailDetailState {
ValueAddedServicesNoteAndEmailDetailState() {
if (Get.arguments is Map && Get.arguments.isNotEmpty) {
if (Get.arguments['type'] != null) {
selectType.value = Get.arguments['type'];
}
}
}
RxInt selectType = 0.obs; //1-2-
RxInt remainCount = 0.obs; ///
RxString buyUrl = ''.obs; ///
}

View File

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/appRouters.dart'; import 'package:star_lock/appRouters.dart';
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRealName/value_added_services_real_name_logic.dart'; import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRealName/value_added_services_real_name_logic.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRealName/value_added_services_real_name_state.dart'; import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRealName/value_added_services_real_name_state.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/use_record_list_arg.dart'; import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/use_record_list_arg.dart';
@ -94,8 +95,9 @@ class _ValueAddedServicesRealNamePageState
), ),
GestureDetector( GestureDetector(
onTap: () { onTap: () {
Get.toNamed(Routers.advancedFeaturesWebPage, Get.toNamed(Routers.advancedFeaturesWebPage, arguments: {
arguments: <String, bool>{'isShop': false}); 'webBuyType': XSConstantMacro.webBuyTypeAuth,
});
}, },
child: Container( child: Container(
width: 200.w, width: 200.w,

View File

@ -5,6 +5,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/appRouters.dart'; import 'package:star_lock/appRouters.dart';
import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/app_settings/app_colors.dart';
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
typedef AuthInfoCallback = void Function(String? idCard, String? name); typedef AuthInfoCallback = void Function(String? idCard, String? name);
@ -89,8 +90,9 @@ class ShowCupertinoAlertView {
style: TextStyle(color: AppColors.mainColor), style: TextStyle(color: AppColors.mainColor),
), ),
onPressed: () async { onPressed: () async {
Get.toNamed(Routers.advancedFeaturesWebPage, Get.toNamed(Routers.advancedFeaturesWebPage, arguments: {
arguments: {'isShop': true}); 'webBuyType': XSConstantMacro.webBuyTypeVip,
});
}, },
), ),
], ],
@ -121,7 +123,7 @@ class ShowCupertinoAlertView {
), ),
onPressed: () { onPressed: () {
Get.toNamed(Routers.advancedFeaturesWebPage, arguments: { Get.toNamed(Routers.advancedFeaturesWebPage, arguments: {
'isShop': true, 'webBuyType': XSConstantMacro.webBuyTypeVip,
}); });
}, },
child: Text( child: Text(

View File

@ -32,13 +32,13 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# 1.0.27+2024041101打包提审 # 1.0.27+2024041101打包提审
# 1.0.27+2024041102打包预发布环境给田总测试 # 1.0.27+2024041102打包预发布环境给田总测试
# 1.0.28+2024041702打包给欧阳回归测试 # 1.0.28+2024041702打包给欧阳回归测试
# 1.0.27+2024041702 打包锁提审华为 # 1.0.27+2024041702 打包星星锁提审华为
# 1.0.27+2024041703 打包锁提审ios # 1.0.27+2024041703 打包星星锁提审ios
# 1.0.27+2024042204 打包锁提审ios与 android # 1.0.27+2024042204 打包星星锁提审ios与 android
# 1.0.28+2024042601 打包锁提审华为 # 1.0.28+2024042601 打包星星锁提审华为
# 1.0.29+2024042901 打包给欧阳测试 # 1.0.29+2024042901 打包给欧阳测试
# 1.0.30+2024043001 打包锁提审ios # 1.0.30+2024043001 打包星星锁提审ios
# 1.0.31+2024050301 打包锁提审华为 # 1.0.31+2024050301 打包星星锁提审华为
# 1.0.32+2024051001打包给欧阳回归测试 # 1.0.32+2024051001打包给欧阳回归测试
# 1.0.33+2024051401打包给欧阳回归测试 # 1.0.33+2024051401打包给欧阳回归测试
# 1.0.34+2024051402打包给欧阳回归测试 # 1.0.34+2024051402打包给欧阳回归测试
@ -59,9 +59,10 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# 1.0.49+2024052401xhj UI ,预发布环境 # 1.0.49+2024052401xhj UI ,预发布环境
# 1.0.50+2024052701xhj UI ,预发布环境 # 1.0.50+2024052701xhj UI ,预发布环境
# 1.0.51+2024052801xhj 线上环境,提审 # 1.0.51+2024052801xhj 线上环境,提审
# 1.0.53+2024052803xhj 线上环境,提审 # 1.0.53+2024052803xhj 线上环境,提审 sky 线上环境提审
# 1.0.53+2024052804xhj 线上环境,提审 修改鑫锁名字为星星锁
version: 1.0.53+2024052803 version: 1.0.53+2024052804
environment: environment:
sdk: '>=2.12.0 <3.0.0' sdk: '>=2.12.0 <3.0.0'