chore: Waveform follow up

This commit is contained in:
Christian Pauly 2022-01-01 16:23:17 +01:00
parent e9400ca7b0
commit 5fd68d489d
2 changed files with 31 additions and 21 deletions

View File

@ -142,7 +142,7 @@ class _AudioPlayerState extends State<AudioPlayerWidget> {
return '${duration.inMinutes.toString().padLeft(2, '0')}:${(duration.inSeconds % 60).toString().padLeft(2, '0')}'; return '${duration.inMinutes.toString().padLeft(2, '0')}:${(duration.inSeconds % 60).toString().padLeft(2, '0')}';
} }
List<int> get waveform { List<int> _getWaveform() {
final eventWaveForm = widget.event.content final eventWaveForm = widget.event.content
.tryGetMap<String, dynamic>('org.matrix.msc1767.audio') .tryGetMap<String, dynamic>('org.matrix.msc1767.audio')
?.tryGetList<int>('waveform'); ?.tryGetList<int>('waveform');
@ -163,6 +163,14 @@ class _AudioPlayerState extends State<AudioPlayerWidget> {
return eventWaveForm; return eventWaveForm;
} }
late final List<int> waveform;
@override
void initState() {
super.initState();
waveform = _getWaveform();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final statusText = this.statusText ??= _durationString ?? '00:00'; final statusText = this.statusText ??= _durationString ?? '00:00';

View File

@ -125,28 +125,30 @@ class _RecordingDialogState extends State<RecordingDialog> {
), ),
), ),
Expanded( Expanded(
child: Center( child: Row(
child: Row( mainAxisSize: MainAxisSize.min,
mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.end, children: amplitudeTimeline.reversed
children: amplitudeTimeline.reversed .take(26)
.take(26) .toList()
.toList() .reversed
.reversed .map((amplitude) => Container(
.map((amplitude) => Container( margin: const EdgeInsets.only(left: 2),
margin: const EdgeInsets.only(left: 2), width: 4,
width: 4, decoration: BoxDecoration(
decoration: BoxDecoration( color: Theme.of(context).colorScheme.primary,
color: Theme.of(context).colorScheme.primary, borderRadius:
borderRadius: BorderRadius.circular(AppConfig.borderRadius),
BorderRadius.circular(AppConfig.borderRadius), ),
), height: maxDecibalWidth * (amplitude / 100)))
height: maxDecibalWidth * (amplitude / 100))) .toList(),
.toList(),
),
), ),
), ),
Text(time), const SizedBox(width: 8),
SizedBox(
width: 48,
child: Text(time),
),
], ],
); );
if (PlatformInfos.isCupertinoStyle) { if (PlatformInfos.isCupertinoStyle) {