人人做人人干-人人做人人看-人人做人人爽国产视-人人做人人爽人人爱-色屋视频-色屋网

歡迎您光臨深圳塔燈網(wǎng)絡(luò)科技有限公司!
電話圖標(biāo) 余先生:13699882642

網(wǎng)站百科

為您解碼網(wǎng)站建設(shè)的點(diǎn)點(diǎn)滴滴

Flutter中組件

發(fā)表日期:2018-11 文章編輯:小燈 瀏覽次數(shù):3808

1.App結(jié)構(gòu)和導(dǎo)航

Scaffold:Material Design布局結(jié)構(gòu)的基本實(shí)現(xiàn)。此類提供了用于顯示drawersnackbar和底部sheetAPI

widget詳解:

在Flutter中,我們平時(shí)自定義的widget,一般都是繼承自StatefulWidget或StatelessWidget(并不是只有這兩種),這兩種widget也是目前最常用的兩種。如果一個(gè)控件自身狀態(tài)不會(huì)去改變,創(chuàng)建了就直接顯示,不會(huì)有色值、大小或者其他屬性的變化,這種widget一般都是繼承自StatelessWidget,常見的有Container、ScrollView等。如果一個(gè)控件需要?jiǎng)討B(tài)的去改變或者相應(yīng)一些狀態(tài),例如點(diǎn)擊態(tài)、色值、內(nèi)容區(qū)域等,那么一般都是繼承自StatefulWidget,常見的有CheckBox、AppBar、TabBar等。其實(shí)單純的從名字也可以看出這兩種widget的區(qū)別,這兩種widget都是繼承自Widget類。

State:

在說到StatefulWidget之前,先說下State。State的作用有兩點(diǎn):

在widget構(gòu)建的時(shí)候可以被同步讀取;

在widget的生命周期中可能會(huì)被改變。

3.2.1 State生命周期

State的生命周期有四種狀態(tài):

created:當(dāng)State對(duì)象被創(chuàng)建時(shí)候,State.initState方法會(huì)被調(diào)用;

initialized:當(dāng)State對(duì)象被創(chuàng)建,但還沒有準(zhǔn)備構(gòu)建時(shí),State.didChangeDependencies在這個(gè)時(shí)候會(huì)被調(diào)用;

ready:State對(duì)象已經(jīng)準(zhǔn)備好了構(gòu)建,State.dispose沒有被調(diào)用的時(shí)候;

defunct:State.dispose被調(diào)用后,State對(duì)象不能夠被構(gòu)建

Flutter控件之Scaffold

Scaffold實(shí)現(xiàn)了基本的紙墨設(shè)計(jì)布局結(jié)構(gòu)。在示例應(yīng)用中,MyHomePage所返回的就是一個(gè)Scaffold。也就是說,MaterialApp的child是Scaffold Widget。

在紙墨設(shè)計(jì)中定義的單個(gè)界面上的各種布局元素,在Scaffold中都有支持,比如左邊欄(Drawers)、snack bars、以及bottom sheets。

Scaffold 有下面幾個(gè)主要屬性:

appBar:顯示在界面頂部的一個(gè)AppBar,也就是Android中的ActionBar、Toolbar

body:當(dāng)前界面所顯示的主要內(nèi)容 Widget

floatingActionButton:紙墨設(shè)計(jì)中所定義的FAB,界面的主要功能按鈕

persistentFooterButtons:固定在下方顯示的按鈕,比如對(duì)話框下方的確定、取消按鈕

drawer:側(cè)邊欄控件

backgroundColor:內(nèi)容的背景顏色,默認(rèn)使用的是ThemeData.scaffoldBackgroundColor的值

bottomNavigationBar:顯示在頁面底部的導(dǎo)航欄

resizeToAvoidBottomPadding:類似于Android中的android:windowSoftInputMode=”adjustResize”,控制界面內(nèi)容body是否重新布局來避免底部被覆蓋了,比如當(dāng)鍵盤顯示的時(shí)候,重新布局避免被鍵盤蓋住內(nèi)容。默認(rèn)值為true。

顯示snackbar或者bottom sheet的時(shí)候,需要使用當(dāng)前的BuildContext參數(shù)調(diào)用Scaffold.of函數(shù)來獲取ScaffoldState對(duì)象,然后使用ScaffoldState.showSnackBar和ScaffoldState.showBottomSheet函數(shù)來顯示。

要特別注意Scaffold.of的參數(shù)BuildContext,如果包含該BuildContext的Widget是Scaffold的父Widget,則Scaffold.of是無法查找到對(duì)應(yīng)的ScaffoldState對(duì)象的,Scaffold.of返回的是父對(duì)象中最近的Scaffold中的ScaffoldState對(duì)象。比如,如果在Scaffold的build函數(shù)中,使用build的BuildContext參數(shù)是可以的:

2.各種組件級(jí)屬性

1.SingleChildScrollView組件:

????從屏幕溢出時(shí)自動(dòng)開始滾動(dòng)

scrollDirection:滾動(dòng)的方向

3.Flutter TextStyle參數(shù)解析

