chewie
一个充满热情的 Flutter 视频播放器。
video_player 插件提供了对视频播放的底层访问。Chewie 在底层使用了 video_player,并将其包装在友好的 Material 或 Cupertino UI 中!
预览
| MaterialControls | MaterialDesktopControls |
|---|---|
![]() |
![]() |
CupertinoControls

安装
在你的 Flutter 项目的 pubspec.yaml 文件中
dependencies:
chewie: <latest_version>
video_player: <latest_version>
使用它
import 'package:chewie/chewie.dart';
final videoPlayerController = VideoPlayerController.network(
'https://github.flutterdart.cn/assets-for-api-docs/assets/videos/butterfly.mp4');
await videoPlayerController.initialize();
final chewieController = ChewieController(
videoPlayerController: videoPlayerController,
autoPlay: true,
looping: true,
);
final playerWidget = Chewie(
controller: chewieController,
);
请确保在使用后 Dispose 两个控制器组件。例如,通过重写 StatefulWidget 的 dispose 方法
@override
void dispose() {
videoPlayerController.dispose();
chewieController.dispose();
super.dispose();
}
选项

Chewie 有一些选项可以控制您提供的视频。这些选项默认会出现在 showModalBottomSheet 中(就像您从 YT 已经知道的那样)。Chewie 默认将 播放速度 和 字幕 作为 OptionItem 传递。
要添加其他选项,只需将这些行添加到您的 ChewieController 中
additionalOptions: (context) {
return <OptionItem>[
OptionItem(
onTap: () => debugPrint('My option works!'),
iconData: Icons.chat,
title: 'My localized title',
),
OptionItem(
onTap: () =>
debugPrint('Another option working!'),
iconData: Icons.chat,
title: 'Another localized title',
),
];
},
如果您不想通过默认的 showModalBottomSheet 显示选项,只需使用 optionsBuilder 方法覆盖视图即可
optionsBuilder: (context, defaultOptions) async {
await showDialog<void>(
context: context,
builder: (ctx) {
return AlertDialog(
content: ListView.builder(
itemCount: defaultOptions.length,
itemBuilder: (_, i) => ActionChip(
label: Text(defaultOptions[i].title),
onPressed: () =>
defaultOptions[i].onTap!(),
),
),
);
},
);
},
您的 additionalOptions 已包含在此处(如果您提供了 additionalOptions)!
最后但同样重要:没有适当的翻译,选项就没有意义。要将您的字符串添加到其中,只需添加
optionsTranslation: OptionsTranslation(
playbackSpeedButtonText: 'Wiedergabegeschwindigkeit',
subtitlesButtonText: 'Untertitel',
cancelButtonText: 'Abbrechen',
),
字幕
从 1.1.0 版本开始,chewie 支持字幕。在这里,您可以看到如何使用它们
您可以提供一个 List<Subtitle>,并通过 subtitleBuilder 函数自定义您的字幕。
只需按照以下代码将字幕添加到您的 ChewieController 中
ChewieController(
videoPlayerController: _videoPlayerController,
autoPlay: true,
looping: true,
subtitle: Subtitles([
Subtitle(
index: 0,
start: Duration.zero,
end: const Duration(seconds: 10),
text: 'Hello from subtitles',
),
Subtitle(
index: 1,
start: const Duration(seconds: 10),
end: const Duration(seconds: 20),
text: 'Whats up? :)',
),
]),
subtitleBuilder: (context, subtitle) => Container(
padding: const EdgeInsets.all(10.0),
child: Text(
subtitle,
style: const TextStyle(color: Colors.white),
),
),
);
index 属性仅用于您想在数据库中组织字幕并在此处提供索引的目的。start、end 和 text 是这里的关键属性。
Duration 定义了字幕应该在视频的哪个部分开始和结束。例如:您的视频有 10 分钟长,您想在:00:00 和 00:10 秒之间添加一个字幕,您必须提供
Subtitle(
index: 0,
start: Duration.zero,
end: const Duration(seconds: 10),
text: 'Hello from subtitles',
),
示例
请在 example/ 文件夹中运行该应用以开始播放!
从 Chewie < 0.9.0 迁移
现在,您将 VideoPlayerController 和选项传递给 ChewieController,然后将后者传递给 Chewie 小部件,而不是将它们传递给 Chewie 小部件。
final playerWidget = Chewie(
videoPlayerController,
autoPlay: true,
looping: true,
);
变为
final chewieController = ChewieController(
videoPlayerController: videoPlayerController,
autoPlay: true,
looping: true,
);
final playerWidget = Chewie(
controller: chewieController,
);
路线图
- MaterialUI
- MaterialDesktopUI
- CupertinoUI
- 带翻译的选项
- 字幕
- CustomControls
- 根据源纵横比在全屏时自动旋转
- 直播流和 UI
- 自动播放
- Placeholder
- 循环播放
- 从...开始播放
- 自定义进度条颜色
- 自定义叠加层
- 允许休眠 (Wakelock)
- 播放速度控制
- 自定义路由页面构建器
- 全屏前后自定义设备方向和系统叠加层
- 自定义错误构建器
- 支持不同分辨率的视频
- 使用 Provider 重新设计状态管理器
- 屏幕镜像/投射 (Google Chromecast)
iOS 警告
Chewie 使用的 video_player 插件仅在 Flutter 1.26.0 或更高版本上的 iOS 模拟器中有效。您可能需要切换到 beta 版本 flutter channel beta。请参考此 问题。
000000000000000KKKKKKKKKKKKXXXXXXXXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKK00
000000000000000KKKKKKKKKKKKKXXXXXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00
000000000000000KKKKKKKKKKKKKXXXXXXK0xdoddoclodxOKKKKKKKKKKKKKKKKKKK00
00000000000000KKKKKKKKKKKKKKKK0xoc:;;,;,,,,''';cldxO0KKKKKKKKKKKKK000
00000000000000KKKKKKKKKKKKKKx:'',,,'.,'...;,'''',;:clk0KKKKKKKKKKK000
00000000000000KKKKKKKKKKKKd;'',,,;;;'.,..,c;;,;;;;;:;;d0KKKKKKKKKK000
00000000000000KKKKKKKKKKx,',;:ccl;,c;';,,ol::coolc:;;,,x0KKKKKKKKK000
00000000000000KKKKKKKKOl;:;:clllll;;o;;;cooclddclllllc::kKKKKKKKKK000
00000000000000KKKKKK0o;:ccclccccooo:ooc:ddoddloddolc;;;:c0KKKKKKK0000
00000000000000KKKKKOccodolccclllooddddddxdxddxkkkkxxo;'';d0KKKKKK0000
00000000000000KKKKkcoddolllllclloodxxxxdddxdddxxxddool:'.;O0KKKKK0000
00000000000000000xloollcccc:cclclodkkxxxdddxxxkkxdlllolc,,x0KKKKK0000
0000000000000000xccllccccc:;,'',;:dxkxxddddxkkkxdollcc:cc;d0KKKKKK000
000000000000000kcc:::cllol:'......odxxdoccldxxxdollllc:;;:d0KKKKK0000
00000000000000klc;;;clcc::;'...';;;:cll..',cdddolccccccc;:x0KKKKK0000
0000000000000kdl;:cclllclllc::;,;.'.''o;,,'.;ccoooollllc:;x0KKKKK0000
000000000000kol;:;::coolcc:::,.....,..cd,....':lolclolllc;x0KKKK00000
00000000000Odl;:'cllol;''',;;;;::''.',:doc;,',::looc:lcol:x0K00000000
0000000000Oxl:c,:lolc,..',:clllollodoc;cllolccloolllcclollO0K00000000
0000000000xllc,:lool:'.,...o.;llxdo:loc;;ccodlolodldllolld00K0K000000
000000000Ooc::coooc,,.',;:lx,,...':;o;l;':o:oolccocdoldloO0000KK00000
00000000kol:clllc;;,.;::;:clllllolxc;.:c':ocldlccl;clldox000000000000
000000Odll:cccc;:;,';cllooodoollcloll;c:.:d:ooo;cl;oloddkO00000000000
0000OOddOdll;c,;;,,;;:cldodddoxdoodlcc:.,ox:o:lllocdlodx00O0000000000
000Oxdl:::ll,:,:;,';c,:oloddolkxddxolc.'coccocolcccoooc;oxO00KOOOO000
dc;,'...';c,,:c:::'c:';cldoo;:odolxoc:.,o:oldlxol;lddl,.,lkO0KdlcckKO
'.......,:''';cll:cc,,;:l:c,,;:oc;cdc,.;::dldoxd:ldol;,'..,:lo,,,,kOk
.......';'.',:clcll,,;:l:;'..''c:,;cl'.';dxoooxlddl;',''..,,;'...,ool
.......,,.'';;:cld;.;,do:..;:,':c',:c''';xxdldocol'..';,.......',;;,;
.......'..'',,coxc'';:do'.clc:lco',o;',;cOxdol:cc:.....'..oxd;','.'..
'.......''..,:cxl;';;cx:''cll:clc'cl',:l:ko:c..;c:..';...,KNNl;:;ll:'
.......''...;,ooc,,,:od'.':cccdd,,l''cl:co;;,..;;'..','..;d0O,;;:XXXK
............'cll;',,lo'.'.::codl,c..:c;doc.,:.',....'...'......'l0XKk
'............c;;,':lc.'',.;ccol;:,.:c.:o,;'.;'......,...',,.'...'.,;;
.............',;;,cc..;,'';:lc':;..c'.c:;.,......,'..'...'',:,,;;,...
..............',,;:'.';,',:c;.;;..';..,;,.........''..'...'kko.,,....
...............;,:'..;''';:,..;''.''..''............'...'.lK0c';;c;'.
...............,,'...,.',;''...''....,......'............'dOx',;:dd,'
..............',.....'.,;..'..',..........'..............';:;',,ldo.'
.............'''.'.....,'..',','..'...''..'............'.......,dx'.'
.......................,...';,'..'.....,.'.............''.'......'..'
...........'......'...',..'';,'..'.....................',';,..'....'.

