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

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

flutter每天清空,flutter刷新

Android Studio Emulator依然顯示刪除的device

如下,

創(chuàng)新互聯(lián)公司長期為成百上千客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為株洲企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站制作,株洲網(wǎng)站改版等技術服務。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

當你添加完所有環(huán)境變量,或者多次卸掉重裝android studio后,再次插入手機,或者是開啟模擬器的時候,vscode或android studio都顯示no devices的時候,以下簡單的解決方法或許能幫到你。

1、先檢查自己以往是否有安裝adb。在cmd中查看adb的版本。輸入:adb version。

2、如果有安裝的話,建議在C:WindowsSystem和C:WindowsSystem32刪除adb.exe, AdbWinApi.dll和AdbWinUsbApi.dll三個文件即可。

3、你在android studio經(jīng)過了一頓操作,例如安裝了一系列的sdk文件,還有創(chuàng)建了模擬器之后,也執(zhí)行了第二步,環(huán)境變量也設置好了,在cmd中輸入adb version。

這就代表了你已經(jīng)徹底清除了舊版本的adb,用的是目前最新版本的adb。這個也會隨著flutter upgrade的更新而更新。我今天更新了flutter版本,adb應該是最新的。

4、在管理員模式下打開cmd,輸入adb devices,會看見當前已經(jīng)打開了的安卓設備。

5、輸入adb connect 你安卓設備的名字 。我的安卓設備名字是4ad32643。所以我就輸入adb connect 4ad32543。

failed那一行不用管,這時候看回vscode或者是android studio,即會出現(xiàn)設備,可進行flutter的正常調(diào)試。

Flutter 文件路徑

path_provider是flutter提供的一個獲取應用存儲路徑的插件,它封裝了統(tǒng)一的api來獲取Android和ios兩個平臺的應用存儲路徑,提供的api如下:

getTemporaryDirectory():獲取應用臨時文件夾,該文件夾用來保存應用的緩存,可以隨時刪除用于清緩存,對應于Android的getCacheDir()和ios的NSTemporaryDirectory();

getApplicationDocumentsDirectory():獲取應用安裝路徑,在應用被卸載的時候刪除,對應Android的AppDate目錄和iOS的NSDocumentDirectory目錄;

getExternalStorageDirectory():獲取存儲卡目錄,僅支持Android;

我們通過File和Directory來創(chuàng)建文件和文件夾時首先要獲取到應用的相關路徑,不然會報錯;

File對象和Directory對象封裝在dart:io中,使用時需要先引入該庫:

Directory對象提供listSync()方法獲取文件夾里的內(nèi)容,該方法返回一個數(shù)組;

文件和文件夾都通過delete刪除,delete異步,deleteSync同步;如果一個文件夾是非空的刪除會報錯,刪除非空文件夾需要先清空該文件夾:

flutter對json序列化需要引入 dart:convert 庫:

通過jsonEncode/jsonDecode來轉(zhuǎn)換json對象:

// 將test目錄下的info.json復制到test2目錄下的info2.json中

引入包archive包:

壓縮:

壓縮前使用ZipFileEncoder先聲明處理壓縮的對象,調(diào)用該對象的zipDirectory方法壓縮文件,該方法接受兩個參數(shù),第一個是要壓縮文件/文件夾的路徑,第二個是壓縮包的保存路徑;

解壓:

Flutter的setState(狀態(tài)刷新)

Flutter有兩個常用的狀態(tài)類:

標記為dirty,執(zhí)行的markNeedsBuild,定義在Element類中:

當前Element節(jié)點被標記為dirty,同時調(diào)用owner的scheduleBuildFor方法:

將element元素添加到全局的“臟”鏈表里。

BuildOwner用來管理哪些需要更新的Widget。這個owner最開始被初始化的地方在WidgetsBinding的initInstances方法中,隨后初始化了onBuildScheduled方法,對應執(zhí)行的是_handleBuildScheduled,定義在WidgetsBinding類中:

ensureVisualUpdate 方法定義在SchedulerBinding類中:

在提交下一幀繪制的時候會調(diào)用到scheduleFrame方法,提交給引擎繪制,看看scheduleFrame方法,也定義在SchedulerBinding類中:

提交給引擎繪制之后,會收到onDrawFrame的回調(diào),最終執(zhí)行到_handleDrawFrame方法中,對應的是handleDrawFrame方法,定義在SchedulerBinding類中:

在RendererBinding的initInstances方法中添加了一個回調(diào)到這個List中,對應的是RenderBinding的drawFrame方法,對應的節(jié)點進行繪制渲染操作。

WidgetsBinding中的drawFrame方法:

看看這里的buildScope方法,定義在BuildOwner方法中。在上面 scheduleBuildFor 方法介紹中有提到:"scheduleBuildFor 是把一個 element 添加到 _dirtyElements 鏈表,以便當[WidgetsBinding.drawFrame]中調(diào)用 buildScope 的時候能夠重構(gòu) element。onBuildScheduled()是一個 BuildOwner 的回調(diào)"。在 drawFrame 中調(diào)用 buildOwner.buildScope(renderViewElement)更新 elements。

_dirtyElements列表在遍歷的過程中執(zhí)行rebuild方法,此時將所有標記為dirty的Element節(jié)點依次執(zhí)行rebuild,preformRebuild,build,updateChild,update方法,執(zhí)行界面更新。完成build,update操作完成之后,后續(xù)會將需要繪制的RenderObject添加到需要layout的列表中,等待繪制渲染。所有繪制完成之后將_dirtyElments列表清空,_inDirtyList標記位置為false。

提交給引擎繪制渲染

看看super.drawFrame(),這里就執(zhí)行到了RendererBinding類中,定義如下:

這里就是將最終需要繪制渲染的畫面提交給引擎的地方了,繪制完成之后就在界面顯示更新后的視圖了。


新聞標題:flutter每天清空,flutter刷新
分享URL:http://weahome.cn/article/hoddcj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部