chore: Follow up background audio player
Signed-off-by: Christian Kußowski <c.kussowski@famedly.com>
This commit is contained in:
parent
9da7a5704e
commit
b022741310
1 changed files with 35 additions and 38 deletions
|
|
@ -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,38 +63,35 @@ 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: [
|
stream: audioPlayer.playerStateStream.asBroadcastStream(),
|
||||||
StreamBuilder(
|
builder: (context, _) => IconButton(
|
||||||
stream: audioPlayer.playerStateStream.asBroadcastStream(),
|
onPressed: () {
|
||||||
builder: (context, _) => IconButton(
|
if (audioPlayer.isAtEndPosition) {
|
||||||
onPressed: () {
|
audioPlayer.seek(Duration.zero);
|
||||||
if (audioPlayer.isAtEndPosition) {
|
} else if (audioPlayer.playing) {
|
||||||
audioPlayer.seek(Duration.zero);
|
audioPlayer.pause();
|
||||||
} else if (audioPlayer.playing) {
|
} else {
|
||||||
audioPlayer.pause();
|
audioPlayer.play();
|
||||||
} else {
|
}
|
||||||
audioPlayer.play();
|
},
|
||||||
}
|
icon: audioPlayer.playing && !audioPlayer.isAtEndPosition
|
||||||
},
|
? const Icon(Icons.pause_outlined)
|
||||||
icon: audioPlayer.playing && !audioPlayer.isAtEndPosition
|
: const Icon(Icons.play_arrow_outlined),
|
||||||
? const Icon(Icons.pause_outlined)
|
),
|
||||||
: const Icon(Icons.play_arrow_outlined),
|
),
|
||||||
),
|
content: StreamBuilder(
|
||||||
|
stream: audioPlayer.positionStream.asBroadcastStream(),
|
||||||
|
builder: (context, _) => GestureDetector(
|
||||||
|
onTap: () => FluffyChatApp.router.go(
|
||||||
|
'/rooms/${widget.event.room.id}?event=${widget.event.eventId}',
|
||||||
),
|
),
|
||||||
Expanded(
|
child: Text(
|
||||||
child: StreamBuilder(
|
'🎙️ ${audioPlayer.position.minuteSecondString} / ${audioPlayer.duration?.minuteSecondString} - ${widget.event.senderFromMemoryOrFallback.calcDisplayname()}',
|
||||||
stream: audioPlayer.positionStream.asBroadcastStream(),
|
maxLines: 1,
|
||||||
builder: (context, _) {
|
overflow: TextOverflow.ellipsis,
|
||||||
return Text(
|
|
||||||
'🎙️ ${audioPlayer.position.minuteSecondString} / ${audioPlayer.duration?.minuteSecondString} - ${widget.event.senderFromMemoryOrFallback.calcDisplayname()}',
|
|
||||||
maxLines: 1,
|
|
||||||
overflow: TextOverflow.ellipsis,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
],
|
),
|
||||||
),
|
),
|
||||||
actions: [
|
actions: [
|
||||||
IconButton(
|
IconButton(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue