[Flutter]影音播放器

小黑
發佈於APP
2023/12/19閱讀時間約 4 分鐘

新增video_player

在pubspec.yaml中加入video_player。


設置權限

Android

在AndroidManifest.xml檔案中的<application>裡,加入下列代碼。

<uses-permission android:name="android.permission.INTERNET"/>


iOS

在Info.plist中加入以下內容。

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>


建立並初始化VideoPlayerController

class VideoPlayerScreen extends StatefulWidget {
const VideoPlayerScreen({super.key});

@override
State<VideoPlayerScreen> createState() => _VideoPlayerScreenState();
}

class _VideoPlayerScreenState extends State<VideoPlayerScreen> {
late VideoPlayerController _controller;
late Future<void> _initializeVideoPlayerFuture;

@override
void initState() {
super.initState();

_controller = VideoPlayerController.networkUrl(
Uri.parse(
'your_url_string',
),
);

_initializeVideoPlayerFuture = _controller.initialize();
}

@override
void dispose() {
_controller.dispose();

super.dispose();
}

@override
Widget build(BuildContext context) {
return Container();
}
}


建立播放器

FutureBuilder(
future: _initializeVideoPlayerFuture,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: VideoPlayer(_controller),
);
} else {
return const Center(
child: CircularProgressIndicator(),
);
}
},
)


播放和暫停

FloatingActionButton(
onPressed: () {
setState(() {
if (_controller.value.isPlaying) {
_controller.pause();
} else {
_controller.play();
}
});
},
child: Icon(
_controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
),
)




7會員
78內容數
嗨,我是一名程式設計師,會在這分享開發與學習紀錄。
留言0
查看全部
發表第一個留言支持創作者!