chore: Follow up background audio player

Signed-off-by: Christian Kußowski <c.kussowski@famedly.com>
This commit is contained in:
Christian Kußowski 2025-05-11 10:46:39 +02:00
commit b022741310
No known key found for this signature in database
GPG key ID: E067ECD60F1A0652

View file

@ -1,23 +1,23 @@
import 'dart:async'; import 'dart:async';
import 'dart:io'; import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:async/async.dart'; import 'package:async/async.dart';
import 'package:flutter_linkify/flutter_linkify.dart';
import 'package:just_audio/just_audio.dart';
import 'package:matrix/matrix.dart';
import 'package:opus_caf_converter_dart/opus_caf_converter_dart.dart';
import 'package:path_provider/path_provider.dart';
import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/config/app_config.dart';
import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/config/themes.dart';
import 'package:fluffychat/utils/error_reporter.dart'; import 'package:fluffychat/utils/error_reporter.dart';
import 'package:fluffychat/utils/file_description.dart'; import 'package:fluffychat/utils/file_description.dart';
import 'package:fluffychat/utils/localized_exception_extension.dart'; import 'package:fluffychat/utils/localized_exception_extension.dart';
import 'package:fluffychat/utils/url_launcher.dart'; import 'package:fluffychat/utils/url_launcher.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_linkify/flutter_linkify.dart';
import 'package:just_audio/just_audio.dart';
import 'package:matrix/matrix.dart';
import 'package:opus_caf_converter_dart/opus_caf_converter_dart.dart';
import 'package:path_provider/path_provider.dart';
import '../../../utils/matrix_sdk_extensions/event_extension.dart'; import '../../../utils/matrix_sdk_extensions/event_extension.dart';
import '../../../widgets/fluffy_chat_app.dart';
import '../../../widgets/matrix.dart'; import '../../../widgets/matrix.dart';
class AudioPlayerWidget extends StatefulWidget { class AudioPlayerWidget extends StatefulWidget {
@ -63,9 +63,7 @@ class AudioPlayerState extends State<AudioPlayerWidget> {
ScaffoldMessenger.of(matrix.context).showMaterialBanner( ScaffoldMessenger.of(matrix.context).showMaterialBanner(
MaterialBanner( MaterialBanner(
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
content: Row( leading: StreamBuilder(
children: [
StreamBuilder(
stream: audioPlayer.playerStateStream.asBroadcastStream(), stream: audioPlayer.playerStateStream.asBroadcastStream(),
builder: (context, _) => IconButton( builder: (context, _) => IconButton(
onPressed: () { onPressed: () {
@ -82,19 +80,18 @@ class AudioPlayerState extends State<AudioPlayerWidget> {
: const Icon(Icons.play_arrow_outlined), : const Icon(Icons.play_arrow_outlined),
), ),
), ),
Expanded( content: StreamBuilder(
child: StreamBuilder(
stream: audioPlayer.positionStream.asBroadcastStream(), stream: audioPlayer.positionStream.asBroadcastStream(),
builder: (context, _) { builder: (context, _) => GestureDetector(
return Text( onTap: () => FluffyChatApp.router.go(
'/rooms/${widget.event.room.id}?event=${widget.event.eventId}',
),
child: Text(
'🎙️ ${audioPlayer.position.minuteSecondString} / ${audioPlayer.duration?.minuteSecondString} - ${widget.event.senderFromMemoryOrFallback.calcDisplayname()}', '🎙️ ${audioPlayer.position.minuteSecondString} / ${audioPlayer.duration?.minuteSecondString} - ${widget.event.senderFromMemoryOrFallback.calcDisplayname()}',
maxLines: 1, maxLines: 1,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
);
},
), ),
), ),
],
), ),
actions: [ actions: [
IconButton( IconButton(