Files
Fondex/lib/widget/story_view/controller/story_controller.dart

38 lines
1.0 KiB
Dart

import 'package:rxdart/rxdart.dart';
enum PlaybackState { pause, play, next, previous }
/// Controller to sync playback between animated child (story) views. This
/// helps make sure when stories are paused, the animation (gifs/slides) are
/// also paused.
/// Another reason for using the controller is to place the stories on `paused`
/// state when a media is loading.
class StoryController {
/// Stream that broadcasts the playback state of the stories.
final playbackNotifier = BehaviorSubject<PlaybackState>();
/// Notify listeners with a [PlaybackState.pause] state
void pause() {
playbackNotifier.add(PlaybackState.pause);
}
/// Notify listeners with a [PlaybackState.play] state
void play() {
playbackNotifier.add(PlaybackState.play);
}
void next() {
playbackNotifier.add(PlaybackState.next);
}
void previous() {
playbackNotifier.add(PlaybackState.previous);
}
/// Remember to call dispose when the story screen is disposed to close
/// the notifier stream.
void dispose() {
playbackNotifier.close();
}
}