Flutter實(shí)現(xiàn)用視頻背景的登錄頁(yè)的示例代碼
最終效果

項(xiàng)目地址
https://github.com/Tecode/flutter_widget
實(shí)現(xiàn)方法
安裝插件
安裝video_player,我安裝的是最新的版本,請(qǐng)根據(jù)你自己的flutter版本去安裝對(duì)應(yīng)的版本,安卓可以直接使用虛擬機(jī),IOS需要真機(jī)才可以播放。
dev_dependencies: flutter_test: sdk: flutter video_player: ^0.10.1+6
我的Flutter版本
Flutter 1.7.8+hotfix.4 • channel stable • https://github.com/flutter/flutter.git Framework • revision 2e540931f7 (3 days ago) • 2019-07-09 13:14:38 -0700 Engine • revision 54ad777fd2 Tools • Dart 2.4.0
使用
import 'package:video_player/video_player.dart';
初始化播放
@override
void initState() {
// TODO: implement initState
super.initState();
_controller = VideoPlayerController.network(videoUrl)
..initialize().then((_) {
setState(() {});
_controller.play();
_controller.setLooping(true);
// _controller.setVolume(0.0);
Timer.periodic(Duration(seconds: 15), (Timer time) {
print(time);
});
});
}
銷(xiāo)毀時(shí)暫停
@override
void dispose() {
// TODO: implement dispose
super.dispose();
_controller.pause();
}
布局
主要部分
使用Transform.scale對(duì)視頻進(jìn)行縮放,我們想要的效果就是不管視頻是什么比率,都可以平鋪無(wú)拉伸的顯示。Center讓視頻放大以后居中顯示,縮放比為_(kāi)controller.value.aspectRatio /MediaQuery.of(context).size.aspectRatio,用視頻的寬高比除以設(shè)備的寬高比。
如果我們對(duì)視頻進(jìn)行處理也會(huì)鋪滿全部屏幕,但是會(huì)被拉伸,看起來(lái)很丑,可以拉下代碼試一下。
@override
void dispose() {
// TODO: implement dispose
super.dispose();
_controller.pause();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
fit: StackFit.expand,
children: <Widget>[
Transform.scale(
scale: _controller.value.aspectRatio /
MediaQuery.of(context).size.aspectRatio,
child: Center(
child: Container(
child: _controller.value.initialized
? AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: VideoPlayer(_controller),
)
: Text("正在初始化"),
),
),
),
Positioned(
width: MediaQuery.of(context).size.width,
bottom: 26.0,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ClipRRect(
borderRadius: BorderRadius.circular(60.0),
child: MaterialButton(
onPressed: () {},
child: Text(
"微信登錄",
style:
TextStyle(fontSize: 15.0, fontWeight: FontWeight.bold),
),
color: Color(0xffFFDB2E),
textColor: Color(0xff202326),
height: 44.0,
minWidth: 240.0,
elevation: 0.0,
),
),
SizedBox(
height: 20.0,
),
ClipRRect(
borderRadius: BorderRadius.circular(60.0),
child: MaterialButton(
onPressed: () {},
child: Text(
"手機(jī)號(hào)登錄",
style:
TextStyle(fontSize: 15.0, fontWeight: FontWeight.bold),
),
color: Color(0xff202326),
height: 44.0,
minWidth: 240.0,
elevation: 0.0,
textColor: Color(0xffededed),
),
),
SizedBox(
height: 60.0,
),
Text(
"我已閱讀并同意《服務(wù)協(xié)議》及《隱私政策》",
style: TextStyle(color: Colors.white, fontSize: 13.0),
)
],
),
),
Positioned(
width: MediaQuery.of(context).size.width,
top: 80.0,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
"登錄",
style: TextStyle(
fontSize: 40.0,
fontWeight: FontWeight.w400,
color: Colors.white),
),
SizedBox(
height: 10.0,
),
Text(
"視頻背景登錄頁(yè)面",
style: TextStyle(color: Colors.white, fontSize: 15.0),
)
],
),
)
],
));
}
寫(xiě)在最后
平時(shí)會(huì)不定期更新其它的組件歡迎關(guān)注,歡迎star。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用android-apktool來(lái)逆向(反編譯)APK包方法介紹
這篇文章主要介紹了使用android-apktool來(lái)逆向(反編譯)APK包方法介紹,本文講解了版本問(wèn)題、使用apktool、反編譯decode、rebuild重打包等內(nèi)容,需要的朋友可以參考下2015-04-04
android LabelView實(shí)現(xiàn)標(biāo)簽云效果
這篇文章主要為大家詳細(xì)介紹了android LabelView實(shí)現(xiàn)標(biāo)簽云效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Android中Webview打開(kāi)網(wǎng)頁(yè)的同時(shí)發(fā)送HTTP頭信息方法
這篇文章主要介紹了Android中Webview打開(kāi)網(wǎng)頁(yè)的同時(shí)發(fā)送HTTP頭信息方法,本文是講解的是一種通過(guò)修改Referer來(lái)控制盜鏈的方法,需要的朋友可以參考下2015-01-01
Android ViewModel與Lifecycles和LiveData組件用法詳細(xì)講解
JetPack是一個(gè)開(kāi)發(fā)組件工具集,他的主要目的是幫助我們編寫(xiě)出更加簡(jiǎn)潔的代碼,并簡(jiǎn)化我們的開(kāi)發(fā)過(guò)程。JetPack中的組件有一個(gè)特點(diǎn),它們大部分不依賴(lài)于任何Android系統(tǒng)版本,這意味者這些組件通常是定義在AndroidX庫(kù)當(dāng)中的,并且擁有非常好的向下兼容性2023-01-01
Android之日期及時(shí)間選擇對(duì)話框用法實(shí)例分析
這篇文章主要介紹了Android之日期及時(shí)間選擇對(duì)話框用法,以實(shí)例形式較為詳細(xì)的分析了Android創(chuàng)建日期及時(shí)間選擇對(duì)話框的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
android RecyclerView的一些優(yōu)化點(diǎn)介紹
大家好,本篇文章主要講的是android RecyclerView的一些優(yōu)化點(diǎn)介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12
詳解Android端與JavaWeb傳輸加密(DES+RSA)
這篇文章主要介紹了詳解Android端與JavaWeb傳輸加密(DES+RSA),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
Android自定義View onDraw()方法會(huì)調(diào)用兩次的問(wèn)題解決
這篇文章主要介紹了Android自定義View onDraw()方法會(huì)調(diào)用兩次的問(wèn)題解決,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01

