|
@@ -5,9 +5,9 @@ import 'package:electronic_assistant/resource/string.gen.dart';
|
|
|
import 'package:electronic_assistant/utils/audio_picker_utils.dart';
|
|
import 'package:electronic_assistant/utils/audio_picker_utils.dart';
|
|
|
import 'package:electronic_assistant/utils/error_handler.dart';
|
|
import 'package:electronic_assistant/utils/error_handler.dart';
|
|
|
import 'package:electronic_assistant/utils/file_upload_check_helper.dart';
|
|
import 'package:electronic_assistant/utils/file_upload_check_helper.dart';
|
|
|
-import 'package:electronic_assistant/utils/http_handler.dart';
|
|
|
|
|
import 'package:electronic_assistant/utils/toast_util.dart';
|
|
import 'package:electronic_assistant/utils/toast_util.dart';
|
|
|
import 'package:flutter/cupertino.dart';
|
|
import 'package:flutter/cupertino.dart';
|
|
|
|
|
+import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
|
import 'package:get/get.dart';
|
|
import 'package:get/get.dart';
|
|
|
import 'package:photo_manager/photo_manager.dart';
|
|
import 'package:photo_manager/photo_manager.dart';
|
|
|
import 'package:pull_to_refresh/pull_to_refresh.dart';
|
|
import 'package:pull_to_refresh/pull_to_refresh.dart';
|
|
@@ -15,6 +15,8 @@ import 'package:uuid/uuid.dart';
|
|
|
|
|
|
|
|
import '../../data/bean/talks.dart';
|
|
import '../../data/bean/talks.dart';
|
|
|
import '../../data/repositories/talk_repository.dart';
|
|
import '../../data/repositories/talk_repository.dart';
|
|
|
|
|
+import '../../dialog/alert_dialog.dart';
|
|
|
|
|
+import '../../resource/colors.gen.dart';
|
|
|
import '../talk/view.dart';
|
|
import '../talk/view.dart';
|
|
|
|
|
|
|
|
class AudioPickerController extends BaseController {
|
|
class AudioPickerController extends BaseController {
|
|
@@ -34,9 +36,15 @@ class AudioPickerController extends BaseController {
|
|
|
void onReady() async {
|
|
void onReady() async {
|
|
|
super.onReady();
|
|
super.onReady();
|
|
|
if (!await AudioPickerUtils.hasPermission()) {
|
|
if (!await AudioPickerUtils.hasPermission()) {
|
|
|
- bool permission = await AudioPickerUtils.requestPermissionExtend();
|
|
|
|
|
- if (!permission) {
|
|
|
|
|
- ToastUtil.showToast(StringName.authorizationFailed.tr);
|
|
|
|
|
|
|
+ bool isAllow = await _showRequestPermissionDialog();
|
|
|
|
|
+ if (isAllow) {
|
|
|
|
|
+ bool permission = await AudioPickerUtils.requestPermissionExtend();
|
|
|
|
|
+ if (!permission) {
|
|
|
|
|
+ _onRecordPermissionDenied();
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ _onRecordPermissionDenied();
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -45,6 +53,34 @@ class AudioPickerController extends BaseController {
|
|
|
requestList(0, limit, isClearAll: true);
|
|
requestList(0, limit, isClearAll: true);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ _onRecordPermissionDenied() {
|
|
|
|
|
+ ToastUtil.showToast(StringName.authorizationFailed.tr);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ Future<bool> _showRequestPermissionDialog() async {
|
|
|
|
|
+ bool? isAllow = await EAAlertDialog.show(
|
|
|
|
|
+ contentWidget: Container(
|
|
|
|
|
+ margin: EdgeInsets.only(top: 16.h),
|
|
|
|
|
+ child: Text(
|
|
|
|
|
+ textAlign: TextAlign.center,
|
|
|
|
|
+ '是否允许小听获取此设备的存储权限,为您提供转文字、智能总结服务?',
|
|
|
|
|
+ style: TextStyle(
|
|
|
|
|
+ fontWeight: FontWeight.bold,
|
|
|
|
|
+ fontSize: 15.sp,
|
|
|
|
|
+ color: ColorName.primaryTextColor),
|
|
|
|
|
+ ),
|
|
|
|
|
+ ),
|
|
|
|
|
+ cancelText: '禁止',
|
|
|
|
|
+ confirmText: '允许',
|
|
|
|
|
+ cancelOnTap: () {
|
|
|
|
|
+ EAAlertDialog.dismiss(result: false);
|
|
|
|
|
+ },
|
|
|
|
|
+ confirmOnTap: () {
|
|
|
|
|
+ EAAlertDialog.dismiss(result: true);
|
|
|
|
|
+ });
|
|
|
|
|
+ return isAllow ?? false;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
void requestList(int offset, int limit, {bool? isClearAll = false}) {
|
|
void requestList(int offset, int limit, {bool? isClearAll = false}) {
|
|
|
if (currentPath == null) {
|
|
if (currentPath == null) {
|
|
|
return;
|
|
return;
|