Skip to content

Commit

Permalink
Added double-tap to skip
Browse files Browse the repository at this point in the history
  • Loading branch information
creeperkafasi committed Oct 1, 2023
1 parent 77f7f0d commit 96dee30
Show file tree
Hide file tree
Showing 5 changed files with 86 additions and 73 deletions.
1 change: 0 additions & 1 deletion lib/home.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:miteru/search.dart';
import 'package:miteru/show.dart';
import 'package:miteru/trackers.dart';
Expand Down
1 change: 0 additions & 1 deletion lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import 'dart:io';

import 'package:flutter/scheduler.dart';
import 'package:flutter/services.dart';
import 'package:fvp/fvp.dart';
import 'package:miteru/home.dart';
Expand Down
143 changes: 78 additions & 65 deletions lib/watch.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ class _WatchPageState extends State<WatchPage> {

Duration? savedPosition;

double skipMultiplier = 0;

@override
void initState() {
super.initState();
Expand Down Expand Up @@ -72,72 +74,83 @@ class _WatchPageState extends State<WatchPage> {
),
),
},
child: Focus(
autofocus: true,
child: SafeArea(
child: Container(
color: Colors.black,
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
child: Builder(builder: (context) {
playerController = VideoPlayerController.networkUrl(
widget.qualities[selectedQualityIndex].url,
);
return Chewie(
controller: ChewieController(
startAt: savedPosition ?? Duration.zero,
autoPlay: savedPosition != null,
videoPlayerController: playerController!,
aspectRatio: aspectRatio,
autoInitialize: true,
additionalOptions: (context) => [
OptionItem(
onTap: () {
showDialog(
context: context,
builder: ((context) {
return SimpleDialog(
title: const Text("Select Quality:"),
children: [
Column(
children: widget.qualities
.map(
(e) => Padding(
padding:
const EdgeInsets.all(8.0),
child: TextButton.icon(
onPressed: () async {
savedPosition =
await playerController
?.position;
setState(() {
playerController
?.dispose();
selectedQualityIndex =
widget.qualities
.indexOf(e);
});
},
icon: const Icon(
Icons.settings),
label: Text(e.name),
child: GestureDetector(
onDoubleTapDown: (details) {
final screenLoc =
(details.globalPosition.dx / MediaQuery.of(context).size.width);
skipMultiplier = (2 * screenLoc - 1) * 10;
},
onDoubleTap: () async => playerController?.seekTo(
(await playerController!.position)! +
Duration(seconds: (2 * skipMultiplier).toInt()),
),
child: Focus(
autofocus: true,
child: SafeArea(
child: Container(
color: Colors.black,
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
child: Builder(builder: (context) {
playerController = VideoPlayerController.networkUrl(
widget.qualities[selectedQualityIndex].url,
);
return Chewie(
controller: ChewieController(
startAt: savedPosition ?? Duration.zero,
autoPlay: savedPosition != null,
videoPlayerController: playerController!,
aspectRatio: aspectRatio,
autoInitialize: true,
additionalOptions: (context) => [
OptionItem(
onTap: () {
showDialog(
context: context,
builder: ((context) {
return SimpleDialog(
title: const Text("Select Quality:"),
children: [
Column(
children: widget.qualities
.map(
(e) => Padding(
padding:
const EdgeInsets.all(8.0),
child: TextButton.icon(
onPressed: () async {
savedPosition =
await playerController
?.position;
setState(() {
playerController
?.dispose();
selectedQualityIndex =
widget.qualities
.indexOf(e);
});
},
icon: const Icon(
Icons.settings),
label: Text(e.name),
),
),
),
)
.toList()),
],
);
}));
},
iconData: Icons.high_quality,
title: "Quality",
)
],
// autoPlay: true,
// fullScreenByDefault: true,
),
);
}),
)
.toList()),
],
);
}));
},
iconData: Icons.high_quality,
title: "Quality",
)
],
// autoPlay: true,
// fullScreenByDefault: true,
),
);
}),
),
),
),
),
Expand Down
2 changes: 2 additions & 0 deletions macos/Flutter/GeneratedPluginRegistrant.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@ import fvp
import path_provider_foundation
import shared_preferences_foundation
import sqlite3_flutter_libs
import video_player_avfoundation
import wakelock_macos

func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
FvpPlugin.register(with: registry.registrar(forPlugin: "FvpPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
Sqlite3FlutterLibsPlugin.register(with: registry.registrar(forPlugin: "Sqlite3FlutterLibsPlugin"))
FVPVideoPlayerPlugin.register(with: registry.registrar(forPlugin: "FVPVideoPlayerPlugin"))
WakelockMacosPlugin.register(with: registry.registrar(forPlugin: "WakelockMacosPlugin"))
}
12 changes: 6 additions & 6 deletions pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ packages:
dependency: transitive
description:
name: archive
sha256: "20071638cbe4e5964a427cfa0e86dce55d060bc7d82d56f3554095d7239a8765"
sha256: "06a96f1249f38a00435b3b0c9a3246d934d7dbc8183fc7c9e56989860edb99d4"
url: "https://pub.dev"
source: hosted
version: "3.4.2"
version: "3.4.4"
args:
dependency: transitive
description:
Expand Down Expand Up @@ -577,10 +577,10 @@ packages:
dependency: transitive
description:
name: video_player_avfoundation
sha256: c3b123a5a56c9812b9029f840c65b92fd65083eb08d69be016b01e8aa018f77d
sha256: "6387c2de77763b45104256b3b00b660089be4f909ded8631457dc11bf635e38f"
url: "https://pub.dev"
source: hosted
version: "2.4.10"
version: "2.5.0"
video_player_platform_interface:
dependency: transitive
description:
Expand All @@ -593,10 +593,10 @@ packages:
dependency: transitive
description:
name: video_player_web
sha256: "66fc0d56554143fee4c623f70e45e4272b94fd246283cb67edabb9d1e4122a4f"
sha256: "2dd24f7ba46bfb5d070e9c795001db95e0ca5f2a3d025e98f287c10c9f0fd62f"
url: "https://pub.dev"
source: hosted
version: "2.1.0"
version: "2.1.1"
wakelock:
dependency: "direct main"
description:
Expand Down

0 comments on commit 96dee30

Please sign in to comment.