Add video store

This commit is contained in:
tommyxchow 2021-11-11 21:32:05 -05:00
parent e3f774d8e5
commit 9499511c48
2 changed files with 100 additions and 0 deletions

View file

@ -0,0 +1,51 @@
import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:mobx/mobx.dart';
import 'package:webview_flutter/webview_flutter.dart';
part 'video_store.g.dart';
class VideoStore = _VideoStoreBase with _$VideoStore;
abstract class _VideoStoreBase with Store {
late final WebViewController controller;
late Timer timer;
_VideoStoreBase() {
timer = Timer(const Duration(seconds: 5), () => menuVisible = false);
}
@observable
var menuVisible = true;
@observable
var paused = false;
void handlePausePlay() {
if (paused) {
controller.runJavascript('document.getElementsByTagName("video")[0].play();');
} else {
controller.runJavascript('document.getElementsByTagName("video")[0].pause();');
}
paused = !paused;
}
void handleVideoTap() async {
menuVisible = true;
timer.cancel();
timer = Timer(const Duration(seconds: 5), () {
debugPrint('timer thing');
menuVisible = false;
});
}
void removeOverlay() {
controller.runJavascript('document.getElementsByClassName("video-player__overlay")[0].innerHTML = "";');
}
void requestFullscreen() {
controller.runJavascript('document.getElementsByTagName("video")[0].requestFullscreen()');
}
}

View file

@ -0,0 +1,49 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'video_store.dart';
// **************************************************************************
// StoreGenerator
// **************************************************************************
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
mixin _$VideoStore on _VideoStoreBase, Store {
final _$menuVisibleAtom = Atom(name: '_VideoStoreBase.menuVisible');
@override
bool get menuVisible {
_$menuVisibleAtom.reportRead();
return super.menuVisible;
}
@override
set menuVisible(bool value) {
_$menuVisibleAtom.reportWrite(value, super.menuVisible, () {
super.menuVisible = value;
});
}
final _$pausedAtom = Atom(name: '_VideoStoreBase.paused');
@override
bool get paused {
_$pausedAtom.reportRead();
return super.paused;
}
@override
set paused(bool value) {
_$pausedAtom.reportWrite(value, super.paused, () {
super.paused = value;
});
}
@override
String toString() {
return '''
menuVisible: ${menuVisible},
paused: ${paused}
''';
}
}