Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
gz_video_player
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蒋俊
gz_video_player
Commits
cf73c8ed
提交
cf73c8ed
authored
9月 11, 2023
作者:
jungleiOS
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
根据source type 加载视频文件
上级
993eb30c
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
18 行增加
和
12 行删除
+18
-12
main.dart
example/lib/main.dart
+1
-1
video.dart
lib/video.dart
+17
-11
没有找到文件。
example/lib/main.dart
浏览文件 @
cf73c8ed
...
...
@@ -73,7 +73,7 @@ class _MyAppState extends State<MyApp> {
videoUrl
!=
""
?
GZVideoPlayer
(
dataSource:
videoUrl
,
sourceType:
DataSourceType
.
asset
,
/// 视频播放配置
playOptions:
VideoPlayOptions
(
seekSeconds:
30
,
...
...
lib/video.dart
浏览文件 @
cf73c8ed
import
'dart:async'
;
import
'dart:io'
;
import
'package:connectivity/connectivity.dart'
;
import
'package:flutter/material.dart'
;
...
...
@@ -19,10 +20,13 @@ import 'package:screen_brightness/screen_brightness.dart';
import
'package:video_player/video_player.dart'
;
import
'package:wakelock/wakelock.dart'
;
export
'package:video_player/video_player.dart'
;
class
GZVideoPlayer
extends
StatefulWidget
{
GZVideoPlayer
({
super
.
key
,
required
this
.
dataSource
,
required
this
.
sourceType
,
VideoPlayOptions
?
playOptions
,
VideoStyle
?
videoStyle
,
this
.
brightnessWidget
,
...
...
@@ -45,6 +49,7 @@ class GZVideoPlayer extends StatefulWidget {
/// 视频资源
final
dynamic
dataSource
;
final
DataSourceType
sourceType
;
/// 播放自定义属性
final
VideoPlayOptions
playOptions
;
...
...
@@ -457,16 +462,15 @@ class GZVideoPlayerState extends State<GZVideoPlayer>
/// 创建video controller
VideoPlayerController
_createVideoPlayerController
()
{
final
netRegx
=
RegExp
(
r'^(http|https)://([\w.]+/?)\S*'
);
final
fileRegx
=
RegExp
(
r'^(file)://([\w.]+/?)\S*'
);
final
isNetwork
=
netRegx
.
hasMatch
(
widget
.
dataSource
);
final
isFile
=
fileRegx
.
hasMatch
(
widget
.
dataSource
);
if
(
isNetwork
)
{
return
VideoPlayerController
.
networkUrl
(
Uri
.
parse
(
widget
.
dataSource
));
}
else
if
(
isFile
)
{
return
VideoPlayerController
.
file
(
widget
.
dataSource
);
}
else
{
return
VideoPlayerController
.
asset
(
widget
.
dataSource
);
switch
(
widget
.
sourceType
)
{
case
DataSourceType
.
asset
:
return
VideoPlayerController
.
asset
(
widget
.
dataSource
);
case
DataSourceType
.
file
:
return
VideoPlayerController
.
file
(
File
(
widget
.
dataSource
));
case
DataSourceType
.
contentUri
:
return
VideoPlayerController
.
contentUri
(
Uri
.
parse
(
widget
.
dataSource
));
case
DataSourceType
.
network
:
return
VideoPlayerController
.
networkUrl
(
Uri
.
parse
(
widget
.
dataSource
));
}
}
...
...
@@ -766,8 +770,10 @@ class GZVideoPlayerState extends State<GZVideoPlayer>
if
(!
_controller
.
value
.
isInitialized
)
return
;
},
onVerticalDragUpdate:
(
DragUpdateDetails
details
)
async
{
if
(!
_controller
.
value
.
isInitialized
||
details
.
primaryDelta
==
null
)
if
(!
_controller
.
value
.
isInitialized
||
details
.
primaryDelta
==
null
)
{
return
;
}
// 右侧垂直滑动 - 音量调节
if
(
details
.
globalPosition
.
dx
>=
(
screenSize
.
width
/
2
))
{
_volume
.
value
=
_controller
.
value
.
volume
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论