diff --git a/lib/modules/meeting/controllers/meeting_connect_controller.dart b/lib/modules/meeting/controllers/meeting_connect_controller.dart index 440b917b5..eb2de4baf 100644 --- a/lib/modules/meeting/controllers/meeting_connect_controller.dart +++ b/lib/modules/meeting/controllers/meeting_connect_controller.dart @@ -227,8 +227,11 @@ class MeetingConnectController extends GetxController { (sum, entry) => sum + (entry.size ?? 0), ); for (var i = 0; i < listDirectory.length; i++) { - importedFilesStr.value = - 'downloadingFileProgress'.trParams({'total': '${listDirectory.length}', 'current': '${i + 1}'}); // 对应中文:共{total}个文件,正在下载第{current}个文件 + importedFilesStr.value = 'downloadingFileProgress' + .tr + .replaceAll('{total}', '${listDirectory.length}') + .replaceAll('{current}', + '${i + 1}'); // 对应中文:共{total}个文件,正在下载第{current}个文件 int previousSize = i > 0 ? listDirectory[i - 1].size ?? 0 : 0; FTPEntry element = listDirectory[i]; await _downloadFile(totalSize, previousSize, element); @@ -236,7 +239,8 @@ class MeetingConnectController extends GetxController { } await _disconnect(); stateStr.value = 'downloadComplete'.tr; // 对应中文:下载完成 - importedFilesStr.value = 'downloadCompleteInfo'.trParams({'count': '${listDirectory.length}'}); // 对应中文:下载完成,共{count}个文件,2秒后自动返回 + importedFilesStr.value = 'downloadCompleteInfo'.tr.replaceAll('{count}', + '${listDirectory.length}'); // 对应中文:下载完成,共{count}个文件,2秒后自动返回 Future.delayed(const Duration(seconds: 2), () { _executeUpload(); Get.back(); diff --git a/lib/modules/meeting/controllers/meeting_home_controller.dart b/lib/modules/meeting/controllers/meeting_home_controller.dart index 470b312d5..c579bd8e8 100644 --- a/lib/modules/meeting/controllers/meeting_home_controller.dart +++ b/lib/modules/meeting/controllers/meeting_home_controller.dart @@ -95,7 +95,7 @@ class MeetingHomeController extends GetxController { final deviceInfo = DeviceInfoPlugin(); final androidInfo = await deviceInfo.androidInfo; final sdkVersion = androidInfo.version.sdkInt; - + // Android 11+ (API 30+) 不需要存储权限 if (sdkVersion >= 30) { Logger.d("Permission", "Android 11+版本,无需请求存储权限"); @@ -106,13 +106,15 @@ class MeetingHomeController extends GetxController { // 如果获取版本失败,为了兼容性还是请求权限 } } - + PermissionUtil.instance .requestPermission( permissionType: Permission.storage, permissionName: "meetingStoragePermission".tr, // 对应中文:存储 - explanationText: "meetingStoragePermissionExplanation".tr, // 对应中文:我们需要访问存储权限,以便您可以选择并上传音频文件。 - permanentDenialText: "meetingStoragePermissionPermanentDenial".tr, // 对应中文:检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。 + explanationText: "meetingStoragePermissionExplanation" + .tr, // 对应中文:我们需要访问存储权限,以便您可以选择并上传音频文件。 + permanentDenialText: "meetingStoragePermissionPermanentDenial" + .tr, // 对应中文:检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。 ) .then((granted) { if (granted) { @@ -169,7 +171,9 @@ class MeetingHomeController extends GetxController { EasyLoading.showToast('shareComplete'.tr); // 对应中文:分享完成! } catch (e) { - EasyLoading.showToast('shareFailed'.trParams({'error': e.toString()})); // 对应中文:分享失败: {error} + EasyLoading.showToast('shareFailed' + .tr + .replaceAll('{error}', e.toString())); // 对应中文:分享失败: {error} } } @@ -258,12 +262,21 @@ class MeetingHomeController extends GetxController { addUp++; } } catch (e) { - print('fileProcessingFailed'.trParams({'filePath': fileEntity.path, 'error': e.toString()})); // 对应中文:文件处理失败: {filePath}, 错误: {error} + print('fileProcessingFailed' + .tr + .replaceAll('{filePath}', fileEntity.path) + .replaceAll('{error}', + e.toString())); // 对应中文:文件处理失败: {filePath}, 错误: {error} } } - if (addUp > 0) EasyLoading.showSuccess('importSuccess'.trParams({'count': '$addUp'})); // 对应中文:成功导入本地 {count} 条录音 + if (addUp > 0) + EasyLoading.showSuccess('importSuccess' + .tr + .replaceAll('{count}', '$addUp')); // 对应中文:成功导入本地 {count} 条录音 } catch (e) { - EasyLoading.showError('importError'.trParams({'error': e.toString()})); // 对应中文:导入失败: {error} + EasyLoading.showError('importError' + .tr + .replaceAll('{error}', e.toString())); // 对应中文:导入失败: {error} } finally { EasyLoading.dismiss(); } @@ -308,7 +321,11 @@ class MeetingHomeController extends GetxController { } } } catch (e) { - Logger.error('importFailed'.trParams({'filePath': filePath, 'error': e.toString()})); // 对应中文:导入文件失败: {filePath}, error: {error} + Logger.error('importFailed' + .tr + .replaceAll('{filePath}', filePath) + .replaceAll('{error}', + e.toString())); // 对应中文:导入文件失败: {filePath}, error: {error} } } EasyLoading.dismiss(); diff --git a/lib/modules/meeting/views/tabs/overview_tab.dart b/lib/modules/meeting/views/tabs/overview_tab.dart index 5d58d42ab..c43201d9d 100644 --- a/lib/modules/meeting/views/tabs/overview_tab.dart +++ b/lib/modules/meeting/views/tabs/overview_tab.dart @@ -71,7 +71,8 @@ class _OverviewTabState extends State { Padding( padding: EdgeInsets.symmetric(vertical: 10.w), child: Text( - 'keyEventsAnalyzed'.trParams({'count': '${_dataList.length}'}), // 对应中文:分析出{count}个关键事件。 + 'keyEventsAnalyzed'.tr.replaceAll('{count}', + '${_dataList.length}'), // 对应中文:分析出{count}个关键事件。 style: TextStyle( color: isDarkMode ? Colors.grey[400] : Colors.grey, fontSize: 12.sp, @@ -106,7 +107,8 @@ class _OverviewTabState extends State { Get.bottomSheet( const AIBottomSheet(), isScrollControlled: true, - backgroundColor: isDarkMode ? Colors.grey[800] : Colors.white, + backgroundColor: + isDarkMode ? Colors.grey[800] : Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.vertical( top: Radius.circular(12.r), @@ -125,7 +127,8 @@ class _OverviewTabState extends State { Get.bottomSheet( const GenerateBottomSheet(), isScrollControlled: true, - backgroundColor: isDarkMode ? Colors.grey[800] : Colors.grey[100], + backgroundColor: + isDarkMode ? Colors.grey[800] : Colors.grey[100], shape: RoundedRectangleBorder( borderRadius: BorderRadius.vertical( top: Radius.circular(12.r),