版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第fluttershowModalBottomSheet常用屬性及說(shuō)明目錄showModalBottomSheet常用屬性showModalBottomSheetflutter常見控件及例子貝塞爾曲線底部彈窗下拉框展開閉合控件輸入框彈出框加疊加(一個(gè)紅包的樣子)
showModalBottomSheet常用屬性
在使用showModalBottomSheet這個(gè)控件時(shí),想要設(shè)置圓角,在內(nèi)容widget設(shè)置不管用,然后直接看這個(gè)控件的實(shí)現(xiàn)原理,一看有個(gè)shape屬性,感覺(jué)有戲!果然設(shè)置完畢后,成功了。
注意:一定不要設(shè)置builder中的背景顏色,否則會(huì)覆蓋導(dǎo)致不能顯示出圓角!
showModalBottomSheet
shape可以設(shè)置成自己想要的形狀!通常直接設(shè)置圓角即可
isScrollControlled:是否時(shí)全屏還是半屏isDismissible:外部是否可以點(diǎn)擊,false不可以點(diǎn)擊,true可以點(diǎn)擊,點(diǎn)擊后消失backgroundColor:通常可以設(shè)置白色和透明,barrierColor:設(shè)置遮擋底部的半透明顏色,默認(rèn)是black54,可以設(shè)置成透明的;enableDrag:是否可以向下拖動(dòng)關(guān)閉,默認(rèn)是true打開的;
以下代碼:
showModalBottomSheet(
context:context,
isScrollControlled:false,
backgroundColor:Colors.white,
shape:RoundedRectangleBorder(borderRadius:BorderRadius.all(Radius.circular(10))),
builder:(BuildContextcontext){
returnContainer(
height:50,//對(duì)話框高度就是此高度
child:Center(child:Text("居中文字")),
flutter常見控件及例子
貝塞爾曲線
classBottomClipperextendsCustomClipperPath{//切割類繼承
@override
PathgetClip(Sizesize){//必備屬性一
varpath=Path();
path.lineTo(0,0);
path.lineTo(0,size.height-60);
varfrit=Offset(size.width/2,size.height);
varfrit2=Offset(size.width,size.height-60);
path.quadraticBezierTo(frit.dx,frit.dy,frit2.dx,frit2.dy);//二次貝塞爾曲線
path.lineTo(size.width,size.height-60);
path.lineTo(size.width,0);
returnpath;
@override
boolshouldReclip(CustomClipperPatholdClipper){//必備屬性二
//TODO:implementshouldReclip
returnfalse;
}
調(diào)用方法
ClipPath(
clipper:BottomClipper(),
child:Container(),
)
底部彈窗
底部彈起
showModalBottomSheet(
context:context,
builder:(BuildContextcontext){
returnTabMyApp();//返回的是一個(gè)容器
//ps:這個(gè)控件由于是系統(tǒng)自帶空間,下面帶了一個(gè)白色背景容器,導(dǎo)致彈起容器不能設(shè)置圓角
//解決思路,因?yàn)檫@個(gè)背景的大小取決于覆蓋于其上的容器大小,故,可以給他一個(gè)很小的容器,再用用stack控件把一個(gè)較大的
//的控件懸浮其上,在設(shè)置懸浮其上的容器,這樣看不到下邊大概是
Stack(
alignment:constFractionalOffset(0.5,0.935),//相對(duì)坐標(biāo)
children:Widget[
SizeBox(
height:10
//看的到的容器設(shè)置圓角
Container(
height:300
下拉框
DropdownButtonHideUnderline(
child:newDropdownButton(
hint:newText(''),//第一次把hint展示位下拉菜單條目的第一個(gè)值(默認(rèn)值)
//設(shè)置這個(gè)value之后,選中對(duì)應(yīng)位置的item,
//再次呼出下拉菜單,會(huì)自動(dòng)定位item位置在當(dāng)前按鈕顯示的位置處
value:selectItemValue,//下拉菜單選擇完之后,呈現(xiàn)給用的值
items:generateItemList(),//下拉菜單item點(diǎn)擊之后的回調(diào)
iconSize:24.0,
isDense:true,
onChanged:(T){
setState((){
selectItemValue=T;
varselectItemValue;
varselectItemValue1;
/*DropDownState(){
selectItemValue=getDropdownMenuItem()[0].value;
ListDropdownMenuItemgenerateItemList(){
ListDropdownMenuItemitems=newList();
for(inti=0;ii++){
DropdownMenuItemitemi=newDropdownMenuItem(
value:i.toString(),child:newText(i.toString())
items.add(itemi);
returnitems;
展開閉合控件
ExpansionTile
constExpansionTile({
Keykey,
this.leading,
@requiredthis.title,//開關(guān)的名稱
this.backgroundColor,//展開背景色
this.onExpansionChanged,
this.children=constWidget[],
this.trailing,
this.initiallyExpanded=false,//默認(rèn)關(guān)閉
}):assert(initiallyExpanded!=null),
super(key:key);
輸入框
Row(
mainAxisAlignment:MainAxisAlignment.spaceBetween,
mainAxisSize:MainAxisSize.min,
children:Widget[
Container(
constraints:BoxConstraints.tightFor(width:200.0),
child:TextField(
autofocus:false,
//maxLength:8,
textAlign:TextAlign.right,//右對(duì)齊
keyboardType:TextInputType.number,//數(shù)字鍵盤
onChanged:(v){
setState((){
price=double.parse('$v');
//記錄金額
print("onChange:$v");
decoration:InputDecoration(
border:InputBorder.none,//去掉輸入框的下滑線
hintText:"0.00",
hintStyle:TextStyle(fontSize:14.0)
Text('元',style:TextStyle(color:Colors.black),),
彈出框加疊加(一個(gè)紅包的樣子)
showDialogNull(//調(diào)用方法
context:context,//BuildContext對(duì)象
barrierDismissible:false,
builder:(BuildContextcontext){
returnnewLoadingDialog(//調(diào)用對(duì)話框
text:'滾燙',
ponto:"/6ONWsjip0QIZ8tyhnq/it/u=3463668003,3398677327fm=58"
//彈出的內(nèi)容
classLoadingDialogextendsDialog{
Stringtext;//傳遞的名字
Stringponto;//頭像地址
LoadingDialog({Keykey,@requiredthis.text,this.ponto}):super(key:key);
@override
Widgetbuild(BuildContextcontext){
varstack=newStack(//創(chuàng)建折疊層
alignment:constFractionalOffset(0.5,0.935),//相對(duì)坐標(biāo)
children:Widget[
//底層
newMaterial(//創(chuàng)建透明層
type:MaterialType.transparency,//透明類型
child:newCenter(//保證控件居中效果
child:newSizedBox(
width:260.0,
height:420.0,
child:newContainer(
decoration:ShapeDecoration(
color:Colors.red,
shape:RoundedRectangleBorder(
borderRadius:BorderRadius.all(
Radius.circular(8.0),
child:newColumn(
mainAxisAlignment:MainAxisAlignment.start,
crossAxisAlignment:CrossAxisAlignment.center,
children:Widget[
//newCircularProgressIndicator(),
ClipPath(
clipper:BottomClipper(),
child:Container(
height:360,
width:300,
//color:
decoration:ShapeDecoration(
color:Colors.red[600],
shape:RoundedRectangleBorder(
borderRadius:BorderRadius.all(
Radius.circular(8.0),
child:Column(
mainAxisAlignment:MainAxisAlignment.center,
children:Widget[
Iwork(
ponto,
scale:3.0,
SizedBox(
height:10,
Text(text,style:newTextStyle(fontSize:16.0,color:Colors.orangeAccent)),
Text('恭喜發(fā)財(cái),大吉大利',style:newTextStyle(fontSize:24.0,color:Colors.orangeAccent)),
SizedBox(
height:100,
//折疊層
Container(
height:200,
child:Column(
children:Widget[
Container(
height:70,
width:70,
child:FlatButton(
onPressed:(){
Navigator.push(context,
newMaterialPageRoute(builder:(context){
returnHongbaoxiangqing();
})).then((String){//回調(diào)函數(shù)
Navigator.pop(context);
child:Text('開',style:TextStyle(fontSize:30),),
decoration:BoxDecoration(//背景裝飾
color:Colors.amber[200],
borderRadius:BorderRadius.circular(35),
SizedBox(
height:70,
FlatButton(
onPressed:(){
Navigator.pop(context);
child:Icon(
Icons.clear,color:Colors.red[800],
returnstack;
//美化界面
classBottomClipperextendsCustomClipperPath{//切割類繼承
@override
PathgetClip(Sizesize){//必備屬性一
varpath=Path();
path.lineTo(0,0);
path.lineTo(0,size.height-60);
varfrit=Offset(size.width/2,size.height);
varfrit2=Offset(size.width,size.height-60);
path.quadraticBezierTo(frit.dx,frit.dy,frit2.dx,frit2.dy);//二次貝塞爾曲線
path.lineTo(size.width,size.height-60);
path.lineTo(size.width,0);
returnpath;
@override
boolshouldReclip(CustomClipperPatholdClipper){//必備屬性二
//TODO:implementshouldReclip
returnfalse;
InkWell
inkWell在listTile里看到的控件,用這個(gè)可以自己組合Tile控件,并自帶點(diǎn)擊和長(zhǎng)按兩個(gè)事件,同時(shí)在用到按鈕的時(shí)候,我發(fā)現(xiàn)自帶的按鈕都有一定的大小,用I
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 整形醫(yī)院嘴唇培訓(xùn)課件
- 整十?dāng)?shù)加減整十?dāng)?shù)課件
- 農(nóng)機(jī)修理工安全演練競(jìng)賽考核試卷含答案
- 2025-2030醫(yī)療費(fèi)用控制措施與醫(yī)保體系架構(gòu)分析文稿
- 2025-2030醫(yī)療耗材供應(yīng)鏈動(dòng)態(tài)管理技術(shù)體系及應(yīng)用效果試驗(yàn)評(píng)估白皮書
- 2025-2030醫(yī)療機(jī)器人行業(yè)市場(chǎng)需求分析及產(chǎn)業(yè)發(fā)展政策規(guī)劃
- 貴金屬回收提純工安全應(yīng)急競(jìng)賽考核試卷含答案
- 2025-2030醫(yī)療康復(fù)設(shè)備市場(chǎng)現(xiàn)狀供需格局演變及技術(shù)標(biāo)準(zhǔn)提升評(píng)估
- 2025-2030醫(yī)療廢物無(wú)害化處理行業(yè)市場(chǎng)需求分析及行業(yè)發(fā)展趨勢(shì)調(diào)研
- 2025-2030醫(yī)療廢物處理行業(yè)政策環(huán)境分析及市場(chǎng)競(jìng)爭(zhēng)格局
- 贛州市章貢區(qū)2026年社區(qū)工作者(專職網(wǎng)格員)招聘【102人】考試參考題庫(kù)及答案解析
- 江蘇高職單招培訓(xùn)課件
- 2026年山東理工職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試參考題庫(kù)帶答案解析
- 2026年及未來(lái)5年市場(chǎng)數(shù)據(jù)中國(guó)氟樹脂行業(yè)發(fā)展?jié)摿Ψ治黾巴顿Y方向研究報(bào)告
- DB1331∕T 109-2025 雄安新區(qū)建設(shè)工程抗震設(shè)防標(biāo)準(zhǔn)
- DB37∕T 1317-2025 超細(xì)干粉滅火系統(tǒng)技術(shù)規(guī)范
- Scratch講座課件教學(xué)課件
- 《低碳醫(yī)院評(píng)價(jià)指南》(T-SHWSHQ 14-2025)
- 2025至2030中國(guó)砷化鎵太陽(yáng)能電池外延片行業(yè)市場(chǎng)深度研究與戰(zhàn)略咨詢分析報(bào)告
- 質(zhì)量環(huán)境及職業(yè)健康安全三體系風(fēng)險(xiǎn)和機(jī)遇識(shí)別評(píng)價(jià)分析及控制措施表(包含氣候變化)
- 四川省石室中學(xué)2025-2026學(xué)年高一上數(shù)學(xué)期末教學(xué)質(zhì)量檢測(cè)試題含解析
評(píng)論
0/150
提交評(píng)論