在Flutter中实现视频播放,可以使用 video_player 或功能更强大的 better_player。以下是两者的实现方法和区别:
1. video_player(官方基础包)
- 特点:官方维护,支持基础播放控制,但功能较简单。
 
- 实现步骤:
- 添加依赖到 
pubspec.yaml: 
dependencies:
  video_player: ^2.8.2
- 基本使用代码:
 
import 'package:video_player/video_player.dart';
class BasicVideoPlayer extends StatefulWidget {
  @override
  _BasicVideoPlayerState createState() => _BasicVideoPlayerState();
}
class _BasicVideoPlayerState extends State<BasicVideoPlayer> {
  late VideoPlayerController _controller;
  @override
  void initState() {
    super.initState();
    _controller = VideoPlayerController.network(
      'https://example.com/sample.mp4',
    )..initialize().then((_) {
        setState(() {});
      });
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: _controller.value.isInitialized
          ? AspectRatio(
              aspectRatio: _controller.value.aspectRatio,
              child: VideoPlayer(_controller),
            )
          : CircularProgressIndicator(),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          setState(() {
            _controller.value.isPlaying
                ? _controller.pause()
                : _controller.play();
          });
        },
        child: Icon(
          _controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
        ),
      ),
    );
  }
  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }
}
 
2. better_player(功能增强包)
- 特点:基于 
video_player 封装,支持字幕、画质切换、手势控制等高级功能。 
- 实现步骤:
- 添加依赖:
 
dependencies:
  better_player: ^0.0.83
- 基本使用代码:
 
import 'package:better_player/better_player.dart';
class AdvancedVideoPlayer extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    BetterPlayerController controller = BetterPlayerController(
      BetterPlayerConfiguration(
        aspectRatio: 16 / 9,
        controlsConfiguration: BetterPlayerControlsConfiguration(
          enableSkips: false, // 禁用快进快退
        ),
      ),
      betterPlayerDataSource: BetterPlayerDataSource(
        BetterPlayerDataSourceType.network,
        'https://example.com/sample.mp4',
      ),
    );
    return Scaffold(
      body: BetterPlayer(controller: controller),
    );
  }
}
 
选择建议:
- video_player:适合简单播放需求,无需额外控件。
 
- better_player:需要高级功能(如全屏、字幕、播放列表)时使用。
 
注意:播放网络视频需在 AndroidManifest.xml 和 Info.plist 中配置网络权限。