const TextStyle({?

this.inherit: true,//為false的時(shí)候不顯示?

this.color,//顏色?

this.fontSize,//字號(hào)?

this.fontWeight,//字重,加粗也用這個(gè)字段FontWeight.w700?

this.fontStyle,// FontStyle.normal FontStyle.italic斜體?

this.letterSpacing, // 字符間距 就是單個(gè)字母或者漢字之間的間隔,可以是負(fù)數(shù)

this.wordSpacing,//字間距句字之間的間距?

this.textBaseline,//基線,兩個(gè)值,字面意思是一個(gè)用來排字母的,一人用來排表意字的(類似中文)this.height,//當(dāng)用來Text控件上時(shí),行高(會(huì)乘以fontSize,所以不以設(shè)置過大)?

this.decoration,//添加上劃線,下劃線,刪除線?

this.decorationColor,//劃線的顏色?

this.decorationStyle,//這個(gè)style可能控制畫實(shí)線,虛線,兩條線,點(diǎn),波浪線等?

this.debugLabel,String fontFamily,//字體String package,?

}): fontFamily = package == null ? fontFamily : 'packages/$package/$fontFamily',assert(inherit != null);

4.md5加密

dart有內(nèi)置的md5加密包,先引入頭文件:

import 'dart:convert';

import 'package:convert/convert.dart';

import 'package:crypto/crypto.dart';

md5加密方法

// md5加密

String generateMd5(String data){

? var content = new Utf8Encoder().convert(data);

? var digest = md5.convert(content);

? //這里其實(shí)就是digest.toString()

? return hex.encode(digest.bytes);

}

5.Image屬性

BoxFit.noneBoxFit.fill全圖顯示,顯示可能拉伸,充滿

BoxFit.contain全圖顯示,顯示原比例,不需充滿

BoxFit.cover顯示可能拉伸,可能裁剪,充滿

BoxFit.fitWidth顯示可能拉伸,可能裁剪,寬度充滿

BoxFit.fitHeight顯示可能拉伸,可能裁剪,高度充滿

BoxFit.none

BoxFit.scaleDown效果和contain差不多,但是此屬性不允許顯示超過源圖片大小,可小不可大

6.TextField組件

const TextField({

? ? Key key,

? ? this.controller,? ? ? ? ? ? //控制器,控制TextField文字

? ? this.focusNode,

? ? this.decoration: const InputDecoration(),? ? ? //輸入器裝飾

? ? TextInputType keyboardType: TextInputType.text, //輸入的類型

? ? this.style,

? ? this.textAlign: TextAlign.start,

? ? this.autofocus: false,

? ? this.obscureText: false,? //是否隱藏輸入

? ? this.autocorrect: true,

? ? this.maxLines: 1,

? ? this.maxLength,

? ? this.maxLengthEnforced: true,

? ? this.onChanged,? ? ? ? ? ? //文字改變觸發(fā)

? ? this.onSubmitted,? ? ? ? ? //文字提交觸發(fā)(鍵盤按鍵)

? ? this.inputFormatters,

? ? this.enabled,

? })

7. DrawerHeaderUserAccountsDrawerHeader組件

DrawerHeader

通常用于在抽屜中在頂部展示一些基本信息;其包含如下屬性:

decoration:header區(qū)域的decoration,通常用來設(shè)置背景顏色或者背景圖片

duration和curve:如果decoration發(fā)生了變化,則會(huì)使用curve設(shè)置的變化曲線和duration設(shè)置的動(dòng)畫時(shí)間來做一個(gè)切換動(dòng)畫

child: Header里面所顯示的內(nèi)容控件

padding: Header里面內(nèi)容控件的padding值,如果child為null,則這個(gè)值無效

margin:Header四周的間隙

如果想在DrawerHeader中顯示用戶賬戶信息,比如類似于Gmail的聯(lián)系人頭像、用戶名、Email等信息,則可以使用UserAccountsDrawerHeader這個(gè)特殊的DrawerHeader。

UserAccountsDrawerHeader

UserAccountsDrawerHeader可以設(shè)置用戶頭像、用戶名、Email等信息,顯示一個(gè)符合MD規(guī)范的drawer header。其常用屬性如下:

margin:Header四周的間隙

decoration:header區(qū)域的decoration,通常用來設(shè)置背景顏色或者背景圖片

currentAccountPicture:用來設(shè)置當(dāng)前用戶的頭像

otherAccountsPictures:用來設(shè)置當(dāng)前用戶的其他賬號(hào)的頭像(做多顯示三個(gè))

accountName:當(dāng)前用戶的名字

accountEmail:當(dāng)前用戶的Email

onDetailsPressed:當(dāng)accountName或者accountEmail被點(diǎn)擊的時(shí)候所觸發(fā)的回調(diào)函數(shù),可以用來顯示其他額外的信息

8.Flutter 控件之 AppBar SliverAppBar

leading:在標(biāo)題前面顯示的一個(gè)控件,在首頁通常顯示應(yīng)用的 logo;在其他界面通常顯示為返回按鈕

title: Toolbar 中主要內(nèi)容,通常顯示為當(dāng)前界面的標(biāo)題文字

