spotube/lib/hooks/useSyncedLyrics.dart
Kingkor Roy Tirtho 8af0281b23 SyncedLyrics autoscrolling active lyric implementation
improved title cleaning for youtube search
2022-04-20 21:29:18 +06:00

24 lines
685 B
Dart

import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:spotube/provider/AudioPlayer.dart';
useSyncedLyrics(WidgetRef ref, Map<int, String> lyricsMap) {
final player = ref.watch(audioPlayerProvider);
final stream = player.positionStream.isBroadcast
? player.positionStream
: player.positionStream.asBroadcastStream();
final currentTime = useState(0);
useEffect(() {
final lol = stream.listen((pos) {
if (lyricsMap.containsKey(pos.inSeconds)) {
currentTime.value = pos.inSeconds;
}
});
return () => lol.cancel();
}, [lyricsMap]);
return currentTime.value;
}