欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

flutter光標(biāo)設(shè)置,flutter 圖標(biāo)

Flutter初學(xué) —— 常用控件使用

在編寫幾個(gè) Flutter 項(xiàng)目后,發(fā)現(xiàn) Flutter 的強(qiáng)大之處在于業(yè)務(wù)中所有用到的控件以及場(chǎng)景都有對(duì)應(yīng)的處理方案;而 Dart 語言也與 Java 、 Kotlin 類似,所以對(duì) Android 開發(fā)者來說門檻非常低;特意記錄一下常用的控件及其使用:

創(chuàng)新互聯(lián)于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元遂寧做網(wǎng)站,已為上家服務(wù),為遂寧各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

StatelessWidget 不需要額外的創(chuàng)建 State

StatefulWidget 創(chuàng)建 State 類,并可以在其中保存一些狀態(tài)

only 可以單獨(dú)設(shè)置每個(gè)方向的內(nèi)邊距

類似于 LinearLayout 中的 orientation 設(shè)置為 vertical , mainAxisAlignment 表示豎向的一個(gè)對(duì)齊方式, crossAxisAlignment 表示橫向的對(duì)齊方式

與 Column 相反,主軸是橫向,對(duì)齊方式類似, crossAxisAlignment 表示豎向的對(duì)齊方式

類似 SizedBox ,一個(gè)容器,但是主要功能是有一個(gè) decoration —— 裝飾器,作用是繪制背景,或者使用 item 中的陰影

棧,先入后出,類似于 Android 上的 FrameLayout

通常配合 Stack 使用,固定顯示在某一個(gè)位置

配合多 child 使用,會(huì)填充剩余的空間

Image 功能強(qiáng)大,使用不同的方法可以加載不同來源的圖片

看到這些方法,突然覺得 Flutter 太香了,而且 Image 可以配置 clip 等裁剪出不同形狀的圖片,無論是圓形還是五角星都不在話下,然而 Android 要實(shí)現(xiàn)不規(guī)則的形狀,可是要下不少功夫的。

名字和 Android 的一模一樣,但是用法卻比 Android 的簡(jiǎn)單很多:

主要就是 itemCount 與 itemBuilder ,其余就是配置樣式, itemBuilder 需要返回一個(gè) widget ,當(dāng)然了,每個(gè) ListView 都有其對(duì)應(yīng)的 item ,在里面的方法中編寫 widget 即可

與 ListView 類似,但是需要有一個(gè) delegate 類,作用是設(shè)置有多少列,每一列之間的間距是多少

GridView 沒有 build , children 表示所有的子 view

最常用的控件之一,有非常多的樣式, Flutter 中通常是使用裝飾器來處理控件的,如背景使用 BoxDecoration , TextFiled 使用 InputDecoration ; 使用如下

Flutter真香,我用它寫了個(gè)桌面版JSON解析工具

Flutter支持穩(wěn)定的桌面設(shè)備開發(fā)已經(jīng)一段時(shí)間了,不得不說,F(xiàn)lutter多平臺(tái)支持的特性真的很香。我本人并沒有任何桌面開發(fā)的經(jīng)驗(yàn),但仍然使用Flutter開發(fā)出了一個(gè)桌面版小程序,功能很簡(jiǎn)單,就是對(duì)輸入的json做格式化處理和轉(zhuǎn)模型。

話不多說,先來看看實(shí)際效果。 項(xiàng)目源碼地址

開發(fā)環(huán)境如下:

Flutter : 2.8.1

Dart : 2.15.1

IDE : VSCode

JSON作為我們?nèi)粘i_發(fā)工作中經(jīng)常要打交道的一種數(shù)據(jù)格式,它共有6種數(shù)據(jù)類型: null , num , string , object , array , bool 。我們勢(shì)必對(duì)它又愛又恨。愛他因?yàn)樗鳛閿?shù)據(jù)處理的一種格式確實(shí)非常方便簡(jiǎn)潔。但是在我們做Flutter開發(fā)中,又需要接觸到j(luò)son解析時(shí),就會(huì)感覺非常棘手,因?yàn)閒lutter沒有反射,導(dǎo)致json轉(zhuǎn)模型這塊需要手寫那繁雜的映射關(guān)系。就像下面這樣子。