actions:一個(gè) Widget 列表,代表 Toolbar 中所顯示的菜單,對(duì)于常用的菜單,通常使用 IconButton 來表示;對(duì)于不常用的菜單通常使用 PopupMenuButton 來顯示為三個(gè)點(diǎn),點(diǎn)擊后彈出二級(jí)菜單

bottom:一個(gè)AppBarBottomWidget對(duì)象,通常是TabBar。用來在Toolbar標(biāo)題下面顯示一個(gè)Tab導(dǎo)航欄

elevation:紙墨設(shè)計(jì)中控件的z坐標(biāo)順序,默認(rèn)值為4,對(duì)于可滾動(dòng)的SliverAppBar,當(dāng)SliverAppBar和內(nèi)容同級(jí)的時(shí)候,該值為0,當(dāng)內(nèi)容滾動(dòng)SliverAppBar變?yōu)門oolbar的時(shí)候,修改elevation的值

flexibleSpace:一個(gè)顯示在AppBar下方的控件,高度和AppBar高度一樣,可以實(shí)現(xiàn)一些特殊的效果,該屬性通常在SliverAppBar中使用

backgroundColor:APP bar的顏色,默認(rèn)值為ThemeData.primaryColor。改值通常和下面的三個(gè)屬性一起使用

brightness:App bar的亮度,有白色和黑色兩種主題,默認(rèn)值為ThemeData.primaryColorBrightness

iconTheme:App bar上圖標(biāo)的顏色、透明度、和尺寸信息。默認(rèn)值為ThemeData.primaryIconTheme

textTheme:App bar上的文字樣式。默認(rèn)值為ThemeData.primaryTextTheme

centerTitle: 標(biāo)題是否居中顯示,默認(rèn)值根據(jù)不同的操作系統(tǒng),顯示方式不一樣

decoration:屬性

—-陰影效果

decoration:new BoxDecoration(

? ? ? color: Colors.white,

? ? ? boxShadow:[

? ? ? ? BoxShadow(

? ? ? ? ? ? offset: Offset(0.0,0.0),

? ? ? ? ? ? //color: Color.fromRGBO(16, 20, 188, 1.0),

? ? ? ? ? ? blurRadius: 20.0,

? ? ? ? ? ? spreadRadius: -16.0)

? ? ? ],

? ? ? border:new Border(top:new BorderSide(color: Colors.white12))),

);

—透明

const Color(0x000099ff), //0x 后面開始 兩位FF表示透明度16進(jìn)制,


本頁內(nèi)容由塔燈網(wǎng)絡(luò)科技有限公司通過網(wǎng)絡(luò)收集編輯所得,所有資料僅供用戶學(xué)習(xí)參考,本站不擁有所有權(quán),如您認(rèn)為本網(wǎng)頁中由涉嫌抄襲的內(nèi)容,請(qǐng)及時(shí)與我們聯(lián)系,并提供相關(guān)證據(jù),工作人員會(huì)在5工作日內(nèi)聯(lián)系您,一經(jīng)查實(shí),本站立刻刪除侵權(quán)內(nèi)容。本文鏈接:http://www.kwpm.com.cn/17566.html
相關(guān)APP開發(fā)
 八年  行業(yè)經(jīng)驗(yàn)

多一份參考,總有益處

聯(lián)系深圳網(wǎng)站公司塔燈網(wǎng)絡(luò),免費(fèi)獲得網(wǎng)站建設(shè)方案及報(bào)價(jià)

咨詢相關(guān)問題或預(yù)約面談,可以通過以下方式與我們聯(lián)系

業(yè)務(wù)熱線:余經(jīng)理:13699882642

Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.    

主站蜘蛛池模板: 欧美一区二区在线观看 | 大伊香蕉在线精品视频人碰人 | 久久综合欧美 | 天天艹 | 国产精品久久久久久久免费 | 亚洲精品免播放器在线观看 | 色综合久久加勒比高清88 | 妞干在线 | 欧美日韩免费一区二区在线观看 | 天天夜夜爽 | 欧美日韩中文在线 | 欧美国产成人精品一区二区三区 | 欧美a区| 国产精品人人视频 | 日韩a毛片免费全部播放完整 | 欧美日韩高清在线观看一区二区 | 亚洲欧洲日本天天堂在线观看 | 美国一级大黄香蕉片 | 国产麻豆精品高清在线播放 | 最近最新中文字幕免费高清1 | 日本高清中文字幕一区二区三区a | 性欧美free荷兰hd | 国产精品成人观看视频网站 | 午夜视频十八嗯嗯啊免费 | 日本免费大黄 | 国产精品久久久久久久久鸭 | 日本不卡视频一区二区 | 国产亚洲一区二区精品张柏芝 | 欧美国产伦久久久久 | 亚洲国产精品久久久久网站 | 成人国产一区二区 | 国产99久9在线视频 国产99视频精品免费观看7 | 黄色网址免费观看视频 | 日日欧美 | 黄乱色伦 | 免费女上男下xx00xx动态图 | 国产精品午夜在线播放a | 国产日韩欧美在线播放 | 欧美日韩另类在线观看视频 | 美女h片 | 成人片在线看 |