controller.dart 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import 'dart:io';
  2. import 'package:electronic_assistant/base/base_controller.dart';
  3. import 'package:electronic_assistant/utils/audio_picker_utils.dart';
  4. import 'package:electronic_assistant/utils/toast_util.dart';
  5. import 'package:get/get.dart';
  6. import 'package:photo_manager/photo_manager.dart';
  7. import 'package:uuid/uuid.dart';
  8. import '../../data/bean/talks.dart';
  9. import '../../data/repositories/talk_repository.dart';
  10. import '../talk/view.dart';
  11. class AudioPickerController extends BaseController {
  12. final audioList = RxList<AssetEntity>();
  13. AssetPathEntity? currentPath;
  14. @override
  15. void onReady() async {
  16. super.onReady();
  17. if (!await AudioPickerUtils.hasPermission()) {
  18. bool permission = await AudioPickerUtils.requestPermissionExtend();
  19. if (!permission) {
  20. ToastUtil.showToast('授权失败');
  21. return;
  22. }
  23. }
  24. currentPath = await initPathEntity();
  25. requestList();
  26. }
  27. void requestList() {
  28. if (currentPath == null) {
  29. return;
  30. }
  31. AudioPickerUtils.getAssetList(currentPath!, 0).then((value) {
  32. audioList.addAll(value);
  33. });
  34. }
  35. Future<AssetPathEntity?> initPathEntity() async {
  36. List<AssetPathEntity> listEntity =
  37. await AudioPickerUtils.getAssetPathList();
  38. if (listEntity.isEmpty) {
  39. return null;
  40. }
  41. return listEntity.first;
  42. }
  43. void onItemClick(AssetEntity entity) async {
  44. File? file = await entity.file;
  45. if (file == null) {
  46. ToastUtil.showToast('文件不存在');
  47. return;
  48. }
  49. //上传文件
  50. try {
  51. TalkBean bean = await talkRepository.talkCreate(
  52. const Uuid().v4(), entity.duration,
  53. localAudioUrl: entity.id, uploadType: FileUploadType.local);
  54. Get.back();
  55. TalkPage.start(bean);
  56. } catch (e) {
  57. ToastUtil.showToast(e.toString());
  58. }
  59. }
  60. }