數(shù)據(jù)量少還能接受,一旦量大,那么光手寫這個(gè)解析方法都能讓你懷疑人生。更何況手寫還有出錯(cuò)的可能。好在官方有個(gè)工具**json_serializable**可以自動(dòng)生成這塊轉(zhuǎn)換代碼,也解決了flutter界json轉(zhuǎn)模型的空缺。當(dāng)然,業(yè)界也有專門解析json的網(wǎng)站,可以自動(dòng)生成dart代碼,使用者在生成后復(fù)制進(jìn)項(xiàng)目中即可,也是非常方便的。

本項(xiàng)目以json解析為切入點(diǎn),和大家一起來看下flutter是如何開發(fā)桌面應(yīng)用的。

要讓我們的flutter項(xiàng)目支持桌面設(shè)備。我們首先需要修改下flutter的設(shè)置。如下,讓我們的項(xiàng)目支持 windows 和 macos 系統(tǒng)。

接下來使用 flutter create 命令創(chuàng)建我們的模版工程。

創(chuàng)建完項(xiàng)目后,我們就可以 run 起來了。

先來看下整體界面,界面四塊,分別為功能模塊、文件選擇模塊、輸入模塊、輸出模塊。

我們?cè)谛陆ㄒ粋€(gè)桌面應(yīng)用時(shí),默認(rèn)的模版又一個(gè)Appbar,此時(shí)應(yīng)用可以用鼠標(biāo)拖拽移動(dòng),放大縮小,還可以縮到很小。但是,我們一旦去掉這個(gè)導(dǎo)航欄,那么窗口就不能用鼠標(biāo)拖動(dòng)了,并且我們往往不希望用戶將我們的窗口縮放的很小,這會(huì)導(dǎo)致頁面異常,一些重要信息都展示不全。因此這里需要借助第三方組件 bitsdojo_window 。通過 bitsdojo_window ,我們可以實(shí)現(xiàn)窗口的定制化,拖動(dòng),最小尺寸,最大尺寸,窗口邊框,窗口頂部放大、縮小、關(guān)閉的按鈕等。

通過 InkWell 組件,可以捕捉到手勢(shì)、鼠標(biāo)、觸控筆的移動(dòng)和停留位置

這個(gè)功能是鼠標(biāo)移動(dòng)后的UI交互界面。要在窗口上顯示一個(gè)提示框,可以使用 Overlay 。需要注意的是,由于在 Overlay 上的 text 的根結(jié)點(diǎn)不是 Material 風(fēng)格的組件,因此會(huì)出現(xiàn)黃色的下劃線。因此一定要用 Material 包一下 text 。并且你必須給創(chuàng)建的 OverlayEntry 一個(gè)位置,否則它將全屏顯示。

讀取說表拖拽的文件一開始想嘗試使用 InkWell 組件,但是這個(gè)組件無法識(shí)別拖拽中的鼠標(biāo),并且也無法從中拿到文件信息。因此放棄。后來從文章《Flutter-2天寫個(gè)桌面端APP》中發(fā)現(xiàn)一個(gè)可讀取拖拽文件的組件 desktop_drop ,能滿足要求。

使用開源組件 file_picker ,選完圖片后的操作和拖拽選擇圖片后的操作一致。

Textfield 如果要顯示富文本,那么需要自定義 TextEditingController 。并重寫 buildTextSpan 方法。

在做導(dǎo)出功能時(shí)遇到下列報(bào)錯(cuò),保存提示為沒有權(quán)限訪問對(duì)應(yīng)目錄下的文件。

通過Apple的開發(fā)文檔找到有關(guān)權(quán)限問題的說明。其中有個(gè)授權(quán)私鑰的key為 com.apple.security.files.downloads.read-write ,表示 對(duì)用戶的下載文件夾的讀/寫訪問權(quán)限 。那么,使用Xcode打開Flutter項(xiàng)目中的mac應(yīng)用,修改工程目錄下的 DebugProfile.entitlements 文件,向 entitlements 文件中添加 com.apple.security.files.downloads.read-write ,并將值設(shè)置為YES,保存后重啟Flutter項(xiàng)目。發(fā)現(xiàn)已經(jīng)可以向下載目錄中讀寫文件了。

當(dāng)然,這是正常操作。還有個(gè)騷操作就是關(guān)閉系統(tǒng)的沙盒機(jī)制。將 entitlements 文件的 App Sandbox 設(shè)置為NO。這樣我們就可以訪問任意路徑了。當(dāng)然關(guān)閉應(yīng)用的沙盒也就相當(dāng)于關(guān)閉了應(yīng)用的防護(hù)機(jī)制,因此這個(gè)選項(xiàng)慎用。

原文地址:

