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

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

flutter拷貝文件,flutter打包命令

Flutter 之 文件操作(二十九)

Dart的 IO 庫(kù)包含了文件讀寫(xiě)的相關(guān)類(lèi),它屬于 Dart 語(yǔ)法標(biāo)準(zhǔn)的一部分,所以通過(guò) Dart IO 庫(kù),無(wú)論是 Dart VM 下的腳本還是 Flutter,都是通過(guò) Dart IO 庫(kù)來(lái)操作文件的,不過(guò)和 Dart VM 相比,F(xiàn)lutter 有一個(gè)重要差異是文件系統(tǒng)路徑不同,這是因?yàn)镈art VM 是運(yùn)行在 PC 或服務(wù)器操作系統(tǒng)下,而 Flutter 是運(yùn)行在移動(dòng)操作系統(tǒng)中,他們的文件系統(tǒng)會(huì)有一些差異。

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶(hù)真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶(hù)帶來(lái)驚喜。成都創(chuàng)新互聯(lián)公司推出永和免費(fèi)做網(wǎng)站回饋大家。

Android 和 iOS 的應(yīng)用存儲(chǔ)目錄不同, PathProvider 插件提供了一種平臺(tái)透明的方式來(lái)訪問(wèn)設(shè)備文件系統(tǒng)上的常用位置。該類(lèi)當(dāng)前支持訪問(wèn)兩個(gè)文件系統(tǒng)位置:

File代表一個(gè)整體的文件,他有三個(gè)構(gòu)造函數(shù),分別是:

文件讀取本身有兩種形式,一種是文本,一種是二進(jìn)制。

2.2.1 讀取文本內(nèi)容

如果是文本文件,F(xiàn)ile提供了readAsString、readAsLines、readAsStringSync、readAsLinesSync方法,讀取文本內(nèi)容

readAsString 一次性讀取所有文本

readAsLines 一行行的讀取文本

結(jié)果返回的是一個(gè)List,list中表示文件每行的內(nèi)容

readAsStringSync、readAsLinesSync同步讀取文本

2.2.2 讀取二進(jìn)制內(nèi)容

如果文件是二進(jìn)制,那么可以使用readAsBytes或者同步的方法readAsBytesSync:

dart中表示二進(jìn)制有一個(gè)專(zhuān)門(mén)的類(lèi)型叫做Uint8List,他實(shí)際上表示的是一個(gè)int的List。

上面提到的讀取方式,都是一次性讀取整個(gè)文件,缺點(diǎn)就是如果文件太大的話,可能造成內(nèi)存空間的壓力。

所以File為我們提供了另外一種讀取文件的方法,流的形式來(lái)讀取文件.

示例

dart提供了open和openSync兩個(gè)方法來(lái)進(jìn)行隨機(jī)文件讀寫(xiě):

寫(xiě)入和文件讀取一樣,可以一次性寫(xiě)入或者獲得一個(gè)寫(xiě)入句柄,然后再寫(xiě)入。

一次性寫(xiě)入的方法有四種,分別對(duì)應(yīng)字符串和二進(jìn)制

句柄形式可以調(diào)用openWrite方法,返回一個(gè)IOSink對(duì)象,然后通過(guò)這個(gè)對(duì)象進(jìn)行寫(xiě)入:

默認(rèn)情況下寫(xiě)入是會(huì)覆蓋整個(gè)文件的,但是可以通過(guò)下面的方式來(lái)更改寫(xiě)入模式:

雖然dart中所有的異常都是運(yùn)行時(shí)異常,但是和java一樣,要想手動(dòng)處理文件讀寫(xiě)中的異常,則可以使用try,catch:

我們還是以計(jì)數(shù)器為例,實(shí)現(xiàn)在應(yīng)用退出重啟后可以恢復(fù)點(diǎn)擊次數(shù)。 這里,我們使用文件來(lái)保存數(shù)據(jù):

1.引入PathProvider插件;在pubspec.yaml文件中添加如下聲明:

執(zhí)行 flutter pub get

2.實(shí)現(xiàn)如下

參考:

2021-12-23 flutter module源碼方式集成流程分析

官方文檔

將 Flutter module 集成到 iOS 項(xiàng)目

(1)這時(shí)候還沒(méi)有App.framework , podspec文件是有了

