真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

flutter字體切換,flutter文本編輯器

3、Flutter中ThemeData與AppBar

本次主要是記錄Fultter Theme主題的設(shè)備與AppBar中的一些屬性的使用及說明。目前項(xiàng)目開發(fā)有了四個(gè)界面。前期主題沒太注意,今天看來要好好總結(jié)一下近期所學(xué)。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比大城網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式大城網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋大城地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。

首先,Android主題沉浸式設(shè)置,F(xiàn)lutter篇:

根據(jù)字面意思就能看出來是對(duì)狀態(tài)懶得設(shè)置,其中用到了 dart:io 與 flutter/services.dart 這兩個(gè)重點(diǎn)Mark一下,有時(shí)間深入探究一下用法跟能力。回歸正題。

主題數(shù)據(jù),其中最常用的是 primarySwatch 、 primaryColor 、 accentColor 。

primarySwatch:UI右下角的FloatingActionButton的顏色就是默認(rèn)取值MaterialColor,

默認(rèn)是藍(lán)色的,如果修改成primarySwatch,就會(huì)變成這個(gè)顏色值。只支持MaterialColor。

primaryColor:頂部導(dǎo)航欄和狀態(tài)欄的顏色修改,需要用到這個(gè)屬性,類型 Color。

accentColor:前景色(文本、按鈕、覆蓋邊緣效果等)。

看一下項(xiàng)目中的使用

其中 brightness 主題設(shè)置較為關(guān)鍵,它是設(shè)置狀態(tài)欄圖標(biāo)與字體顏色的。

brightness: Brightness.dark 狀態(tài)欄圖標(biāo)與字體顏色為白色。

brightness: Brightness.light 狀態(tài)欄圖標(biāo)與字體顏色為黑色。

iconTheme :設(shè)置appbar icon的顏色,appbar中icon的顏色會(huì)根據(jù)primaryColor的改變來確定自身的顏色,這里可以在iconTheme中指定icon的顏色。

默認(rèn)不做修改前:

在flutter中,從后臺(tái)調(diào)取的數(shù)據(jù)是拼音,怎么把它轉(zhuǎn)換成漢字呢???求代碼

想要在WPS表格中把漢字轉(zhuǎn)換成拼音或小寫字母,只需要運(yùn)用模塊代碼編輯功能就能輕松解決,具體操作方法如下:

步驟1、打開要轉(zhuǎn)換成拼音的excel表格,按“Alt+F11”組合鍵,進(jìn)入Visual Basic編輯狀態(tài)。也就是看到的這個(gè)灰色的編輯界面。

步驟2、執(zhí)行“插入→模塊”命令,插入一個(gè)新模塊。再雙擊插入的模塊,進(jìn)入模塊代碼編輯狀態(tài)。

步驟3、看到如下界面。

步驟4、把下面的所有內(nèi)容復(fù)制,粘貼到步驟4中的空白處。

Function?pinyin(p?As?String)?As?String

i?=?Asc(p)

Select?Case?i

Case?-20319?To?-20318:?pinyin?=?"a?"

Case?-20317?To?-20305:?pinyin?=?"ai?"

Case?-20304?To?-20296:?pinyin?=?"an?"

Case?-20295?To?-20293:?pinyin?=?"ang?"

Case?-20292?To?-20284:?pinyin?=?"ao?"

Case?-20283?To?-20266:?pinyin?=?"ba?"

Case?-20265?To?-20258:?pinyin?=?"bai?"

Case?-20257?To?-20243:?pinyin?=?"ban?"

Case?-20242?To?-20231:?pinyin?=?"bang?" ?

Case?-20230?To?-20052:?pinyin?=?"bao?"

Case?-20051?To?-20037:?pinyin?=?"bei?"

Case?-20036?To?-20033:?pinyin?=?"ben?"

Case?-20032?To?-20027:?pinyin?=?"beng?"

Case?-20026?To?-20003:?pinyin?=?"bi?"

Case?-20002?To?-19991:?pinyin?=?"bian?"

Case?-19990?To?-19987:?pinyin?=?"biao?"

Case?-19986?To?-19983:?pinyin?=?"bie?"

Case?-19982?To?-19977:?pinyin?=?"bin?"

Case?-19976?To?-19806:?pinyin?=?"bing?"

Case?-19805?To?-19785:?pinyin?=?"bo?"