Flutter TextField 文本輸入框的基本屬性及詳解

源碼分析:

分析源碼可得,TextField 是有狀態(tài) StatefulWidget,有豐富的屬性,自定義化較高,實(shí)踐中需要合理利用各種回調(diào);

1、光標(biāo)的相關(guān)屬性;cursorColor 為光標(biāo)顏色,cursorWidth 為光標(biāo)寬度,cursorRadius 為光標(biāo)圓角;其中 Radius 提供了 circle 圓角和 elliptical 非圓角兩種;

2、textAlign 為文字起始位置,可根據(jù)業(yè)務(wù)光標(biāo)居左/居右/居中等;注意只是文字開始方向;textDirection 問文字內(nèi)容方向,從左向右或從右向左;

3、maxLength 為字符長(zhǎng)度,設(shè)置時(shí)默認(rèn)是展示一行,且右下角有編輯長(zhǎng)度與整體長(zhǎng)度對(duì)比;與 maxLengthEnforced 配合,maxLengthEnforced 為 true 時(shí)達(dá)到最大字符長(zhǎng)度后不可編輯;為 false 時(shí)可繼續(xù)編輯展示有差別;

4、設(shè)置 maxLength 之后右下角默認(rèn)有字符計(jì)數(shù)器,設(shè)置 TextField.noMaxLength 即可只展示輸入字符數(shù);

5、maxLines 為允許展現(xiàn)的最大行數(shù),在使用 maxLength 時(shí)內(nèi)容超過一行不會(huì)自動(dòng)換行,因?yàn)槟J(rèn) maxLines=1,此時(shí)設(shè)置為 null 或固定展示行數(shù)即可自動(dòng)換行;區(qū)別在于 null 會(huì)展示多行,而 maxLines 最多只展示到設(shè)置行數(shù);

6、obscureText 是否隱藏編輯內(nèi)容,常見的密碼格式;

7、enableInteractiveSelection 長(zhǎng)按是否出現(xiàn)【剪切/復(fù)制/粘貼】菜單;不可為空;

8、keyboardAppearance 為鍵盤亮度,包括 Brightness.dark/light 兩種,但僅限于 iOS 設(shè)備;

9、textCapitalization 文字大小寫;理論上 sentences 為每句話第一個(gè)字母大寫;characters為每個(gè)字母大寫;words 為每個(gè)單詞首字母大寫;但該屬性僅限于 text keybord,和尚在本地更換多種方式并未實(shí)現(xiàn),有待研究;

10、keyboardType 為鍵盤類型,和尚理解整體分為數(shù)字鍵盤和字母鍵盤等;根據(jù)設(shè)置的鍵盤類型,鍵盤會(huì)有差別;

a. 數(shù)字鍵盤

--1-- datetime 鍵盤上可隨時(shí)訪問 : 和 /;

--2-- phone 鍵盤上可隨時(shí)訪問 # 和 *;

--3-- number 鍵盤上可隨時(shí)訪問 + - * /

b. 字母鍵盤

--1-- emailAddress 鍵盤上可隨時(shí)訪問 @ 和 .;

--2-- url 鍵盤上可隨時(shí)訪問 / 和 .;

--3-- multiline 適用于多行文本換行;

--4-- text 默認(rèn)字母鍵盤;

11、textInputAction 通常為鍵盤右下角操作類型,類型眾多,建議多多嘗試;

12、autofocus 是否自動(dòng)獲取焦點(diǎn),進(jìn)入頁面優(yōu)先獲取焦點(diǎn),并彈出鍵盤,若頁面中有多個(gè) TextField 設(shè)置 autofocus 為 true 則優(yōu)先獲取第一個(gè)焦點(diǎn);

13、focusNode 手動(dòng)獲取焦點(diǎn),可配合鍵盤輸入等減少用戶操作次數(shù),直接獲取下一個(gè) TextField 焦點(diǎn);

14、enabled 設(shè)為 false 之后 TextField 為不可編輯狀態(tài);

15、decoration 為邊框修飾,可以借此來調(diào)整 TextField 展示效果;可以設(shè)置前置圖標(biāo),后置圖片,邊框?qū)傩裕瑑?nèi)容屬性等,會(huì)在后續(xù)集中嘗試;若要完全刪除裝飾,將 decoration 設(shè)置為空即可;

16、inputFormatters 為格式驗(yàn)證,例如原生 Android 中通常會(huì)限制輸入手機(jī)號(hào)或其他特殊字符,在 Flutter 中也可以借此來進(jìn)行格式限制,包括正則表達(dá)式;使用時(shí)需要引入 package:flutter/services.dart;

