[Flutter]影音播放器

閱讀時間約 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,
),
)




8會員
123內容數
嗨,我是一名程式設計師,會在這分享開發與學習紀錄。
留言0
查看全部
發表第一個留言支持創作者!
小黑與程式的邂逅 的其他內容
GestureDetector( onTap: () { const snackBar = SnackBar(content: Text('Tap')); ScaffoldMessenger.of(context).showSnackBar(snackBar); },
加入套件 在pubspec.yaml添加sqflite與path_provider。 建立數據模型 id:識別欄位,唯一值為整數資料類型 name:存放名字為字串資料類型 class People { final int? id; final String? name;
首先需要在pubspec.yaml文件中添加依賴。 宣告 SharedPreferences record = await SharedPreferences.getInstance(); 寫入 //字串資料 await record.setString(key, value); //
class HomePage extends StatelessWidget { @override Widget build(BuildContext context) { return Center( child: Table( columnWid
下面代碼為兩列的GridView class HomePage extends StatelessWidget { @override Widget build(BuildContext context) { return new GridView.count( cro
可以透過scrollDirection來設定垂直或水平滾動列表資料。 垂直滾動 class HomePage extends StatelessWidget { //列表集合資料 List<Widget> list = <Widget>[ ListTile( ti
GestureDetector( onTap: () { const snackBar = SnackBar(content: Text('Tap')); ScaffoldMessenger.of(context).showSnackBar(snackBar); },
加入套件 在pubspec.yaml添加sqflite與path_provider。 建立數據模型 id:識別欄位,唯一值為整數資料類型 name:存放名字為字串資料類型 class People { final int? id; final String? name;
首先需要在pubspec.yaml文件中添加依賴。 宣告 SharedPreferences record = await SharedPreferences.getInstance(); 寫入 //字串資料 await record.setString(key, value); //
class HomePage extends StatelessWidget { @override Widget build(BuildContext context) { return Center( child: Table( columnWid
下面代碼為兩列的GridView class HomePage extends StatelessWidget { @override Widget build(BuildContext context) { return new GridView.count( cro
可以透過scrollDirection來設定垂直或水平滾動列表資料。 垂直滾動 class HomePage extends StatelessWidget { //列表集合資料 List<Widget> list = <Widget>[ ListTile( ti
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
前言 當今時代,遊戲已經不再只是單純的娛樂,更成為人們生活中不可或缺的一部分。隨著技術的發展,遊戲也從單機遊戲轉變成網路遊戲、手機遊戲、虛擬實境(VR)遊戲等多種形式。Flutter 作為一種跨平台的開發框架,正逐漸成為開發遊戲的一個重要工具。本系列文章將以「輕鬆入門 Flutter 遊戲開發」為題
Thumbnail
Introduction Flutter is a powerful framework for developing the app for different platforms without redevelopment. main.dart route routing map
Thumbnail
因為自己最近迷上了釣魚,但卻常常苦於不知道該去哪裡釣魚才能安全又有魚,因此想做個讓大家可以分享自己釣點以及釣況的App,讓大家都能找到適合自己的地方釣魚! 此篇是在介紹專案基本架構以及獲取使用者的地理位置。
Thumbnail
如果你是剛入門Flutter的工程師,可以參考這篇文章,我會告訴大家自己常用的套件以及如何規劃檔案的分類!
Thumbnail
說明Flutter 模組(Module)專案範例的架構與如何載入Android專案中的流程與執行畫面
Thumbnail
說明Flutter 插件(Plugin)專案範例的架構與實際載入並執行在各平台的顯示畫面
Thumbnail
說明Flutter 包(Package)專案範例的架構與實際載入並執行在各平台的顯示畫面
Thumbnail
說明Flutter 骨架(skeleton)專案範例的架構與在各平台執行的顯示畫面
Thumbnail
Flutter是一個由Google開發的原生跨平台框架,使用的是Dart語言,可以寫一份code產生IOS&Android App 甚至還可以產生Web以及桌面應用程式。 推薦這個由Dr. Angela Yu在Udemy上架的Flutter課程,雖然是英文教學但是其實很好懂。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
前言 當今時代,遊戲已經不再只是單純的娛樂,更成為人們生活中不可或缺的一部分。隨著技術的發展,遊戲也從單機遊戲轉變成網路遊戲、手機遊戲、虛擬實境(VR)遊戲等多種形式。Flutter 作為一種跨平台的開發框架,正逐漸成為開發遊戲的一個重要工具。本系列文章將以「輕鬆入門 Flutter 遊戲開發」為題
Thumbnail
Introduction Flutter is a powerful framework for developing the app for different platforms without redevelopment. main.dart route routing map
Thumbnail
因為自己最近迷上了釣魚,但卻常常苦於不知道該去哪裡釣魚才能安全又有魚,因此想做個讓大家可以分享自己釣點以及釣況的App,讓大家都能找到適合自己的地方釣魚! 此篇是在介紹專案基本架構以及獲取使用者的地理位置。
Thumbnail
如果你是剛入門Flutter的工程師,可以參考這篇文章,我會告訴大家自己常用的套件以及如何規劃檔案的分類!
Thumbnail
說明Flutter 模組(Module)專案範例的架構與如何載入Android專案中的流程與執行畫面
Thumbnail
說明Flutter 插件(Plugin)專案範例的架構與實際載入並執行在各平台的顯示畫面
Thumbnail
說明Flutter 包(Package)專案範例的架構與實際載入並執行在各平台的顯示畫面
Thumbnail
說明Flutter 骨架(skeleton)專案範例的架構與在各平台執行的顯示畫面
Thumbnail
Flutter是一個由Google開發的原生跨平台框架,使用的是Dart語言,可以寫一份code產生IOS&Android App 甚至還可以產生Web以及桌面應用程式。 推薦這個由Dr. Angela Yu在Udemy上架的Flutter課程,雖然是英文教學但是其實很好懂。