相對于iOS開發(fā),F(xiàn)lutter的布局更具有靈活性,每個頁面設計都不一樣,相同頁面可選擇的布局方式也不一樣,如果單純的說應該如何去布局,我覺得不現(xiàn)實,大家可以參考下 Flutter官方的布局教程 。接下來,筆者,通過項目中的一個頁面,來一步一步的拆解布局的流程。整個過程,基本上按照拆解、組件封裝、具體布局這三步來的。
敖漢ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
根據(jù)設計圖,可以看出整體可以分成兩部分,上面一部分是系統(tǒng)介紹模塊,下面一部分是真正的登錄內(nèi)容,因為涉及到疊加,因此考慮用Stack;
系統(tǒng)介紹模塊部分:整體也是涉及到疊加,考慮用Stack,分為四部分。最底部漸變色背景用一個contanier,無須指定位置,全視圖擴展;載放logo圖標在上一層,用Image。最后兩個Text同級放在最上層。Image,Text各用Positioned包裹去指定位置。
登錄內(nèi)容模塊是最外層是一個Contanier容器,去控制背景色和圓角。然后是一個Column元素,逐行排列。
第一行為Image,
第二行為Text,
第三行可以看成一個小Column,分兩塊進行布局
第四行可以看成一個小Column,分兩塊進行布局
第五行可以看作一個TextButton,
第六行可以看作一個Row,分三塊進行布局
通過上面這樣一步一步的分析后,基本上對大致的布局有了一個了解,最外層的控件大致選對(只要能實現(xiàn)的話,就是復雜度以及效率的問題),然后一步一步的拆解每一行的元素,如果有重復的或者覺得可以封裝出來的部分,則進行下一步。
每一行的拆解,大致也是按照這個思路來進行,因此筆者在這里就不做講解了。
在做到第三第四行的時候,發(fā)現(xiàn)這兩個很相似,而且設計到一些交互邏輯,筆者就想對第三第四行的這種展示進行封裝,覺得今后的布局可能會用到,因此在這一步,可以先把這一塊兒抽離出一個控件。利用TextField來實現(xiàn)這種輸入操作,具體的實現(xiàn)筆者不再詳細的描述了。
經(jīng)過這一步,整體的規(guī)劃設計圖已經(jīng)有了,各個組件也都有了,接下來的工作就是組裝了。
具體布局設計到一些細節(jié)的地方,例如整體Column的居中對齊(crossAxisAlignment)、間隔(Padding或Container包裹,筆者更喜歡用SizedBox占位)、居左居右居中(Align)、點擊事件(GestureDetector)以及圓角(BorderRadius)等一些特殊情況。
像第六行row是放在底部的,就可以在第六行前面增加一個Spacer()去填充空白區(qū)域。
對文字顏色大小等,可以用TextStyle直接設置。
對于輸入框的刪除按鈕,可以用Offstage這種Flutter特有的控制顯示隱藏的控件。
Flutter中給我們預先定義好了一些按鈕控件給我們用,常用的按鈕如下
我們先來看看MaterialButton中的屬性,可以看到能設置的屬性還是很多的。
下面我們來看看常用屬性
而在Android中如果我們要修改按鈕樣式的話,需要通過selector和Shape等方式進行修改,相比較Flutter來說是要麻煩不少的
RaisedButton的構造方法如下,由于繼承自MaterialButton,所以MaterialButton中的大多數(shù)屬性這邊都能用,且效果一致,這里就不在贅述了
下面我們來看一下屬性
接收一個方法,點擊按鈕時回調(diào)該方法。如果傳null,則表示按鈕禁用
如下圖所示
按鈕文本控件,一般都是傳一個Text Widget
按鈕顏色
按鈕的文本顏色
點擊按鈕時水波紋顏色
高亮顏色,點擊(長按)按鈕后的顏色
陰影范圍,一般不會設置太大
內(nèi)邊距,使用
或者
shape用來設置按鈕的形狀,其接收值是ShapeBorder類型,ShapeBorder是一個抽象類,我們來看看有哪些實現(xiàn)類
可以看到,實現(xiàn)類還是很多的,我們主要來看看常用的即可。
borderRadius 接收一個BorderRadius類型的值,常用方法如下
我們可以把borderRadius分為上下左右四個方向,下面的方法都是對這四個方向進行設置,
帶斜角的長方形邊框
圓形邊框
圓角矩形
兩端是半圓的邊框
FlatButton跟RaisedButton用法基本一致,下面我們就直接用一下
注意,OutlineButton是一個有默認邊線且背景透明的按鈕,也就是說我們設置其邊線和顏色是無效的,其他屬性跟MaterialButton中屬性基本一致
下面我們直接來使用
效果如下:
IconButton是直接繼承自StatelessWidget的,默認沒有背景
我們來看一下他的構造方法
可以看到,icon是必填參數(shù)
icon接收一個Widget,但是一般我們都是傳入一個Icon Widget
其他屬性跟MaterialButton中的屬性用法基本一致
我們來用一下
效果如下:
我們也可以傳一個Text或其他Widget,這個大家自行嘗試吧
如果我們需要設置按鈕的最小寬度以及高度,button屬性中并沒有提供對應的設置方法
使用如下:
Flutter中Button內(nèi)容大概就是這些
常規(guī)操作,就是使用android studio編輯器,F(xiàn)lie--New--New Flutter Project
一路直接Next+Finish ,項目就創(chuàng)建成功了。
常規(guī)的運行到手機或者模擬器上就不說了,下面說下運行到web瀏覽器上。
如上圖,選擇最后一個是手機真機調(diào)試,選擇Chome或者Edge都可以運行到web瀏覽器中,選擇好后點擊綠色運行按鈕。
此控件比較簡單,按鈕的功能可劃分為UI樣式與事件回調(diào)
這里將幾種不同的按鈕一起運行,做下對比動圖如下:
這里對五種按鈕進行column居中排列如下
Text用于顯示簡單樣式文本,它包含一些控制文本顯示樣式的一些屬性。
TextStyle用于指定文本顯示的樣式如顏色、字體、粗細、背景等。
TextStyle更多屬性設置如下:
如果我們需要對一個Text內(nèi)容的不同部分按照不同的樣式顯示,即富文本,這時就可以使用TextSpan,它代表文本的一個“片段”。
如上述,我們當然也可以在上述鏈接上添加手勢事件,后續(xù)會提到。
在widget樹中,文本的樣式默認是可以被繼承的,因此,如果在widget樹的某一個節(jié)點處設置一個默認的文本樣式,那么該節(jié)點的子樹中所有文本都會默認使用這個樣式,而DefaultTextStyle正是用于設置默認文本樣式的。
舉例如下:
上一篇講到如果解決ios長按輸入框報錯的問題,但是最終沒有達到我們的要求,因為我們想實現(xiàn)中文的提示,那么本篇文章講講如何來實現(xiàn)多語言配置;
1.首先在pubspec.yaml的dependencies下加入這個
flutter_localizations:
sdk: flutter
如圖:
2.然后在MaterialApp設置一下localizationsDelegates如圖:
3.寫一個類繼承一下CupertinoLocalizations,在項目中 我這個類名叫ChineseCupertinoLocalizations(沒錯,就是localizationsDelegates中的第三個),如圖:
上次提到報錯的原因就是因為cutButtonLabel,copyButtonLabel,pasteButtonLabel,selectAllButtonLabel 這幾個按鈕沒有實現(xiàn),所以繼承CupertinoLocalizations一定要為這幾個按鈕賦值,這里是那種語言,那么,賦值就對應那種語言,同時要注意locale.languageCode也要填寫,如果你是中文,那么locale.languageCode =='zh';
4.在ios工程中,在項目的info設置語言環(huán)境
添加?Localization native development region---china
添加一個Localizations 為array類型的,并且設置值為?Chinese (simplified)
效果圖:( 注意:請把手機環(huán)境調(diào)試成中文的語言環(huán)境 )
Android?
ios 效果圖
我公司用flutter做了一個《柚品生活》的app,感興趣的朋友可以去看看,Android和ios都已經(jīng)上架了
最后附上GitHub項目地址 GitHub - hxxsocket/flutter_lg_demo: flutter多語言配置之中文
本次主要是記錄Fultter Theme主題的設備與AppBar中的一些屬性的使用及說明。目前項目開發(fā)有了四個界面。前期主題沒太注意,今天看來要好好總結一下近期所學。
首先,Android主題沉浸式設置,F(xiàn)lutter篇:
根據(jù)字面意思就能看出來是對狀態(tài)懶得設置,其中用到了 dart:io 與 flutter/services.dart 這兩個重點Mark一下,有時間深入探究一下用法跟能力?;貧w正題。
主題數(shù)據(jù),其中最常用的是 primarySwatch 、 primaryColor 、 accentColor 。
primarySwatch:UI右下角的FloatingActionButton的顏色就是默認取值MaterialColor,
默認是藍色的,如果修改成primarySwatch,就會變成這個顏色值。只支持MaterialColor。
primaryColor:頂部導航欄和狀態(tài)欄的顏色修改,需要用到這個屬性,類型 Color。
accentColor:前景色(文本、按鈕、覆蓋邊緣效果等)。
看一下項目中的使用
其中 brightness 主題設置較為關鍵,它是設置狀態(tài)欄圖標與字體顏色的。
brightness: Brightness.dark 狀態(tài)欄圖標與字體顏色為白色。
brightness: Brightness.light 狀態(tài)欄圖標與字體顏色為黑色。
iconTheme :設置appbar icon的顏色,appbar中icon的顏色會根據(jù)primaryColor的改變來確定自身的顏色,這里可以在iconTheme中指定icon的顏色。
默認不做修改前:
文章標題:flutter漸變色按鈕,flutter 顏色選擇器
地址分享:http://jinyejixie.com/article42/dssoeec.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、定制網(wǎng)站、微信公眾號、網(wǎng)站制作、外貿(mào)建站、外貿(mào)網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)