diff --git a/b0esche_cloud/lib/pages/public_file_viewer.dart b/b0esche_cloud/lib/pages/public_file_viewer.dart index 612a68e..84f7b03 100644 --- a/b0esche_cloud/lib/pages/public_file_viewer.dart +++ b/b0esche_cloud/lib/pages/public_file_viewer.dart @@ -108,7 +108,10 @@ class _PublicFileViewerState extends State { final bytes = await apiClient.getBytes(path); final mimeType = _fileData?['capabilities']?['mimeType'] ?? 'video/mp4'; - final blob = web.Blob([bytes], mimeType); + final blob = web.Blob( + [Uint8List.fromList(bytes)], // ignore: argument_type_not_assignable + web.BlobPropertyBag(type: mimeType), + ); videoUrl = web.URL.createObjectURL(blob); } catch (e) { // Fallback to direct URL diff --git a/b0esche_cloud/lib/widgets/web_audio_player.dart b/b0esche_cloud/lib/widgets/web_audio_player.dart index 96e4fc1..90a7139 100644 --- a/b0esche_cloud/lib/widgets/web_audio_player.dart +++ b/b0esche_cloud/lib/widgets/web_audio_player.dart @@ -1,5 +1,6 @@ import 'package:web/web.dart' as web; import 'dart:async'; +import 'dart:typed_data'; import '../services/api_client.dart'; import '../injection.dart'; @@ -52,7 +53,10 @@ class AudioPlayer { final apiClient = getIt(); final path = url.replaceFirst(apiClient.baseUrl, ''); final bytes = await apiClient.getBytes(path); - final blob = web.Blob([bytes], mimeType ?? 'audio/mpeg'); + final blob = web.Blob( + [Uint8List.fromList(bytes)], // ignore: argument_type_not_assignable + web.BlobPropertyBag(type: mimeType ?? 'audio/mpeg'), + ); final blobUrl = web.URL.createObjectURL(blob); _audioElement = web.HTMLAudioElement(); @@ -128,7 +132,6 @@ class AudioPlayer { web.URL.revokeObjectURL(_blobUrl!); _blobUrl = null; } - } _audioElement = null; _positionController.close(); _durationController.close();