如何在Flick Video Player Flutter中添加增/减速度功能

问题描述 投票:0回答:1

我在 Flutter 中使用 Flick Video Player。我想在视频屏幕上添加速度功能,就像音量等其他按钮一样。如何做到这一点?

flutter video-player flutter-video-player
1个回答
0
投票

您可以轻松地从

FlickManager
使用此setPlaybackSpeed(value),如下所示
flickManager.flickControlManager?.setPlaybackSpeed(speed);

这是一个简单的示例,说明如何使用 flick_video_player

进行速度控制

home_screen.dart

class HomeScreen extends StatefulWidget {
  const HomeScreen({Key? key}) : super(key: key);

  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  late FlickManager flickManager;
  @override
  void initState() {
    super.initState();
    flickManager = FlickManager(
      videoPlayerController: VideoPlayerController.networkUrl(
        Uri.parse('https://github.com/GeekyAnts/flick-video-player-demo-videos/blob/master/example/9th_may_compressed.mp4?raw=true'),
      ),
    );
  }




  @override
  void dispose() {
    flickManager.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      child: FlickVideoPlayerWidget(flickManager: flickManager,),
    );
  }

}

flick_video_speed_control_widget.dart

class FlickVideoSpeedControlWidget extends StatelessWidget {
  final FlickManager flickManager;

  const FlickVideoSpeedControlWidget({super.key, required this.flickManager});

  @override
  Widget build(BuildContext context) {
    return PopupMenuButton<double>(
      initialValue: flickManager.flickVideoManager?.videoPlayerValue?.playbackSpeed ?? 1.0,
      onSelected: (speed) {
        flickManager.flickControlManager?.setPlaybackSpeed(speed);
      },
      itemBuilder: (context) => [
        const PopupMenuItem(
          value: 0.5,
          child: Text("0.5x"),
        ),
        const PopupMenuItem(
          value: 1.0,
          child: Text("1x"),
        ),
        const PopupMenuItem(
          value: 1.5,
          child: Text("1.5x"),
        ),
        const PopupMenuItem(
          value: 2.0,
          child: Text("2x"),
        ),
      ],
      child: const Padding(
        padding: EdgeInsets.all(8.0),
        child: Icon(Icons.speed,size: 35,color: Colors.red,),
      ),
    );
  }
}

flick_video_player_widget.dart

class FlickVideoPlayerWidget extends StatelessWidget {
  final FlickManager flickManager;

  const FlickVideoPlayerWidget({super.key, required this.flickManager});

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        /// here is the speed control
        FlickVideoSpeedControlWidget(flickManager: flickManager),
        Expanded(
          child: FlickVideoPlayer(
            flickManager: flickManager,
            flickVideoWithControls: const FlickVideoWithControls(
              controls: FlickPortraitControls(),
            ),
            flickVideoWithControlsFullscreen: const FlickVideoWithControls(
              videoFit: BoxFit.fitWidth,
              controls: FlickLandscapeControls(),
              playerLoadingFallback: Center(child: CircularProgressIndicator()),
              iconThemeData: IconThemeData(size: 30, color: Colors.white),
              textStyle: TextStyle(color: Colors.white, fontSize: 16),
              backgroundColor: Colors.black,
            ),
          ),
        ),
      ],
    );
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.