Skip to content

Commit 1a7c56a

Browse files
committed
feat: enable video player for all platforms
1 parent 91b71dc commit 1a7c56a

File tree

11 files changed

+27
-32
lines changed

11 files changed

+27
-32
lines changed

lib/pages/chat/events/video_player.dart

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ import 'package:matrix/matrix.dart';
88
import 'package:fluffychat/config/app_config.dart';
99
import 'package:fluffychat/config/setting_keys.dart';
1010
import 'package:fluffychat/utils/file_description.dart';
11-
import 'package:fluffychat/utils/matrix_sdk_extensions/event_extension.dart';
12-
import 'package:fluffychat/utils/platform_infos.dart';
1311
import 'package:fluffychat/utils/url_launcher.dart';
1412
import 'package:fluffychat/widgets/blur_hash.dart';
1513
import 'package:fluffychat/widgets/mxc_image.dart';
@@ -33,8 +31,6 @@ class EventVideoPlayer extends StatelessWidget {
3331

3432
@override
3533
Widget build(BuildContext context) {
36-
final supportsVideoPlayer = PlatformInfos.supportsVideoPlayer;
37-
3834
final blurHash =
3935
(event.infoMap as Map<String, dynamic>).tryGet<String>(
4036
'xyz.amorgan.blurhash',
@@ -63,16 +59,11 @@ class EventVideoPlayer extends StatelessWidget {
6359
color: Colors.black,
6460
borderRadius: BorderRadius.circular(AppConfig.borderRadius),
6561
child: InkWell(
66-
onTap: () => supportsVideoPlayer
67-
? showDialog(
68-
context: context,
69-
builder: (_) => ImageViewer(
70-
event,
71-
timeline: timeline,
72-
outerContext: context,
73-
),
74-
)
75-
: event.saveFile(context),
62+
onTap: () => showDialog(
63+
context: context,
64+
builder: (_) =>
65+
ImageViewer(event, timeline: timeline, outerContext: context),
66+
),
7667
borderRadius: BorderRadius.circular(AppConfig.borderRadius),
7768
child: SizedBox(
7869
width: width,
@@ -104,9 +95,7 @@ class EventVideoPlayer extends StatelessWidget {
10495
),
10596
Center(
10697
child: CircleAvatar(
107-
child: supportsVideoPlayer
108-
? const Icon(Icons.play_arrow_outlined)
109-
: const Icon(Icons.file_download_outlined),
98+
child: const Icon(Icons.play_arrow_outlined),
11099
),
111100
),
112101
if (duration != null)

lib/pages/image_viewer/image_viewer.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class ImageViewerController extends State<ImageViewer> {
3838
(event) => {
3939
MessageTypes.Image,
4040
MessageTypes.Sticker,
41-
if (PlatformInfos.supportsVideoPlayer) MessageTypes.Video,
41+
MessageTypes.Video,
4242
}.contains(event.messageType),
4343
)
4444
.toList()

lib/pages/image_viewer/video_player.dart

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ import 'package:universal_html/html.dart' as html;
1010
import 'package:video_player/video_player.dart';
1111

1212
import 'package:fluffychat/utils/localized_exception_extension.dart';
13-
import 'package:fluffychat/utils/matrix_sdk_extensions/event_extension.dart';
14-
import 'package:fluffychat/utils/platform_infos.dart';
1513
import 'package:fluffychat/widgets/blur_hash.dart';
1614
import '../../../utils/error_reporter.dart';
1715
import '../../widgets/mxc_image.dart';
@@ -31,16 +29,7 @@ class EventVideoPlayerState extends State<EventVideoPlayer> {
3129

3230
double? _downloadProgress;
3331

34-
// The video_player package only doesn't support Windows and Linux.
35-
final _supportsVideoPlayer =
36-
!PlatformInfos.isWindows && !PlatformInfos.isLinux;
37-
3832
void _downloadAction() async {
39-
if (!_supportsVideoPlayer) {
40-
widget.event.saveFile(context);
41-
return;
42-
}
43-
4433
try {
4534
final fileSize = widget.event.content
4635
.tryGetMap<String, dynamic>('info')

lib/utils/platform_infos.dart

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,6 @@ abstract class PlatformInfos {
3030

3131
static bool get usesTouchscreen => !isMobile;
3232

33-
static bool get supportsVideoPlayer =>
34-
!PlatformInfos.isWindows && !PlatformInfos.isLinux;
35-
3633
/// Web could also record in theory but currently only wav which is too large
3734
static bool get platformCanRecord => (isMobile || isMacOS || isLinux);
3835

linux/flutter/generated_plugin_registrant.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include <file_selector_linux/file_selector_plugin.h>
1414
#include <flutter_secure_storage_linux/flutter_secure_storage_linux_plugin.h>
1515
#include <flutter_webrtc/flutter_web_r_t_c_plugin.h>
16+
#include <fvp/fvp_plugin.h>
1617
#include <gtk/gtk_plugin.h>
1718
#include <handy_window/handy_window_plugin.h>
1819
#include <media_kit_libs_linux/media_kit_libs_linux_plugin.h>
@@ -46,6 +47,9 @@ void fl_register_plugins(FlPluginRegistry* registry) {
4647
g_autoptr(FlPluginRegistrar) flutter_webrtc_registrar =
4748
fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterWebRTCPlugin");
4849
flutter_web_r_t_c_plugin_register_with_registrar(flutter_webrtc_registrar);
50+
g_autoptr(FlPluginRegistrar) fvp_registrar =
51+
fl_plugin_registry_get_registrar_for_plugin(registry, "FvpPlugin");
52+
fvp_plugin_register_with_registrar(fvp_registrar);
4953
g_autoptr(FlPluginRegistrar) gtk_registrar =
5054
fl_plugin_registry_get_registrar_for_plugin(registry, "GtkPlugin");
5155
gtk_plugin_register_with_registrar(gtk_registrar);

linux/flutter/generated_plugins.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
1010
file_selector_linux
1111
flutter_secure_storage_linux
1212
flutter_webrtc
13+
fvp
1314
gtk
1415
handy_window
1516
media_kit_libs_linux

macos/Flutter/GeneratedPluginRegistrant.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import flutter_new_badger
1919
import flutter_secure_storage_darwin
2020
import flutter_web_auth_2
2121
import flutter_webrtc
22+
import fvp
2223
import geolocator_apple
2324
import just_audio
2425
import package_info_plus
@@ -51,6 +52,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
5152
FlutterSecureStorageDarwinPlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStorageDarwinPlugin"))
5253
FlutterWebAuth2Plugin.register(with: registry.registrar(forPlugin: "FlutterWebAuth2Plugin"))
5354
FlutterWebRTCPlugin.register(with: registry.registrar(forPlugin: "FlutterWebRTCPlugin"))
55+
FvpPlugin.register(with: registry.registrar(forPlugin: "FvpPlugin"))
5456
GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin"))
5557
JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin"))
5658
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))

pubspec.lock

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -687,6 +687,14 @@ packages:
687687
description: flutter
688688
source: sdk
689689
version: "0.0.0"
690+
fvp:
691+
dependency: "direct main"
692+
description:
693+
name: fvp
694+
sha256: e03c4ba02c367cde8610c09325d085c9b1efe4f7d98a563950993a1fee17a28b
695+
url: "https://pub.dev"
696+
source: hosted
697+
version: "0.35.2"
690698
geoclue:
691699
dependency: transitive
692700
description:

pubspec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ dependencies:
4141
flutter_vodozemac: ^0.4.1
4242
flutter_web_auth_2: ^5.0.1
4343
flutter_webrtc: ^1.3.0
44+
fvp: ^0.35.2
4445
geolocator: ^14.0.2
4546
go_router: ^17.0.1
4647
handy_window: ^0.4.0

windows/flutter/generated_plugin_registrant.cc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include <file_selector_windows/file_selector_windows.h>
1515
#include <flutter_secure_storage_windows/flutter_secure_storage_windows_plugin.h>
1616
#include <flutter_webrtc/flutter_web_r_t_c_plugin.h>
17+
#include <fvp/fvp_plugin_c_api.h>
1718
#include <geolocator_windows/geolocator_windows.h>
1819
#include <permission_handler_windows/permission_handler_windows_plugin.h>
1920
#include <record_windows/record_windows_plugin_c_api.h>
@@ -42,6 +43,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
4243
registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin"));
4344
FlutterWebRTCPluginRegisterWithRegistrar(
4445
registry->GetRegistrarForPlugin("FlutterWebRTCPlugin"));
46+
FvpPluginCApiRegisterWithRegistrar(
47+
registry->GetRegistrarForPlugin("FvpPluginCApi"));
4548
GeolocatorWindowsRegisterWithRegistrar(
4649
registry->GetRegistrarForPlugin("GeolocatorWindows"));
4750
PermissionHandlerWindowsPluginRegisterWithRegistrar(

0 commit comments

Comments
 (0)