通过flutter的video_player插件
1.首先在 pubspec.yaml 文件下添加 video_player: ^2.6.0,如果你是在 vscode开发的,ctrl + s
会自动加载依赖,否则需要在终端下 pub get
dependencies:
flutter:
sdk: flutter
extended_nested_scroll_view: ^5.0.0
video_player: ^2.6.0
cupertino_icons: ^1.0.2
2.安卓的话使用 video_player 是需要在 根目录下的 android/app/src/main 下的 AndroidManifest文件添加
<uses-permission android:name="android.permission.INTERNET" />
申请网络访问权限
3.初始化
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
class VideoPage extends StatefulWidget {
const VideoPage({super.key});
State<VideoPage> createState() => _VideoPageState();
}
class _VideoPageState extends State<VideoPage> {
late TabController _tabController;
// 视频
late VideoPlayerController _controller;
void initState() {
// TODO: implement initState
super.initState();
_tabController = TabController(length: tabs.length, vsync: this);
_controller = VideoPlayerController.network("视频地址")
..initialize().then((a) {
setState(() {});
});
}
}
4.使用
1.显示内容
Center(
child: _controller.value.isInitialized
? AspectRatio( // 这个容器是根据子元素大小来的
aspectRatio: _controller.value.aspectRatio, // 设置成视频的大小
child: VideoPlayer(_controller), // 视频内容
)
: Container( // 这里是视频还没加载好显示的内容
width: 100,
height: 100,
color: Colors.red,
),
)
2.控制状态
floatingActionButton: FloatingActionButton(
//随便定义一个按钮用于测试
onPressed: () {
setState(() {
_controller.value.isPlaying //设置播放状态
? _controller.pause()
: _controller.play();
});
},
child: Icon(
_controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
),
)
5.如果使用的时候碰到 One or more plugins require a higher Android SDK version
这个问题,可以在 android/app/src/build.gradle 文件,把 compileSdkVersion 改为需要的版本。
6.最后附上成果