我正在使用 media_kit 包来显示视频。现在,在没有鼠标移动指定
controlsHoverDuration
的地方,控件是隐藏的。作为解决方法,我可以将 controlsHoverDuration
设置为较长的持续时间。
MaterialVideoControlsTheme(
normal: const MaterialVideoControlsThemeData(
visibleOnMount: true,
controlsHoverDuration: Duration(hours: 1) // Setting this value to a duration
),
fullscreen: const MaterialVideoControlsThemeData(),
child: Scaffold(
body: Video(
controller: controller,
),
),
);
但是当我点击视频时会隐藏控件。
另一种方法是构建自定义视频控件。
Scaffold(
body: Video(
controller: _controller,
controls: (state) {
return Center(
child: IconButton(
onPressed: () {
state.widget.controller.player.playOrPause();
},
icon: StreamBuilder(
stream: state.widget.controller.player.stream.playing,
builder: (context, playing) => Icon(
playing.data == true ? Icons.pause : Icons.play_arrow,
),
),
),
);
},
),
);
但这需要实现所有状态的简单要求。我也想坚持
MaterialVideoControlsTheme
。
有没有办法在视频处于暂停状态时使用
primaryButtonBar
始终显示播放按钮或 MaterialVideoControlsTheme
?
我也有同样的需求来显示控件而不隐藏它。 您可以使用材质小部件创建自定义控件,例如您可以使用的播放或暂停
MaterialPlayOrPauseButton()
使用材质小部件的完整示例
SizedBox(
height: 300,
child: Video(
controller: controller,
controls: (state) {
return const Column(
children: [
MaterialPlayOrPauseButton(),
MaterialSeekBar(),
],
);
},
),
);