a. LengthLimitingTextInputFormatter 限制最長(zhǎng)字符;

b. WhitelistingTextInputFormatter 僅允許輸入白名單中字符;如 digitsOnly 僅支持?jǐn)?shù)字 [0-9];

c. BlacklistingTextInputFormatter 防止輸入黑名單中字符;如 singleLineFormatter 強(qiáng)制輸入單行;

分析源碼 RegExp("[/]") 可以設(shè)置正則表達(dá)式;

17、onChanged 文本內(nèi)容變更時(shí)回調(diào),可實(shí)時(shí)監(jiān)聽 TextField 輸入內(nèi)容;

18、controller 文本控制器,監(jiān)聽輸入內(nèi)容回調(diào);

19、onTap 點(diǎn)擊 TextField時(shí)回調(diào);

20、onEditingComplete 在提交內(nèi)容時(shí)回調(diào),通常是點(diǎn)擊回車按鍵時(shí)回調(diào);

21、onSubmit 在提交時(shí)回調(diào),不可與 onEditingComplete 同時(shí)使用,區(qū)別在于 onSubmit 是帶返回值的回調(diào);

問題小結(jié):

當(dāng) TextField 設(shè)置 enableInteractiveSelection 屬性后長(zhǎng)按會(huì)出現(xiàn)菜單,默認(rèn)為英文,可通過設(shè)置 Flutter 國(guó)際化來處理;

(1)在 pubspec.yaml 中集成 flutter_localizations;

2)在 MaterialApp 中設(shè)置本地化代理和支持的語言類型;

(1)將 maxLength 設(shè)置為 null 僅使用 LengthLimitingTextInputFormatter 限制最長(zhǎng)字符;

(2)設(shè)置 InputDecoration 中 decoration 屬性為空;但是底部有空余,只是隱藏而并非消失;

(1)Flutter記錄之啟動(dòng)頁

一年半前玩過flutter,忘光光...現(xiàn)在是時(shí)候重新拾取了。~

啟動(dòng)頁一般只放圖片或者加幾行文字。

1、創(chuàng)建好flutter項(xiàng)目之后,在lib文件下面新建launch.dart或xx.dart.

2、在根目錄下新建images文件夾,如已有直接放入圖片

3、flutter_yijiake.iml中加入注入該圖片,并注意空格

4、在根目錄下的test/widget_test.dart中更改默認(rèn)的啟動(dòng)頁為當(dāng)前的啟動(dòng)頁路徑

5、最后重新設(shè)置啟動(dòng)時(shí)的頁面

6、非常簡(jiǎn)單的啟動(dòng)頁面放logo圖片

值得一說的是,flutter框架的UI組件需要已new 組件的形式展開。

【Flutter】按鈕與文本(三)

此控件比較簡(jiǎn)單,按鈕的功能可劃分為UI樣式與事件回調(diào)

這里將幾種不同的按鈕一起運(yùn)行,做下對(duì)比動(dòng)圖如下:

這里對(duì)五種按鈕進(jìn)行column居中排列如下

Text用于顯示簡(jiǎn)單樣式文本,它包含一些控制文本顯示樣式的一些屬性。

TextStyle用于指定文本顯示的樣式如顏色、字體、粗細(xì)、背景等。

TextStyle更多屬性設(shè)置如下:

如果我們需要對(duì)一個(gè)Text內(nèi)容的不同部分按照不同的樣式顯示,即富文本,這時(shí)就可以使用TextSpan,它代表文本的一個(gè)“片段”。

如上述,我們當(dāng)然也可以在上述鏈接上添加手勢(shì)事件,后續(xù)會(huì)提到。

在widget樹中,文本的樣式默認(rèn)是可以被繼承的,因此,如果在widget樹的某一個(gè)節(jié)點(diǎn)處設(shè)置一個(gè)默認(rèn)的文本樣式,那么該節(jié)點(diǎn)的子樹中所有文本都會(huì)默認(rèn)使用這個(gè)樣式,而DefaultTextStyle正是用于設(shè)置默認(rèn)文本樣式的。

舉例如下:

新聞名稱:flutter光標(biāo)設(shè)置,flutter 圖標(biāo)
網(wǎng)頁鏈接:http://chinadenli.net/article28/dsesjcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站軟件開發(fā)品牌網(wǎng)站設(shè)計(jì)域名注冊(cè)網(wǎng)站改版建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司