Case?-19784?To?-19776:?pinyin?=?"bu?"

Case?-19775?To?-19775:?pinyin?=?"ca?"

Case?-17721?To?-17704:?pinyin?=?"he?"

Case?-17703?To?-17702:?pinyin?=?"hei?"

Case?-17701?To?-17698:?pinyin?=?"hen?"

Case?-17697?To?-17693:?pinyin?=?"heng?"

Case?-17692?To?-17684:?pinyin?=?"hong?"

Case?-17683?To?-17677:?pinyin?=?"hou?"

Case?-17676?To?-17497:?pinyin?=?"hu?"

步驟5、按下ALT+Q關(guān)閉Visual Basic編輯窗口,返回Excel編輯狀態(tài)。

步驟6、選中轉(zhuǎn)換后的拼音需要放在哪個(gè)列,例如要把B列的第2行的內(nèi)容轉(zhuǎn)換成拼音,放在D列的第2個(gè)單元格,輸入公式:=getpy(B2),這里的B2,是指源頭單元格的坐標(biāo)。

步驟7、如果要去除拼音之間的空格。去掉空格的拼音放在E列,如果這個(gè)未去掉空格的數(shù)據(jù)原來在D2單元格,去掉空格之后的拼音放在E2單元格,則在E2單元格輸:?=SUBSTITUTE(D2," ","")。

【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_為啥安卓字體效果和iOS不一樣?3

1、除了兩個(gè)平臺(tái)的系統(tǒng)默認(rèn)字體不一樣之外。

2、在設(shè)置字體字重(字體粗細(xì))時(shí)。

ios的字體粗細(xì)和下面截圖中的一一對(duì)應(yīng)。

安卓的w500及以下都是正常字體,安卓的w600和w700相當(dāng)于ios的w500,安卓的w800及以后都是一樣粗細(xì)。

當(dāng)我把PingFang字體文件,導(dǎo)入并使用后。

flutter修改狀態(tài)欄字體顏色

主要用到的是appbar中的brightness屬性,brightness有兩個(gè)值可取,分別是Brightness.dark和Brightness.light.

另一種方案是:就是用AnnotatedRegionSystemUiOverlayStyle包裹,

發(fā)現(xiàn)一種更靈活的辦法,如下:

只需要在最外層包裹一下,然后設(shè)置狀態(tài)欄字體顏色就可以了,可以不用appbar,更加靈活

Flutter 上字體的另類玩法:FontFeature

在以前的 《Flutter 上默認(rèn)的文本和字體知識(shí)點(diǎn)》 和 《帶你深入理解 Flutter 中的字體“冷”知識(shí)》 中,已經(jīng)介紹了很多 Flutter 上關(guān)于字體有趣的知識(shí)點(diǎn),而本篇講繼續(xù)介紹 Flutter 上關(guān)于 Text 的一個(gè)屬性: FontFeature , 事實(shí)上相較于 Flutter ,本篇內(nèi)容可能和前端或者設(shè)計(jì)關(guān)系更密切 。

什么是 FontFeature ? 簡(jiǎn)單來說就是影響字體形狀的一個(gè)屬性 ,在前端的對(duì)應(yīng)領(lǐng)域里應(yīng)該是 font-feature-settings ,它有別于 FontFamily ,是用于指定字體內(nèi)字的形狀的一個(gè)參數(shù)。

我們知道 Flutter 默認(rèn)在 Android 上使用的是 Roboto 字體,而在 iOS 上使用的是 SF 字體,但是其實(shí) Roboto 字體也是分很多類型的,比如你去查閱手機(jī)的 system/fonts 目錄,就會(huì)發(fā)現(xiàn)很多帶有 Roboto 字樣的字體庫存在。

所以 Roboto 之類的字體庫是一個(gè)很大的字體集,不同的 font-weight 其實(shí)對(duì)應(yīng)著不同的 ttf ,例如默認(rèn)情況下的 Roboto 是不支持 font-weight 為 600 的配置 :

所以如下圖所示,如果我們?cè)O(shè)置了 w400 - w700 的 weight ,可以很明顯看到中間的 500 和 600 其實(shí)是一樣的粗細(xì),所以在 設(shè)置 weight 或者設(shè)計(jì) UI 時(shí),就需要考慮不同平臺(tái)上的 weight 是否支持想要的效果 。