(2)有engine,F(xiàn)lutter.framework。

(3)有插件列表 podspec FlutterPluginRegistrant.podspec,這時(shí)沒(méi)有symlinks/plugins目錄軟鏈接

(4)導(dǎo)出當(dāng)前的環(huán)境變量 flutter_export_environment.sh

flutter-plugins-dependencies

執(zhí)行 podHelper.rb 腳本

做2件事情:

/Volumes/huc/opt/fvm/versions/2.2.0/packages/flutter_tools/bin/xcode_backend.sh build

多了.symlinks 和App.framework,重新拷貝了Flutter.xcframework

Pods-HouseCommercialCube-frameworks.sh

執(zhí)行 xcode_backend.sh

做3件事情:

AppFrameworkInfo.plist

assets_path 這個(gè)后面也沒(méi)有人用??!

放到.ios下面

.ios/Flutter/engine/Flutter.xcframework

編譯前, 把這個(gè)下面添加一個(gè)空文件, engine被覆蓋了,那么那個(gè)空文件就沒(méi)了?

對(duì)比了一下大小。 release

debug 版本的Flutter.xcframework 255M

ios-release 1.03 GB

一開(kāi)始是1.03G, run之后, 變成了255M

說(shuō)明確實(shí)拷貝到這里了

.ios下面App.framework 沒(méi)有變

App.framework 61Mb

Flutter.framework 35Mb

"${PODS_ROOT}/Target Support Files/Pods-HouseCommercialCube/Pods-HouseCommercialCube-frameworks.sh"

Flutter 文件路徑

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

getTemporaryDirectory():獲取應(yīng)用臨時(shí)文件夾,該文件夾用來(lái)保存應(yīng)用的緩存,可以隨時(shí)刪除用于清緩存,對(duì)應(yīng)于Android的getCacheDir()和ios的NSTemporaryDirectory();

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

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

我們通過(guò)File和Directory來(lái)創(chuàng)建文件和文件夾時(shí)首先要獲取到應(yīng)用的相關(guān)路徑,不然會(huì)報(bào)錯(cuò);

File對(duì)象和Directory對(duì)象封裝在dart:io中,使用時(shí)需要先引入該庫(kù):

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

文件和文件夾都通過(guò)delete刪除,delete異步,deleteSync同步;如果一個(gè)文件夾是非空的刪除會(huì)報(bào)錯(cuò),刪除非空文件夾需要先清空該文件夾:

flutter對(duì)json序列化需要引入 dart:convert 庫(kù):

通過(guò)jsonEncode/jsonDecode來(lái)轉(zhuǎn)換json對(duì)象:

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

引入包archive包:

壓縮:

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

解壓:

Flutter中淺拷貝和深拷貝對(duì)象方法

當(dāng)一個(gè)對(duì)象拷貝另一個(gè)對(duì)象的數(shù)據(jù)的時(shí)候,只要一個(gè)對(duì)象的數(shù)據(jù)發(fā)生改變另一個(gè)對(duì)象的數(shù)據(jù)也會(huì)發(fā)生改變,因?yàn)闇\拷貝拷貝的是引用的地址

(所以必須在對(duì)象是多層才能拷貝,單層拷貝的是數(shù)值,多層說(shuō)明里面套著對(duì)象,所以拷貝的是地址。)

當(dāng)我們需要對(duì)數(shù)據(jù)進(jìn)行修改等操作,同步改變?cè)磾?shù)據(jù)

當(dāng)一個(gè)對(duì)象拷貝另一個(gè)對(duì)象的數(shù)據(jù)的時(shí)候,其中一個(gè)對(duì)象的數(shù)據(jù)發(fā)生變化不會(huì)影響另一個(gè)對(duì)象的數(shù)據(jù),因?yàn)樯羁钾惪截惖氖菍?duì)象的數(shù)據(jù)而不是地址

對(duì)于一些復(fù)雜的數(shù)據(jù)類(lèi)型,當(dāng)我們需要對(duì)數(shù)據(jù)進(jìn)行修改等操作,但是不改變?cè)磾?shù)據(jù)


分享標(biāo)題:flutter拷貝文件,flutter打包命令
文章源于:http://weahome.cn/article/hoshdi.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部