1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      flutter擴(kuò)展,簡書 flutter

      Flutter_圖片分辨率適配及批量拓展使用

      flutter開發(fā)中,圖片的引用是必不可少的,所以為了提高效率和精準(zhǔn)度,我們需要對不同分辨率的手機(jī)使用相對應(yīng)的切圖圖片,本章介紹如何進(jìn)行 圖片分辨率適配 和 圖片批量拓展處理 。

      創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、郾城網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為郾城等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

      flutter中會首先根據(jù)系統(tǒng)的devicePixelRatio(每一個(gè)邏輯像素包含多少個(gè)原始像素,可以通過MediaQueryData.devicePixelRatio來得到)來找對應(yīng)倍數(shù)的文件夾下的圖片,如果沒有對應(yīng)倍數(shù),找最接近的。

      所以在flutter項(xiàng)目中,我們需要構(gòu)建對應(yīng)的倍數(shù)像素文件夾

      之后再pubspec.yaml中,配置assets文件后就可以使用了(如使用"assets/images/jay.png",會自動適配該像素下最接近的jay圖片)。

      使用flutter-img-sync插件批量化處理,具體操作如下

      目前還不能處理gif、webp等格式的圖片,而且如果和上邊介紹的不同像素比適配方案一起使用的話,由于進(jìn)行了精準(zhǔn)定位,所以指定圖片后就不能進(jìn)行像素適配,這是目前還存在的較大問題,所以目前兩者方案只能暫時(shí)取一使用。

      Flutter開發(fā)--如何布局?

      相對于iOS開發(fā),F(xiàn)lutter的布局更具有靈活性,每個(gè)頁面設(shè)計(jì)都不一樣,相同頁面可選擇的布局方式也不一樣,如果單純的說應(yīng)該如何去布局,我覺得不現(xiàn)實(shí),大家可以參考下 Flutter官方的布局教程 。接下來,筆者,通過項(xiàng)目中的一個(gè)頁面,來一步一步的拆解布局的流程。整個(gè)過程,基本上按照拆解、組件封裝、具體布局這三步來的。

      根據(jù)設(shè)計(jì)圖,可以看出整體可以分成兩部分,上面一部分是系統(tǒng)介紹模塊,下面一部分是真正的登錄內(nèi)容,因?yàn)樯婕暗蒋B加,因此考慮用Stack;

      系統(tǒng)介紹模塊部分:整體也是涉及到疊加,考慮用Stack,分為四部分。最底部漸變色背景用一個(gè)contanier,無須指定位置,全視圖擴(kuò)展;載放logo圖標(biāo)在上一層,用Image。最后兩個(gè)Text同級放在最上層。Image,Text各用Positioned包裹去指定位置。

      登錄內(nèi)容模塊是最外層是一個(gè)Contanier容器,去控制背景色和圓角。然后是一個(gè)Column元素,逐行排列。

      第一行為Image,

      第二行為Text,

      第三行可以看成一個(gè)小Column,分兩塊進(jìn)行布局

      第四行可以看成一個(gè)小Column,分兩塊進(jìn)行布局

      第五行可以看作一個(gè)TextButton,

      第六行可以看作一個(gè)Row,分三塊進(jìn)行布局

      通過上面這樣一步一步的分析后,基本上對大致的布局有了一個(gè)了解,最外層的控件大致選對(只要能實(shí)現(xiàn)的話,就是復(fù)雜度以及效率的問題),然后一步一步的拆解每一行的元素,如果有重復(fù)的或者覺得可以封裝出來的部分,則進(jìn)行下一步。

      每一行的拆解,大致也是按照這個(gè)思路來進(jìn)行,因此筆者在這里就不做講解了。

      在做到第三第四行的時(shí)候,發(fā)現(xiàn)這兩個(gè)很相似,而且設(shè)計(jì)到一些交互邏輯,筆者就想對第三第四行的這種展示進(jìn)行封裝,覺得今后的布局可能會用到,因此在這一步,可以先把這一塊兒抽離出一個(gè)控件。利用TextField來實(shí)現(xiàn)這種輸入操作,具體的實(shí)現(xiàn)筆者不再詳細(xì)的描述了。

      經(jīng)過這一步,整體的規(guī)劃設(shè)計(jì)圖已經(jīng)有了,各個(gè)組件也都有了,接下來的工作就是組裝了。

      具體布局設(shè)計(jì)到一些細(xì)節(jié)的地方,例如整體Column的居中對齊(crossAxisAlignment)、間隔(Padding或Container包裹,筆者更喜歡用SizedBox占位)、居左居右居中(Align)、點(diǎn)擊事件(GestureDetector)以及圓角(BorderRadius)等一些特殊情況。

      像第六行row是放在底部的,就可以在第六行前面增加一個(gè)Spacer()去填充空白區(qū)域。

      對文字顏色大小等,可以用TextStyle直接設(shè)置。

      對于輸入框的刪除按鈕,可以用Offstage這種Flutter特有的控制顯示隱藏的控件。

      Flutter實(shí)踐--屏幕適配

      做移動端開發(fā)的小伙伴都知道,針對不同型號和尺寸的手機(jī)要進(jìn)行頁面適配,且Android和iOS適配方案各不相同,那flutter端如何進(jìn)行適配呢?以下為近期flutter開發(fā)過程中關(guān)于適配的一些學(xué)習(xí)和記錄~~~~

      說到flutter屏幕適配,就不得不提到插件 flutter_screenutil ,提到flutter_screenutil就不得不說以下幾點(diǎn)????

      默認(rèn)寬1080px

      默認(rèn)高1920px

      allowFontScaling為false,即不跟隨系統(tǒng)字體大小設(shè)置變化

      初始化單位為px

      需要把context傳進(jìn)去,因?yàn)閮?nèi)部是通過 MediaQuery 來獲取屏幕尺寸等相關(guān)信息的

      無需再傳context,因?yàn)閮?nèi)部是通過單例 window 來獲取屏幕尺寸等相關(guān)信息的

      作為iOS開發(fā),之前都是以pt為參照進(jìn)行比例適配的,且架構(gòu)組已經(jīng)定義了一套適配相關(guān)常量,傳px進(jìn)去不太方便,所以需要對flutter_screenutil進(jìn)行擴(kuò)展

      公司設(shè)計(jì)圖是以iPhone X的尺寸提供的即物理設(shè)備尺寸為375x812,像素比例為750x1624,像素密度比為2

      初始化仍用px來初始化

      dart sdk 2.7正式支持 extension-method ,即為已有類擴(kuò)展方法,從 flutter_screenutil 這種 540.w 寫法點(diǎn)進(jìn)去,我們可以看到

      flutter_screenutil為num類擴(kuò)展了一系列簡寫方法,那我們當(dāng)然可以按照它這種方式進(jìn)行擴(kuò)展

      網(wǎng)上提供的解決方案:

      第一步:修改 pubspec.yaml

      第二步:執(zhí)行 flutter pub get

      第三步:重啟 AndroidStudio

      解決方案:去掉const即可

      UI設(shè)計(jì)中px、pt、ppi、dpi、dp、sp之間的關(guān)系

      Dart/Flutter - 擴(kuò)展方法(ExtensionMethod)

      Flutter 擴(kuò)展NestedScrollView (三)下拉刷新的解決

      但是在使用官方的下拉刷新 RefreshIndicator 發(fā)現(xiàn)沒法使用。

      默默打開了源碼,我們再來看一看。

      首先,我調(diào)試到這個(gè),發(fā)現(xiàn)notification.depth不為0,其實(shí)也好理解,因?yàn)镹estedScrollView里面有很多能滾動的東西。默認(rèn)的RefreshIndicator要求的是必須是第一層的它才其效果。

      那么我改成,再試試呢?

      在_handleScrollNotification方法中,我們可以看到會有很多ScrollNotification進(jìn)來,不同的,當(dāng)你滑動在一個(gè)不能滾動的list里面的時(shí)候,獲取的viewportDimension是為0.。這會覆蓋掉之前有viewportDimension的值。

      所以我做了以下改動

      對于NestedScrollView 來說。我們只需要關(guān)注最大能滾動viewportDimension,用這個(gè)來驅(qū)動整個(gè)下拉刷新.

      用法跟官方一致

      最后放上 Github extended_nested_scroll_view ,如果你有更好的方式解決這個(gè)問題或者有什么不明白的地方,都請告訴我,由衷感謝。


      標(biāo)題名稱:flutter擴(kuò)展,簡書 flutter
      網(wǎng)站URL:http://www.ef60e0e.cn/article/dsdieop.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        阿勒泰市| 毕节市| 东安县| 思茅市| 朝阳区| 昌江| 阿拉善盟| 清徐县| 定结县| 龙川县| 高州市| 阿拉善右旗| 五莲县| 前郭尔| 太仆寺旗| 湖州市| 东乌珠穆沁旗| 信丰县| 漳平市| 泸溪县| 兴文县| 来凤县| 阿荣旗| 嵊州市| 东丰县| 灵丘县| 中牟县| 封开县| 泉州市| 镇江市| 临泽县| 乳山市| 平远县| 威信县| 深水埗区| 通许县| 新乐市| 兴宁市| 黎城县| 阿巴嘎旗| 腾冲县|