回歸到 FontFeature 上,那 Roboto 自己默認(rèn)支持多少種 features 呢? 答案是 26 種,它們的編碼如下所示,運(yùn)行后效果也如下圖所示,從日常使用上看,這 26 種 Feature 基本滿足開發(fā)的大部分需求。

而 iOS 上的 SF pro 默認(rèn)支持 39 種 Features , 它們的編碼如下所示,運(yùn)行后效果也如下圖所示,可以看到 SF pro 支持的 Features 更多。

所以可以看到,并不是所有字體支持的 Features 都是一樣的,比如 iOS 上支持 sups 上標(biāo)顯示和 subs 下標(biāo)顯示,但是 Android 上的 Roboto 并不支持,甚至很多第三方字體其實(shí)并不支持 Features 。

有趣的是,在 Flutter Web 有一個(gè)渲染文本時(shí)會(huì)變模糊的問題 #58159 ,這個(gè)問題目前官方還沒有修復(fù),但是你可以通過給 Text 設(shè)置任意 FontFeatures 來解決這個(gè)問題。

最后,如果對(duì) FontFeature 還感興趣的朋友,可以通過一下資料深入了解,如果你還有什么關(guān)于字體上的問題,歡迎留言討論。

基于網(wǎng)友的問題再補(bǔ)充一下拓展知識(shí),畢竟這方面內(nèi)容也不多 。

事實(shí)上在 dart 里就可以看到對(duì)應(yīng) FontWeight 約定俗稱用的是字體集里的什么字體:

所以如果對(duì)于默認(rèn)字體有疑問,可以在你的手機(jī)字體找找是否有對(duì)應(yīng)的字體, 比如雖然我們說 roboto 沒有 600 ,但是如果是 roboto mono 字體集是有 600 的 fontweight ,甚至還有 600 斜體: 。

另外注意這是 Flutter 而不是原生,具體實(shí)現(xiàn)調(diào)用是在 Engine 的 paragraph_skia.cc 和 paragraph_builder_skia.cc 下對(duì)應(yīng)的 setFontFamilies 相關(guān)邏輯,當(dāng)然默認(rèn)字體庫指定在 typography.dart 下就看到,例如 'Roboto' 、 '.SF UI Display' 、 '.SF UI Text' 、 '.AppleSystemUIFont' 、 'Segoe UI' :

另外如果你在 Mac 的 Web 上使用 Flutter Web,可以看到指定的是 .AppleSystemUIFont ,而對(duì)于 .AppleSystemUIFont 它其實(shí)不算是一種字體,而是蘋果上字體的一種集合別稱:

[圖片上傳失敗...(image-40f5ce-1648368234737)]

還有,如果你去看 Flutter 默認(rèn)自帶的 cupertino/context_menu_action.dart ,就可以看到一個(gè)有趣的情況:

當(dāng)然,前面我們說了那么多,主要是針對(duì)英文的情況下,而在中文下還是有差異的 ,之前的文章也介紹過:

例如,在蘋果上的簡(jiǎn)體中文其實(shí)會(huì)是 PingFang SC 字體,對(duì)應(yīng)還有 PingFang TC 和 PingFang HK 的繁體集,而關(guān)于這個(gè)問題在 Flutter 上之前還出現(xiàn)過比較有意思的 bug :

當(dāng)然后續(xù)的 #16709 修復(fù)了這個(gè)問題 ,而在以前的文章我也講過,當(dāng)時(shí)我遇到了 “Flutter 在 iOS 系統(tǒng)上,系統(tǒng)語言是韓文時(shí),在和中文一起出現(xiàn)會(huì)導(dǎo)致字體顯示異常" 的問題 :

解決方法也很簡(jiǎn)單,就是給 fontFamilyFallback 配置上 ["PingFang SC" , "Heiti SC"] 就可以了,這是因?yàn)轫n文在蘋果手機(jī)上使用的應(yīng)該是 Apple SD Gothic Neo 這樣的超集字體庫,【廣】這個(gè)字符在這個(gè)字體集上是不存在的,所以就變成了中文的【廣】;

所以可以看到,字體相關(guān)是一個(gè)平時(shí)很少會(huì)深入接觸的東西,但是一旦涉及多語言和繪制,就很容易碰到問題的領(lǐng)域 。


網(wǎng)站標(biāo)題:flutter字體切換,flutter文本編輯器
文章源于:http://weahome.cn/article/dsddhjp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部