diff --git a/images/guide/1.png b/images/guide/1.png new file mode 100644 index 00000000..66d037f7 Binary files /dev/null and b/images/guide/1.png differ diff --git a/images/guide/2.png b/images/guide/2.png new file mode 100644 index 00000000..78933d9f Binary files /dev/null and b/images/guide/2.png differ diff --git a/images/guide/3.png b/images/guide/3.png new file mode 100644 index 00000000..d9e61aaf Binary files /dev/null and b/images/guide/3.png differ diff --git a/images/guide/4.png b/images/guide/4.png new file mode 100644 index 00000000..e30e0064 Binary files /dev/null and b/images/guide/4.png differ diff --git a/lib/appRouters.dart b/lib/appRouters.dart index 0a06445a..495b54c7 100755 --- a/lib/appRouters.dart +++ b/lib/appRouters.dart @@ -60,6 +60,7 @@ import 'package:star_lock/mine/mineSet/transferSmartLock/transferSmartLockList/t import 'package:star_lock/mine/valueAddedServices/advancedFeaturesWeb/advancedFeaturesWeb_page.dart'; import 'package:star_lock/mine/valueAddedServices/advancedFunctionRecord/advancedFunctionRecord_page.dart'; import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/value_added_services_record_page.dart'; +import 'package:star_lock/talk/starChart/views/guide/permission_guidance_page.dart'; import 'package:star_lock/talk/starChart/views/native/talk_view_native_decode_page.dart'; import 'package:star_lock/talk/starChart/views/talkView/talk_view_page.dart'; import 'package:star_lock/talk/starChart/webView/h264_web_view.dart'; @@ -518,6 +519,8 @@ abstract class Routers { static const String h264WebView = '/h264WebView'; //星图对讲页面 static const String imageTransmissionView = '/imageTransmissionView'; //星图对讲页面(图传) + static const String permissionGuidancePage = + '/permissionGuidancePage'; // 锁屏权限通知引导页面 } abstract class AppRouters { @@ -1194,6 +1197,10 @@ abstract class AppRouters { GetPage( name: Routers.imageTransmissionView, page: () => ImageTransmissionPage()), + + GetPage( + name: Routers.permissionGuidancePage, + page: () => PermissionGuidancePage()), // 插件播放页面 // GetPage(name: Routers.h264WebView, page: () => H264WebView()), // webview播放页面 ]; diff --git a/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintType_page.dart b/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintType_page.dart index ce684a51..e8804ac8 100755 --- a/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintType_page.dart +++ b/lib/main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintType_page.dart @@ -128,6 +128,15 @@ class _AddFingerprintTypePageState extends State // 限时顶部选择日期 Widget keyTimeLimitWidget() { + // 获取当前时间 + DateTime now = DateTime.now(); + + // 获取各个部分 + int year = now.year; + int month = now.month; + int day = now.day; + int hour = now.hour; + int minute = now.minute; return Column( children: [ Obx(() => CommonItem( @@ -139,6 +148,13 @@ class _AddFingerprintTypePageState extends State final PDuration selectDate = PDuration.parse( DateTime.tryParse(state.timeLimitBeginTime.value)); Pickers.showDatePicker(context, + minDate: PDuration( + year: year, + month: month, + day: day, + hour: hour, + minute: minute, + ), selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (PDuration p) { state.timeLimitBeginTime.value = @@ -153,6 +169,13 @@ class _AddFingerprintTypePageState extends State final PDuration selectDate = PDuration.parse( DateTime.tryParse(state.timeLimitEndTime.value)); Pickers.showDatePicker(context, + minDate: PDuration( + year: year, + month: month, + day: day, + hour: hour, + minute: minute, + ), selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (PDuration p) { state.timeLimitEndTime.value = diff --git a/lib/talk/starChart/views/guide/permission_guidance_logic.dart b/lib/talk/starChart/views/guide/permission_guidance_logic.dart new file mode 100644 index 00000000..d111726c --- /dev/null +++ b/lib/talk/starChart/views/guide/permission_guidance_logic.dart @@ -0,0 +1,3 @@ +import 'package:star_lock/tools/baseGetXController.dart'; + +class PermissionGuidanceLogic extends BaseGetXController {} diff --git a/lib/talk/starChart/views/guide/permission_guidance_page.dart b/lib/talk/starChart/views/guide/permission_guidance_page.dart new file mode 100644 index 00000000..08850eab --- /dev/null +++ b/lib/talk/starChart/views/guide/permission_guidance_page.dart @@ -0,0 +1,109 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/app_settings/app_colors.dart'; +import 'package:star_lock/tools/titleAppBar.dart'; + +class PermissionGuidancePage extends StatefulWidget { + const PermissionGuidancePage({Key? key}) : super(key: key); + + @override + State createState() => _PermissionGuidancePageState(); +} + +class _PermissionGuidancePageState extends State { + final PageController _pageController = PageController(); + int _currentPage = 0; + + final List> _stepsData = [ + { + 'image': 'images/guide/1.png', + 'text': '步骤1:打开应用信息,点击通知管理选项', + }, + { + 'image': 'images/guide/2.png', + 'text': '步骤2:下滑点击呼叫提醒的通知选项', + }, + { + 'image': 'images/guide/3.png', + 'text': '步骤3:选择在锁定屏幕上的选项设置', + }, + { + 'image': 'images/guide/4.png', + 'text': '步骤4:设置为显示通知及其内容', + }, + ]; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: TitleAppBar( + barTitle: '锁屏通知开启方式'.tr, + haveBack: true, + backgroundColor: AppColors.mainColor, + backAction: () { + Get.back(); + }, + ), + body: Column( + children: [ + Expanded( + child: PageView.builder( + controller: _pageController, + onPageChanged: (index) { + setState(() { + _currentPage = index; + }); + }, + itemCount: _stepsData.length, + itemBuilder: (context, index) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + _stepsData[index]['image']!, + width: 1.sw, + height: 0.55.sh, + fit: BoxFit.contain, + ), + SizedBox(height: 32.h), + Text( + _stepsData[index]['text']!, + style: TextStyle(fontSize: 28.sp), + textAlign: TextAlign.center, + ), + ], + ); + }, + ), + ), + SizedBox(height: 16), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: List.generate(_stepsData.length, (index) { + return Container( + margin: EdgeInsets.symmetric(horizontal: 4), + width: 10, + height: 10, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: _currentPage == index + ? AppColors.mainColor + : Colors.grey[300], + ), + ); + }), + ), + SizedBox(height: 24), + ], + ), + ); + } + + @override + void dispose() { + _pageController.dispose(); + super.dispose(); + } +} diff --git a/lib/talk/starChart/views/guide/permission_guidance_state.dart b/lib/talk/starChart/views/guide/permission_guidance_state.dart new file mode 100644 index 00000000..953f842d --- /dev/null +++ b/lib/talk/starChart/views/guide/permission_guidance_state.dart @@ -0,0 +1,3 @@ +class PermissionGuidanceState { + +} diff --git a/lib/talk/starChart/views/imageTransmission/image_transmission_page.dart b/lib/talk/starChart/views/imageTransmission/image_transmission_page.dart index 60b023bd..a7d1109e 100644 --- a/lib/talk/starChart/views/imageTransmission/image_transmission_page.dart +++ b/lib/talk/starChart/views/imageTransmission/image_transmission_page.dart @@ -1,6 +1,9 @@ +import 'dart:io'; + import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:star_lock/appRouters.dart'; import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/talk/call/callTalk.dart'; import 'package:star_lock/talk/starChart/constant/talk_status.dart'; @@ -64,6 +67,21 @@ class _ImageTransmissionPageState extends State backAction: () { logic.udpHangUpAction(); }, + actionsList: [ + Visibility( + visible: state.currentLanguage == 'zh_CN' && Platform.isAndroid, + child: IconButton( + icon: Icon( + Icons.notification_add_sharp, + size: 32.w, + color: Colors.white, + ), + onPressed: () { + Get.toNamed(Routers.permissionGuidancePage); + }, + ), + ) + ], ), body: Obx(() => Column( children: [ diff --git a/lib/talk/starChart/views/imageTransmission/image_transmission_state.dart b/lib/talk/starChart/views/imageTransmission/image_transmission_state.dart index a7cd0efc..20d48e3e 100644 --- a/lib/talk/starChart/views/imageTransmission/image_transmission_state.dart +++ b/lib/talk/starChart/views/imageTransmission/image_transmission_state.dart @@ -13,6 +13,7 @@ import 'package:star_lock/talk/starChart/constant/talk_status.dart'; import 'package:star_lock/talk/starChart/handle/other/talk_data_repository.dart'; import 'package:star_lock/talk/starChart/proto/talk_data.pb.dart'; import 'package:star_lock/talk/starChart/status/star_chart_talk_status.dart'; +import 'package:star_lock/translations/current_locale_tool.dart'; import '../../../../tools/storage.dart'; @@ -91,4 +92,7 @@ class ImageTransmissionState{ RxBool hasAudioData = false.obs; // 是否有音频数据 RxInt lastAudioTimestamp = 0.obs; // 最后接收到的音频数据的时间戳 Rx currentImage = Rx(null); + + RxString currentLanguage = + CurrentLocaleTool.getCurrentLocaleString().obs; // 当前选择语言 } \ No newline at end of file diff --git a/lib/talk/starChart/views/native/talk_view_native_decode_page.dart b/lib/talk/starChart/views/native/talk_view_native_decode_page.dart index f4a7eb13..84c29c3d 100644 --- a/lib/talk/starChart/views/native/talk_view_native_decode_page.dart +++ b/lib/talk/starChart/views/native/talk_view_native_decode_page.dart @@ -9,6 +9,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:http/http.dart' as http; import 'package:provider/provider.dart'; +import 'package:star_lock/appRouters.dart'; import 'package:star_lock/flavors.dart'; import 'package:star_lock/talk/call/callTalk.dart'; import 'package:star_lock/talk/starChart/constant/talk_status.dart'; @@ -332,9 +333,10 @@ class _TalkViewNativeDecodePageState extends State color: state.currentQuality.value == q ? AppColors.mainColor : Colors.black, - fontWeight: state.currentQuality.value == q - ? FontWeight.bold - : FontWeight.normal, + fontWeight: + state.currentQuality.value == q + ? FontWeight.bold + : FontWeight.normal, fontSize: 28.sp, ), ), @@ -350,9 +352,27 @@ class _TalkViewNativeDecodePageState extends State ); }, child: Container( - child: Icon(Icons.high_quality_outlined, color: Colors.white, size: 38.w), + child: Icon(Icons.high_quality_outlined, + color: Colors.white, size: 38.w), ), ), + Visibility( + visible: state.currentLanguage == 'zh_CN' && Platform.isAndroid, + child: SizedBox(width: 38.w), + ), + Visibility( + visible: state.currentLanguage == 'zh_CN' && Platform.isAndroid, + child: IconButton( + icon: Icon( + Icons.notification_add_sharp, + size: 32.w, + color: Colors.white, + ), + onPressed: () { + Get.toNamed(Routers.permissionGuidancePage); + }, + ), + ) ]); } diff --git a/lib/talk/starChart/views/native/talk_view_native_decode_state.dart b/lib/talk/starChart/views/native/talk_view_native_decode_state.dart index 8d176500..c9be5f57 100644 --- a/lib/talk/starChart/views/native/talk_view_native_decode_state.dart +++ b/lib/talk/starChart/views/native/talk_view_native_decode_state.dart @@ -15,6 +15,7 @@ import 'package:star_lock/talk/starChart/handle/other/packet_loss_statistics.dar import 'package:star_lock/talk/starChart/handle/other/talk_data_repository.dart'; import 'package:star_lock/talk/starChart/proto/talk_data.pb.dart'; import 'package:star_lock/talk/starChart/status/star_chart_talk_status.dart'; +import 'package:star_lock/translations/current_locale_tool.dart'; import 'package:video_decode_plugin/video_decode_plugin.dart'; import '../../../../tools/storage.dart'; @@ -120,4 +121,7 @@ class TalkViewNativeDecodeState { // 当前清晰度选项,初始为'高清' RxString currentQuality = '高清'.obs; // 可选:高清、标清、流畅 + + RxString currentLanguage = + CurrentLocaleTool.getCurrentLocaleString().obs; // 当前选择语言 } diff --git a/lib/talk/starChart/views/talkView/talk_view_page.dart b/lib/talk/starChart/views/talkView/talk_view_page.dart index 7abb28b1..05680e88 100644 --- a/lib/talk/starChart/views/talkView/talk_view_page.dart +++ b/lib/talk/starChart/views/talkView/talk_view_page.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:io'; import 'dart:math'; import 'package:flutter/material.dart'; @@ -7,6 +8,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:http/http.dart' as http; import 'package:provider/provider.dart'; +import 'package:star_lock/appRouters.dart'; import 'package:star_lock/flavors.dart'; import 'package:star_lock/talk/call/callTalk.dart'; import 'package:star_lock/talk/starChart/constant/talk_status.dart'; @@ -405,6 +407,23 @@ class _TalkViewPageState extends State image: const AssetImage('images/main/icon_lockDetail_rectangle.png'), ), ), + Visibility( + visible: state.currentLanguage == 'zh_CN' && Platform.isAndroid, + child: SizedBox(width: 38.w), + ), + Visibility( + visible: state.currentLanguage == 'zh_CN' && Platform.isAndroid, + child: IconButton( + icon: Icon( + Icons.notification_add_sharp, + size: 32.w, + color: Colors.white, + ), + onPressed: () { + Get.toNamed(Routers.permissionGuidancePage); + }, + ), + ) ]); } diff --git a/lib/talk/starChart/views/talkView/talk_view_state.dart b/lib/talk/starChart/views/talkView/talk_view_state.dart index 02f83efb..7cd7039f 100644 --- a/lib/talk/starChart/views/talkView/talk_view_state.dart +++ b/lib/talk/starChart/views/talkView/talk_view_state.dart @@ -13,6 +13,7 @@ import 'package:star_lock/talk/starChart/constant/talk_status.dart'; import 'package:star_lock/talk/starChart/handle/other/talk_data_repository.dart'; import 'package:star_lock/talk/starChart/proto/talk_data.pb.dart'; import 'package:star_lock/talk/starChart/status/star_chart_talk_status.dart'; +import 'package:star_lock/translations/current_locale_tool.dart'; import '../../../../tools/storage.dart'; @@ -91,4 +92,7 @@ class TalkViewState { RxBool hasAudioData = false.obs; // 是否有音频数据 RxInt lastAudioTimestamp = 0.obs; // 最后接收到的音频数据的时间戳 Rx currentImage = Rx(null); + + RxString currentLanguage = + CurrentLocaleTool.getCurrentLocaleString().obs; // 当前选择语言 }