mucke/lib/presentation/widgets/time_progress_indicator.dart
2021-02-26 22:07:18 +01:00

66 lines
2 KiB
Dart

import 'dart:math';
import 'package:flutter/material.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:provider/provider.dart';
import '../state/audio_store.dart';
import '../utils.dart';
class TimeProgressIndicator extends StatelessWidget {
const TimeProgressIndicator({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
final AudioStore audioStore = Provider.of<AudioStore>(context);
return Observer(
builder: (BuildContext context) {
final duration =
Duration(milliseconds: audioStore.currentSongStream.value?.duration ?? 1000);
return Row(
children: [
Container(
width: 48,
child: Text(
msToTimeString(audioStore.currentPositionStream.value),
),
),
Expanded(
child: Container(
width: double.infinity,
height: 3.0,
decoration: const BoxDecoration(
color: Colors.white10,
borderRadius: BorderRadius.all(Radius.circular(2)),
),
alignment: Alignment.centerLeft,
child: FractionallySizedBox(
widthFactor: min(
audioStore.currentPositionStream.value.inMilliseconds / duration.inMilliseconds,
1.0,
),
heightFactor: 1.0,
child: Container(
height: double.infinity,
decoration: const BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(2)),
),
),
),
),
),
Container(
width: 48,
alignment: Alignment.centerRight,
child: Text(msToTimeString(duration)),
),
],
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
);
},
);
}
}