app開發(fā)語言flutter(app使用什么語言開發(fā))
本篇文章給大家談?wù)刟pp開發(fā)語言flutter,以及app使用什么語言開發(fā)對應(yīng)的知識點(diǎn),希望對各位有所幫助,不要忘了收藏本站喔。
為什么Flutter開發(fā)APP性能最接近原生,前端程序員請關(guān)注
Flutter是谷歌公司推出的跨終端的開發(fā)框架,支持Android、iOS和WEB終端。1.0版在2018年12月5日發(fā)布,目前的最新版本是1.5,它采用的開發(fā)語言是Dart,Dart也是谷歌開發(fā)的計算機(jī)編程語言,語法類似C,是編譯型語言:
hello world例子,打印字符串“Hello World!”:
1、沒有橋接層
React Native、Weex等技術(shù)都是跨終端的框架,然而性能跟原生App存在很大差距。這是由于它們的工作原理決定的:
React Native、Weex等技術(shù)多了一個橋接層,所以界面渲染會慢一些,由于UI渲染非常頻繁,想要不卡頓,基本上比較難,性能和用戶體驗(yàn)跟原生代碼有差距。而這恰恰是Flutter的優(yōu)勢所在:
Dart可以被編譯成不同平臺的本地代碼,讓Flutter不通過橋接層直接跟平臺通信,自然性能會快一些。
2、編譯執(zhí)行
JavaScript是解釋執(zhí)行的,Dart是編譯執(zhí)行的,性能誰好一目了然。
3、Flutter Engine虛擬機(jī)
Flutter是依靠Flutter Engine虛擬機(jī)在iOS和Android上運(yùn)行的,F(xiàn)lutter Engine使用C/C++編寫,開發(fā)人員通過Flutter框架直接和API在內(nèi)部進(jìn)行交互,所以具有輸入低延遲和UI渲染高幀速率的特點(diǎn)。除了這特點(diǎn)之外,F(xiàn)lutter還提供了自己的小部件,F(xiàn)lutter小部件是使用從React獲取靈感的現(xiàn)代框架構(gòu)建的。 中心思想是您使用小部件構(gòu)建UI。
窗口小部件根據(jù)其當(dāng)前配置和狀態(tài)描述了它們的視圖。 當(dāng)窗口小部件的狀態(tài)發(fā)生更改時,窗口小部件會重建其描述,框架將根據(jù)前面的描述進(jìn)行區(qū)分,以確定底層呈現(xiàn)樹從一個狀態(tài)轉(zhuǎn)換到下一個狀態(tài)所需的最小更改??梢灾苯釉贠S平臺提供的畫布上進(jìn)行描繪,也就是一些核心類庫直接放到虛擬機(jī)里面,調(diào)用起來更快。
從它的系統(tǒng)結(jié)構(gòu)可以看出,類似安卓的ART(Android Run Time)虛擬機(jī),同樣采用AOT(Ahead of TIme)技術(shù),會在APP安裝時就編譯成機(jī)器語言,不再解釋執(zhí)行,從而優(yōu)化了APP運(yùn)行的性能。
4、自帶渲染引擎
Flutter使用谷歌自己的Skia渲染引擎,而Android系統(tǒng)自帶Skia引擎,iOS平臺上Flutter也會把Skia引擎打包到APP中,從而實(shí)現(xiàn)了高效渲染。而React Native通過橋接層訪問原生UI,操作頻繁就容易出性能問題。
綜合所述,F(xiàn)lutter 是性能最接近原生代碼 的一種開發(fā)框架,未來也會是構(gòu)建谷歌Fuchsia應(yīng)用的主要方式,前途不可限量,唯一的問題就是需要學(xué)習(xí)一門新的語言:Dart,而有Java或者C#語言基礎(chǔ)的程序員會比較容易學(xué)習(xí)。
Flutter開發(fā)App和原生iOS開發(fā)App各有什么優(yōu)缺點(diǎn)?
自己寫flutter也有段時間了,這次來聊聊flutter開發(fā)App和原生iOS開發(fā)App各有什么優(yōu)缺點(diǎn).
不廢話,直奔主題??
目前編寫一款簡單的手機(jī)應(yīng)用APP一般用什么編程語言?
編寫手機(jī)App,用什么語言?
從簡單到復(fù)雜,可以分三級:
簡單方案:HTML5
其實(shí)就是把網(wǎng)頁封裝成App。編程語言就是網(wǎng)頁三件套:HTML+CSS+Javascript
有多種工具和框架,如Cordova, uni等等。
這種方式實(shí)現(xiàn)“App”最容易,且跨平臺,對于iOS和Android做一套就行了。代價是功能弱,性能低,換句話說就是“卡”。
中等方案:原生跨平臺框架
這類方案在iOS和Android之上自行實(shí)現(xiàn)一套原生框架。通用的Flutter, ReactNative都是流行的原生跨平臺框架。適用于 游戲 的Cocos2D,Corona SDK也可以算在這一級里。
這類方案實(shí)現(xiàn)App難度中等,因?yàn)榭缙脚_,一次開發(fā),iOS和Android都能運(yùn)行。功能和性能也是中等,比不上原生App,但比HTML5的又好很多。
復(fù)雜方案:原生開發(fā)
直接在iOS和Android上各自開發(fā)一套原生App。
iOS可以使用Objective C或Swift。
Android可以使用Java或Kotlin。
還是來一個圖表吧,雖然簡單,卻很明了:
推薦用Flutter,簡單。
以前自己用android原生寫過7天酒店簽到程序,不過當(dāng)時的安卓還是比較難寫的,不像現(xiàn)在越來越容易上手。
Flutter
Flutter是一個由谷歌開發(fā)的開源移動應(yīng)用軟件開發(fā)工具包,用于為Android、iOS、 Windows、Mac、Linux、Google Fuchsia開發(fā)應(yīng)用。
Flutter應(yīng)用是使用Dart語言編寫的,雖然是新的一種語言,但是難度不算大,上網(wǎng)搜下相關(guān)教程學(xué)習(xí)下,應(yīng)該就能很快上手。
Flutter效果
這里是我上個月仿照教程弄的一個簡單APP,效果圖如下:
點(diǎn)擊"Next"就切換下一張,點(diǎn)擊"Pre"就切換前一張,點(diǎn)擊“Reset”就全部滑落下來。
我女兒最喜歡中間的Reset效果,哈哈。
希望這個答案能幫到你。
現(xiàn)在Flutter正式版已經(jīng)出來了,原生性能,安卓iOS多平臺支持,谷歌大廠背書,大家可以比較放心的學(xué)習(xí)。編程語言用的是Dart,可以看做是加了語法糖版本的Java,學(xué)習(xí)起來也比較容易,如果想做手機(jī)app,可以考慮使用它。
如果只是自己做著玩的話推薦用H5開發(fā),開發(fā)工具HBuilder或者HBuilderX。
先科普下什么是IOS和Android吧。
IOS只是操作系統(tǒng)而已,是蘋果的操作系統(tǒng)。
開發(fā)IOS上運(yùn)行的APP的話,現(xiàn)在流行的語言是Object-C和Swift。
Android也是操作系統(tǒng),是谷歌基于Linux內(nèi)核開發(fā)出來的手機(jī)操作系統(tǒng)。
開發(fā)Android上運(yùn)行的APP的話,現(xiàn)在流行的語言我覺得仍然還是JAVA。
如果想要真的做一款A(yù)PP的話,不僅僅會一門語言就夠了,涉及的東西比較多,如下是我給你的學(xué)習(xí)推薦路線。
學(xué)習(xí)路線:
1:先學(xué)習(xí)js,然后學(xué)習(xí)下html 、css。
學(xué)習(xí)這些可以上菜鳥教程或者W3School網(wǎng)站學(xué)習(xí)。
開發(fā)工具使用vscode或者Notepad++都可以的。
2:了解Mui常用組件(官網(wǎng):),
熟悉常用API(官網(wǎng):)。
3:服務(wù)端的開發(fā),要么用java開發(fā),要么用.net webapi開發(fā),推薦理由,java目前是主流,.net webapi簡單容易。
java 開發(fā)工具IntelliJ IDEA,.net 開發(fā)工具 vs。
4:數(shù)據(jù)存儲使用mysql。
補(bǔ)充說明:如果是想做專業(yè)開發(fā)APP的話還是建議用java開發(fā)客戶端,ios APP則用swift開發(fā)。
當(dāng)然現(xiàn)在為了一套代碼多個平臺,使用H5開發(fā)專業(yè)APP的也有。
會了就可以正式擼代碼實(shí)現(xiàn)自己簡單的APP了。
回答完畢,謝謝。我是只說代碼的大餅。
那當(dāng)然首選是h5套殼了。關(guān)于語言方面,我建議還是用PHP吧。隨著進(jìn)一步學(xué)習(xí),可以學(xué)習(xí)uinapp一鍵多端。H5、小程序、App、小程序支持多個平臺上架、微信抖音支付寶百度,希望可以幫助你
目前有三種app開發(fā)方式:原生app、混合app、webapp。
原生app:安卓需要java語言,ios需要 objec t-c,wp需要的.net語言。這種app用戶體驗(yàn)最好,性能也是最好的,開發(fā)成本高,開發(fā)周期長,一款app需要開發(fā)多個語言版本;
混合app:需要h5,javascript,了解每個混合框架,比如appcan、hbulider、phonegap等等,以及封裝的中間件。這種開發(fā)方式的用戶體驗(yàn)、性能沒有原生的好,但是他的開發(fā)周期短,開發(fā)成本低,對開發(fā)人員技能掌握比較高,開發(fā)一套程序可以兼容到多個設(shè)備上;
webapp:需要h5、javascript語言,不能調(diào)用底層設(shè)備,用戶體驗(yàn)效果次之,開發(fā)簡單,開發(fā)成本低,開發(fā)周期短,可以兼容多個設(shè)備。
綜上所述三種開發(fā)各有優(yōu)缺點(diǎn),要根據(jù)具體的項(xiàng)目需求來選擇適合自己的開發(fā)語言和開發(fā)場景。
uniapp了解下,多端應(yīng)用。app的話要考慮安卓和蘋果,但學(xué)了二種學(xué)習(xí)成本比較高。用uniapp就解決了。
現(xiàn)在中小型企業(yè)都在逐漸采用跨平臺開發(fā)的模式 效率高 成本低 作為個人更是開發(fā)不二的選擇 你問的iOS和安卓是原生開發(fā) 需要不同的開發(fā)語言和框架 學(xué)習(xí)成本也很高 既然你說你是小白 如果采用原生開發(fā) 可能得大概花一年半載才能開始上手
采用跨平臺開發(fā) 只需要學(xué)習(xí)一下html css JavaScript 然后選擇跨平臺開發(fā)框架 比如react flutter uniapp 都可以 跨平臺就是指你這一套代碼編寫的app可以到不同平臺運(yùn)行 比如iOS安卓都OK 但其實(shí)很多還可以編譯到各類小程序平臺運(yùn)行 所以很方便
我這里推薦uniapp 一個基于vue的跨端開發(fā)框架 我自己也用這個開發(fā)了很多項(xiàng)目 確實(shí)很快 也提供了原生渲染能力 不做 游戲 等軟件 基本沒啥問題 社區(qū)插件市場也很熱鬧 基本有問題可以很快解決 希望可以幫到你。
按照開發(fā)方式可分為原生開發(fā)、混合開發(fā)、webapp開發(fā),不同的開發(fā)方式學(xué)習(xí)的編程語言不一樣,下面我們來一個一個分析一下:
一、原生開發(fā)
原生開發(fā)的編程語言主要為針對IOS運(yùn)行環(huán)境的為編程語言為Swift或Object c,安卓環(huán)境為Java或Kotlin,WP環(huán)境為NET。原生開發(fā)的運(yùn)行效率最高,用戶體驗(yàn)最好,但是需要學(xué)習(xí)不同平臺的編程語言,學(xué)習(xí)門檻較高。
二、混合開發(fā)(偽原生開發(fā))
混合開發(fā)技術(shù)主要采用一套特別的渲染引擎來渲染UI界面和交互,按照渲染引擎可分為html與dart,其編程語言主要是Javascript或Typescript、Dart。
目前基于html渲染的開發(fā)框架有react native、weex、uniapp,基于dart的開發(fā)框架只有flutter。
混合開發(fā)由于調(diào)用了原生的控件來渲染UI,所以加載和體驗(yàn)與原生差不多,學(xué)習(xí)成本比較低,只要會js,選擇一個框架開發(fā)就行了,或者學(xué)習(xí)dart語言,進(jìn)行flutter開發(fā)。
三、webapp開發(fā)
webapp開發(fā)主要利用原生環(huán)境中的瀏覽器控件來裝載服務(wù)器上的html頁面,實(shí)際這個app就是一個自定義的瀏覽器app,所以只要會html,就會開發(fā)webapp,由于app內(nèi)部加載的是遠(yuǎn)程的網(wǎng)頁,所以加載速度和體驗(yàn)最差。
以上是我個人的總結(jié),有不對的歡迎指出,謝謝。
本人用c#,除了單片機(jī)用c,cad CATIA,多媒體主要Adobe,它干完所有,不需要性能的視圖混合dom代碼。
app是如何制作的,APP如何開發(fā)?
手機(jī)APP制作流程:無需技術(shù),教你制作一個自己的手機(jī)APP
一款手機(jī)APP的制作,說復(fù)雜非常復(fù)雜,涉及到多個領(lǐng)域的研發(fā),稍復(fù)雜一點(diǎn)的個人研發(fā)基本上搞不定,但是,也有非常簡單的手機(jī)APP一站式制作運(yùn)營方法。
隨著移動互聯(lián)網(wǎng)基層開開發(fā)技術(shù)的發(fā)展,無需編程技術(shù),也可以在應(yīng)用公園制作手機(jī)。這里就以應(yīng)用公園為例,教您熟悉手機(jī)APP制作流程,手把手教你制作一款自己心儀的手機(jī)APP。
第一步:了解自己想要制作一款怎么的手機(jī)APP。是軟硬件結(jié)合? 游戲 類?商城類?新聞資訊類?互動類?聊天類?還是團(tuán)購類、同城服務(wù)類?送餐類?企業(yè)展示類?
每一個類別的APP開發(fā)差異非常大,主要就是不同類型所需要的功能支持。對自己想要做的APP有個大致的了解,但是這一步很多人都沒搞清楚,大部分人都存在一個大概模糊的創(chuàng)意、想法階段。
第二步:了解自己想要做的APP的基礎(chǔ)功能,劃分板塊。
對基礎(chǔ)功能的了解、板塊的分類,上手最快的方法就是:查看市場上類似的APP進(jìn)行借鑒。
第三步:界面及交互的設(shè)計
界面及交互的設(shè)計,可以直接使用“墨刀”。可以先設(shè)計一個大概,后期不斷豐富。
第四步:APP功能的開發(fā)制作
APP功能的開發(fā)直接使用應(yīng)用公園就可以了。應(yīng)用公園把市場上常見的APP功能進(jìn)行拆分組合,你不需要懂任何編程技術(shù),只需喲安把需要的功能挑選出,組合搭配一個,就能迅速組建出一個手機(jī)APP。
手機(jī)APP制作具體流程:
1、打開應(yīng)用公園的官網(wǎng),點(diǎn)擊“開始制作”,注冊登錄;
2、應(yīng)用公園為在線APP制作平臺,所以不需要下載任何東西,直接進(jìn)入制作頁面就可以;
3、應(yīng)用公園目前有兩種模式:
(1)主題模式:應(yīng)用公園平臺上,已經(jīng)很多已經(jīng)制作完善的手機(jī)APP軟件,可以直接當(dāng)做模板使用,僅需要把里面的文字圖片進(jìn)行替換,就可以快速制作一款A(yù)PP。
(2)自由模式:就像拼圖一樣,把需要的功能自由組合搭配一下,就可以創(chuàng)造一款獨(dú)一無二的手機(jī)APP。
每一個功能控件的具體功能,都通過后臺自動配置。
4、手機(jī)APP打包
制作完善后,在應(yīng)用公園平臺直接點(diǎn)擊制作完成,就會自動打包成手機(jī)安裝程序。
5、應(yīng)用發(fā)布上架
在應(yīng)用公園平臺直接申請應(yīng)用發(fā)布,通過聯(lián)網(wǎng)后,就可以聯(lián)網(wǎng)使用了。
6、下載管理、運(yùn)營
應(yīng)用公園提供運(yùn)營管理后臺、下載站點(diǎn)、下載二維碼、手機(jī)管理助手等APP相關(guān)產(chǎn)品,一站式服務(wù),自動配置,免去多次開發(fā)成本,而且后期的功能、內(nèi)容的更新迭代自己既可以搞定,也不需要具體的編程技術(shù)。
自己制作app需要 編程知識 。但依靠第三方工具,三分鐘就可以做成專屬自己的APP。下面以簡易網(wǎng)為例演示:
簡網(wǎng)APP工廠三大特點(diǎn)
1、最低的成本:節(jié)省所有開發(fā)成本,以及僅幾分鐘的時間成本。
2、實(shí)用的功能:貼近傳統(tǒng)網(wǎng)站的內(nèi)容編輯與發(fā)布方式。
3、靈活的運(yùn)營:生成APP后,一個人也可以完美運(yùn)營。
先來了解一下APP工廠:三分鐘制作APP
使用簡網(wǎng)APP工廠之前,我曾經(jīng)通過其他類似的APP公司制作過兩三個不同版本的免費(fèi)APP,簡網(wǎng)的操作流程是制作門檻最低的一家。
不支持用戶名注冊,需要使用微博賬號
新浪與騰訊微博用戶數(shù)幾乎覆蓋全網(wǎng)網(wǎng)民數(shù),我們默認(rèn)用戶已經(jīng)擁有微博賬號,以便于進(jìn)行APP快速創(chuàng)建。
填寫APP信息:幾分鐘搞定
制作APP之前我們需要做一些準(zhǔn)備工作,比如我們要明確我們要做一個怎樣的APP,我們要為這個APP準(zhǔn)備一張1024x1024的ICON以及一張114x114的小圖標(biāo),另外還需要一張640x1136的開機(jī)圖。
從簡網(wǎng)APP工廠的首頁,經(jīng)過3次跳轉(zhuǎn),省略了網(wǎng)站注冊過程,通過模板挑選完成APP美工定案,所需的是APP的圖標(biāo)與應(yīng)用簡介。全過程幾分鐘足矣。
快捷實(shí)用的后臺采編系統(tǒng)
我們制作了一個新聞資訊類的APP軟件,同時我們擁有了一個功能齊全的后臺更新系統(tǒng)。利用后臺可以完全解決APP內(nèi)容更新問題,可以快速進(jìn)行新聞發(fā)布,包括文字、圖片、視頻、微博等形式,并且引入了完善的評論系統(tǒng)與社區(qū)系統(tǒng)。
筆者至今使用過三家大型網(wǎng)站的后臺系統(tǒng),由于種種 歷史 原因,這些后臺系統(tǒng)都存在或多或少的不合理設(shè)計,也許是因?yàn)槌休d的功能過多,數(shù)據(jù)架構(gòu)過于復(fù)雜,在新入職人員上手操作時,需要經(jīng)過長時間的熟悉過程。
簡網(wǎng)為我們制作的APP提供了統(tǒng)一的后臺模板,這個后臺的功能亮點(diǎn)在于不僅提供原始錄入,還提供也許是目前設(shè)計最為合理的網(wǎng)絡(luò)來源抓取功能。包括網(wǎng)頁、微博在內(nèi)的網(wǎng)絡(luò)內(nèi)容,都可以在大約1分鐘時間內(nèi)導(dǎo)入后臺中,并且實(shí)時呈現(xiàn)在用戶手機(jī)上的APP客戶端。
APP的生成時間約為三分鐘,APP容量只有3M,一般的寬帶都可以在1分鐘之內(nèi)下載好裝進(jìn)手機(jī)
我們得到了一個可安裝的APP軟件
同時獲得了一個功能完善的編輯后臺
快速的內(nèi)容抓取,讓后臺采編人員的數(shù)量可以降到最低,維持一個日更新量在100篇文章左右的APP客戶端,一個工作人員足矣。
內(nèi)容采編神器:發(fā)布到應(yīng)用
“發(fā)布到應(yīng)用”這個功能可以說是管理后臺提供的最強(qiáng)大的一個功能,經(jīng)過簡單的設(shè)置后,我們可以在幾秒鐘之內(nèi)把網(wǎng)絡(luò)內(nèi)容發(fā)布到我們的APP客戶端。
這樣一個媒體類APP就做好了。
很高興回答這個問題。
我是從事安卓App開發(fā)的,開發(fā)過很多App,那么App是如何制作的。
頁面設(shè)計
我們看到的app都一個個頁面,每個頁面功能不同。首先是產(chǎn)品經(jīng)理通過調(diào)研整理需求,然后將需求整理成頁面(可以使用墨刀等網(wǎng)頁制作),然后在交給UI人員進(jìn)行專業(yè)設(shè)計和美化,最后將設(shè)計圖打包給開發(fā)人員。
開發(fā)設(shè)計
拿安卓舉例,開發(fā)使用語言也分幾種,具體得根據(jù)實(shí)際情況來選擇。
1.原生開發(fā)
安卓一般使用java語言開發(fā),當(dāng)然現(xiàn)在也有kotlin語言進(jìn)行開發(fā)。如何開發(fā)就涉及到具體編程了,這里就不詳說了。簡單描述就是使用安卓提供的一系列控件來實(shí)現(xiàn)頁面,復(fù)雜點(diǎn)的頁面可以通過自定義控件來實(shí)現(xiàn)。
2.使用H5語言開發(fā)
使用H5開發(fā)的好處有很多,可以多端復(fù)用,比如瀏覽器端,ios端,當(dāng)然H5開發(fā)的體驗(yàn)是沒有原生好的。結(jié)合我做過的項(xiàng)目來說,一般是這個頁面需要分享出去的話,就用H5開發(fā)。
3.使用flutter開發(fā)
flutter是近年來谷歌推出的一款UI框架,
使用dart語言進(jìn)行開發(fā),支持跨平臺,weight渲染直接操作硬件層,體驗(yàn)可媲美原生。但是flutter技術(shù)比較新,生態(tài)還不完善,開發(fā)起來效率相對偏低
頁面數(shù)據(jù)填充
頁面開發(fā)出來只是空殼子,沒有數(shù)據(jù)填充,這時候就需要通過接口獲取數(shù)據(jù),然后解析數(shù)據(jù),顯示在頁面上。
到此,一個大概的App制作流程就結(jié)束了。
首先你要清楚自己想要什么樣的APP,是做哪一方便的?簡單的?還是復(fù)雜的
一下我就分為兩類進(jìn)行回答
一,簡單APP
必要崗位
ui設(shè)計師(至少一個)
主要負(fù)責(zé)APP頁面的搭建和交互的梳理
客戶端開發(fā)人員(至少一個)
目前市面上的APP開發(fā)方式多為混合開發(fā),如果做一個簡單的APP可以選擇webapp,這樣不但可以減少開發(fā)周期還可以控制開發(fā)成本
服務(wù)端開發(fā)(至少一個)
目前服務(wù)器語言很多php,java,
node.js
非必要崗位
首先 ,我說的非必要崗位不是說這些崗位不重要,而是說在為了減少成本的情況下,這樣崗位可以被別的崗位所替代
產(chǎn)品經(jīng)理
如果開發(fā)的App功能簡單,UI設(shè)計師就可以擔(dān)任這樣職責(zé)
測試工程師
當(dāng)然,在時間允許的情況下,開發(fā)人員也可以是測試人員
二,復(fù)雜APP
復(fù)雜app可以考慮純原生開發(fā),那么客戶端至少兩個人進(jìn)行開發(fā)(安卓,IOS),或者考慮混合開發(fā),及web前端+原生開發(fā)人員
必要崗位
ui設(shè)計師,安卓開發(fā)工程師,ios開發(fā)工程師,后端開發(fā)工程師,產(chǎn)品經(jīng)理,測試工程師,人員的多少可以根據(jù)項(xiàng)目的大小來定
三,必要成本
服務(wù)器 :這是開發(fā)app必須要的,也就是我們放代碼的地方
上架審核所需費(fèi)用 :比如IOS上架審核的花好幾百,安卓要申請軟著等
今年六月的時候,萌生了開發(fā)一個記賬 App 的想法,想去用自己的 App 記賬,管理收支。那時正好在英國是考試周,放假后,我回到了國內(nèi),準(zhǔn)備去實(shí)現(xiàn)我的計劃。沒想到這暑假很快就結(jié)束了,在這個暑假中經(jīng)歷的太多的事,準(zhǔn)備了要去美國讀研的考試,遇到了生命中的另一半,同時,也將 Costuary for iPhone 帶到了這個世界。
Logo
說道為什么要開發(fā)這樣一個 App ,因?yàn)楣P者在 UK 讀書,市面上很少有記賬 App 能夠?qū)崿F(xiàn)實(shí)時匯率的換算,帶有這個功能的 App 也是操作繁雜。所以要自己開發(fā)一個,功能并沒有那么復(fù)雜的,并且能夠滿足自己在國外和國內(nèi)生活需求的 App,所以自己編寫了 iPhone 的客戶端,為了獲取匯率和 Excel 導(dǎo)出,又用 Java 設(shè)計和編寫了 Costuary 的后端服務(wù)器。
比起今年年初開發(fā)的 Flat Weather,這個項(xiàng)目的代碼量大約是他的十倍,需要實(shí)現(xiàn)眾多的功能和模塊。
這篇文章將會介紹一下 Costuary 的功能與我開發(fā)過程中的一些心得。
效果圖設(shè)計
說到設(shè)計,兩年前,我還是一個 Android 開發(fā)者,Google 的 Material Design 是我的最愛,所以,Costuary 采用了 Android 5.0 之后采用的 Material Design 設(shè)計。其中摻雜了一些我自己的設(shè)計,因?yàn)?Material Design 的控件有時候操作繁瑣。
早在 5 月份的時候已經(jīng)零零總總的用 Sketch 畫出了這個產(chǎn)品的 UI 和圖標(biāo),之后開始了漫長開發(fā)的過程。
Sketch交互
與去年開發(fā)的 Android 版不同,iPhone 版的 Costuary 采用了底部導(dǎo)航欄的設(shè)計,相比于 Android 通常使用的 Navigation Drawer 的抽屜布局,底部導(dǎo)航欄的設(shè)計即使在右手操作 iPhone 的時候都不會太費(fèi)力。
UX功能 Features
Costuary 支持世界上主要貨幣的實(shí)時匯率轉(zhuǎn)換,所有外匯在統(tǒng)計時會轉(zhuǎn)換成主貨幣的數(shù)目,方便查看花銷。
日歷視圖能夠很直觀的反映出哪一天有消費(fèi)和收入。
說到記賬軟件,量化消費(fèi)的圖表無疑是重要的一環(huán),Costuary 提供了餅狀圖來視覺化一段時間的花銷。
可以建立多個賬戶來表示自己的銀行卡,支付寶,現(xiàn)金等等。
可以看出本月的預(yù)算還有多少。
如果想要進(jìn)行更加詳細(xì)的分析,可以使用導(dǎo)出功能將賬本導(dǎo)出到 Excel。
允許備份賬本內(nèi)容到 iCloud。
開發(fā)
去把一紙?jiān)O(shè)計變成真正的產(chǎn)品,這是一個獨(dú)立開發(fā)者應(yīng)該具有的能力。只會寫代碼不只是我唯一掌握的,能夠去設(shè)計出來自己想要的應(yīng)用并且將他實(shí)現(xiàn)才是我在做的事情。
這款應(yīng)用的開發(fā)并沒有想象中的簡單,需要自己去實(shí)現(xiàn)大量 Android UI 控件,很多圓角,陰影,字體,要慢慢的去調(diào)整,讓控件適合 iPhone 的屏幕。整個應(yīng)用的背后有 3 個關(guān)系型數(shù)據(jù)庫來儲存賬戶,賬本與各種匯率。與以前開發(fā)的 Flat Weather 不同,Costuary 會產(chǎn)生大量的用戶數(shù)據(jù),所以整個軟件架構(gòu)的穩(wěn)定性變得異常重要,需要設(shè)計一些機(jī)制來防止數(shù)據(jù)丟失與損壞。
Development
為了實(shí)現(xiàn) App 獲取每日的匯率,并且在 iPhone 上能夠?qū)崿F(xiàn)賬本導(dǎo)出到 Excel ,我設(shè)計了一個服務(wù)器后端來處理這些繁雜的實(shí)物。每次 App 啟動后會與我的服務(wù)器來更新最新的匯率。當(dāng)用戶選擇導(dǎo)出時,賬本會被發(fā)送到服務(wù)器上并處理為 Excel 發(fā)送到用戶的郵箱里。
說到服務(wù)器,就不得不提到用戶隱私了,因?yàn)閷?dǎo)出到 Excel 功能需要將賬本傳到我的服務(wù)器上做進(jìn)一步處理,很多人會覺得我侵犯了他的個人隱私。對此,為了保護(hù)我的權(quán)益與用戶的權(quán)益,我撰寫了 Costuary 軟件許可及服務(wù)協(xié)議與 Costuary 隱私政策,這是我作為獨(dú)立開發(fā)者這么多年后第一次去寫許可協(xié)議。
Agreement資費(fèi)
與我的其他產(chǎn)品一樣,這款 App 依舊是免費(fèi)供大家使用的,作為獨(dú)立開發(fā)者,我們都知道,絕大多數(shù)用戶不會去珍惜一個免費(fèi)的產(chǎn)品。就像 Flat Weather 一樣,雖然獲得了很多人的支持,但是也收到了很多人的吐槽。在 Costuary 中依然設(shè)計了一個的捐助按鈕,如果大家使用之后喜歡這個應(yīng)用,請支持我將他維護(hù)下去。
Please donate me尾巴
Costuary for iPhone 是我開發(fā)出來過最大的軟件體系。我相信,能夠獨(dú)立開發(fā)出來產(chǎn)品的人懂得不只是編程。一個人要去經(jīng)歷項(xiàng)目的全部生命周期:規(guī)劃,設(shè)計,開發(fā),運(yùn)營,維護(hù),營銷,這些是我開發(fā)這么多產(chǎn)品所學(xué)會的。
現(xiàn)在的 Costuary 只是第一個版本,還有很多 iPhone 的特性沒有來得及開發(fā),以后會跟上的,比如 iPhone X 的適配,3D Touch、Today Widget、Touch ID 等等。
以前在少數(shù)派撰稿的時候,很多讀者會來問我如何學(xué)習(xí)開發(fā),我也特地去寫過如何去學(xué)習(xí)編程,但我相信,真正想去學(xué)習(xí)的,想去為這個生態(tài)貢獻(xiàn)出自己的一份力的人,自己都會找到學(xué)習(xí)的方法。我的專業(yè)是電子電器而不是軟件工程,但是我不后悔當(dāng)年去學(xué)習(xí)編程。
最后,還是感謝在背后默默支持我的人,我會不斷地改進(jìn)與提升,如果 Costuary 真的在記賬方面給予了你便利,這是我莫大的榮幸。
如果想要了解我的更多作品可以訪問我的個人博客 MikeTech,或者在少數(shù)派中閱讀我以前寫過的文章。今年年初也在 iPhone 上寫過一個天氣 App,天氣應(yīng)用 Flat Weather 的設(shè)計歷程
對了,關(guān)于記賬有什么用,如何記賬,如何養(yǎng)成記賬的習(xí)慣。為什么每個月末都捉襟見肘,除了沒錢,很可能是對財務(wù)管理的能力不強(qiáng)。想了解這一方面的知識,不妨看一看我派的付費(fèi)閱讀欄目:從零開始做好個人記賬
你好,非常感謝你的邀請。
開發(fā)一個app的話首先
第一步、需要調(diào)研,分析開發(fā)需求。
第二步、根據(jù)你的開發(fā)需求整理一個開發(fā)方案,選擇合理的架構(gòu)。
第三步、開始研發(fā)。
第四步、測試。
第五步、上線試運(yùn)行。
第六步、查缺補(bǔ)漏后投入使用。
開發(fā)一個app的話。有多種選擇??梢哉乙粋€第三方公司來進(jìn)行開發(fā)。也可以自己招聘開發(fā)團(tuán)隊(duì)。也可以交給比較信任的程序員朋友來進(jìn)行開發(fā)。第三種方式的話,屬于接私活兒,成本較低。 當(dāng)然前提你得有認(rèn)識的人。
我也是程序員出身。參與過web網(wǎng)站開發(fā)。傳統(tǒng)辦公開發(fā)。H5開發(fā)。微信小程序開發(fā)。以及安卓開發(fā)。有著較豐富的開發(fā)經(jīng)驗(yàn)。自己完全可以勝任一個App,如果你有這方面的事需求的話,也可以私信我。我是山東的。如果方便的話也可以面談。
App軟件開發(fā),從之前的溝通需求、規(guī)劃設(shè)計、程序開發(fā)、測試修改、它的發(fā)布等。這是一個非常復(fù)雜和漫長的過程,一旦進(jìn)入通信,就需要定期維護(hù)和功能變更。它需要大量的專業(yè)人員參與,成本自然很高。 所以,隨著更新市場的發(fā)展和人們福利的提高,現(xiàn)在已經(jīng)不像傳統(tǒng)開發(fā)那么困難了。只需要動動鼠標(biāo),不需要觸碰代碼就可以完成制作app部分。
App開發(fā)已成為企業(yè)發(fā)展的重要推動力量
十年巨變!移動互聯(lián)網(wǎng)已顛覆我們的時代,商業(yè)、社交、視頻、新聞、工具等領(lǐng)域,移動應(yīng)用的滲透率已高達(dá)95%,在團(tuán)購 旅游 和零售行業(yè),移動端收入規(guī)模已超過PC端,手機(jī)APP已成為企業(yè)不可或缺的線上陣地。
不用編程就能制作app的在線平臺,擺脫了很多復(fù)雜的流程,還能減少用戶的麻煩,不會制作,而且可以在平臺上查看詳細(xì)的課程,非常貼心的設(shè)置!在這里,我想說的是,如果你想制作app的話,可以在平臺上查看詳細(xì)的課程??偟膩碚f,這種方法會大大降低軟件開發(fā)app的成本,節(jié)省時間,讓很多人解決了資金短缺和想快速制作app的問題。
app是如何制作的,APP如何開發(fā)?
隨著智能手機(jī)APP軟件的吸引力越來越大,越來越多的企業(yè)開始開發(fā)自己的APP應(yīng)用。企業(yè)要想開發(fā)屬于自己企業(yè)的APP應(yīng)用,首先要分析自身的情況和市場對產(chǎn)品的需求。
在APP,開發(fā)這件事上,企業(yè)一定要注意以下幾點(diǎn)。
1. 開發(fā)APP應(yīng)用一定要明確以自己為中心,開發(fā)APP是否能帶來巨大的利潤。
2. 要了解目標(biāo)用戶的需求,配置APP吸引用戶,提高用戶購買應(yīng)用的意愿。
3. 通過合作再次尋找潛在客戶,我相信開發(fā)APP的收益遠(yuǎn)遠(yuǎn)大于成本。
開發(fā)APP蘋果系統(tǒng),必須使用Xcode蘋果開發(fā)工具,一般采用Objective-C或Swift語言。Objective-C是繼承了C語言的C字,可以直接用Objective-C語言進(jìn)行編程。如果你不懂?dāng)?shù)據(jù),差別很小。還有一些新的蘋果后綴語言,非常有用。
Andro系統(tǒng)的app都是用Java語言開發(fā)的,Java語言已經(jīng)流行了20多年,這個趨勢還在持續(xù)和延續(xù)。如果想要安卓系統(tǒng)的app首先要掌握J(rèn)ava語言,對于說C語言的人來說,學(xué)習(xí)Java還是很容易的。如果你對自學(xué)感興趣,Java網(wǎng)站上有很多培訓(xùn)課程,還有很多免費(fèi)培訓(xùn)。視頻,不想付費(fèi)。如果這個絕對是零基礎(chǔ)(沒學(xué)過其他編程語言,比如c語言),如果真的很感興趣,可以自學(xué),但是速度比較慢。
總結(jié):app開發(fā)擁有多種方法,選擇最適合自己的方式方法很重要
答案寫到這里,我想您應(yīng)該知道了app的開發(fā)途徑或者方法是什么。如果您是小企業(yè)或者是個體工商戶,您可以找人幫忙開發(fā)小程序或者自己在一些網(wǎng)站上進(jìn)行傻瓜式軟件開發(fā)。正如上文所說,現(xiàn)在有很多的網(wǎng)站支持在線生成APP,常用的功能和接口都已經(jīng)設(shè)置好了,操作起來不是很難。如果您是大企業(yè),業(yè)務(wù)多訪問量比較大,我的建議是您應(yīng)該聘請專業(yè)的軟件工程師開發(fā)專門的app,避免后期出現(xiàn)的問題沒辦法及時解決給您的企業(yè)帶來損失。
不懂的話,找專業(yè)的人幫忙,我就是專業(yè)的
app即application program。應(yīng)用程序。目前手機(jī)平臺是ios和安卓兩大平臺的天下。本人不才從事安卓開發(fā)。簡單介紹一下吧你問的這個問題范圍太廣。ios和安卓開發(fā)語言不同。ios使用的是object_c和swift。安卓是基于java。二者都屬于面向?qū)ο蟮恼Z言。開發(fā)平臺安卓基于android studio早期使用的是eclipse+adt。不過已經(jīng)被淘汰了。那么怎樣開發(fā)app?首先你需要一個后臺程序員寫服務(wù)器以及搭建數(shù)據(jù)庫。其次你的會ios或是android其中之一那么這就是最簡單的配置.現(xiàn)在流行混合開發(fā)如果你再會點(diǎn)前端的h5和js就更好了。一般一個軟件公司的基本配置是一個前端一個ios一個安卓一個后臺?;揪蜐M足你搭建網(wǎng)站和手機(jī)應(yīng)用的需求了。不過你作為老板養(yǎng)這樣一個團(tuán)隊(duì)很費(fèi)錢。還不如找外包
軟件的生成需要經(jīng)歷以下幾個階段:
1、滿足用戶需求——建立軟件目標(biāo),設(shè)想產(chǎn)品功能,進(jìn)行場景化細(xì)分說明;進(jìn)行可行性分析,用戶需求收集,用戶需求場景描述;場景問題梳理;獲取用戶行為、想法;場景應(yīng)用痛點(diǎn),機(jī)會點(diǎn)
2、需求開發(fā)與管理——建立用戶畫像,從軟件目標(biāo)出發(fā),進(jìn)行問題梳理,場景行為分析,愿景分析,建立體驗(yàn)地圖
3、利用Axure繪制軟件原型,在用戶場景中切入,并組織軟件原型實(shí)施,在實(shí)施過程中進(jìn)行問卷調(diào)查,收集問題,記錄用戶行為,不斷改善軟件需求,進(jìn)行需求評審,進(jìn)入評審優(yōu)化
4、技術(shù)可行性分析——技術(shù)分析,場景分析,功能實(shí)現(xiàn)驗(yàn)證,
5、開發(fā)計劃制定,實(shí)施,測試,驗(yàn)證,發(fā)布
Flutter入門這一篇效率文章就夠了
本文面向 Flutter 初學(xué)者,旨在用易懂的方式帶大家入門。除了 Flutter 代碼,還會介紹到語法、原理、特性等基礎(chǔ)知識。相信本文能幫助你學(xué)習(xí)和理解 Flutter。
我們先看一下目前的一些跨平臺方案,從前端渲染的角度來分類的話,大致可以分為以下幾種方案。
WebView 渲染
這種方案就很好理解,現(xiàn)在很多項(xiàng)目都會嵌入 H5 的頁面。就是用 JavaScript 等前端技術(shù)進(jìn)行開發(fā),在客戶端上用 WebView 來進(jìn)行渲染。微信小程序目前使用的就是這種方案。
它的優(yōu)點(diǎn)很明顯,使用成熟的前端技術(shù)進(jìn)行開發(fā),學(xué)習(xí)成本低,開發(fā)效率高,并且支持動態(tài)發(fā)布代碼。
但缺點(diǎn)也很明顯,在性能體驗(yàn)上,和原生還是存在較大差距的。
原生控件渲染
既然 WebView 的性能不夠好,于是就有了使用原生控件進(jìn)行渲染的方案。這種方案,同樣也是使用 JavaScript 開發(fā),區(qū)別是它最終是調(diào)用原生控件進(jìn)行渲染的。這種方案的代表是 Facebook 的 React Native。
由于使用原生控件進(jìn)行渲染,性能體驗(yàn)也會更接近原生。但也只是更接近,和原生還是有差距的,因?yàn)樗枰l繁的進(jìn)行 JavaScript 和原生之間的通信,這個通信效率是比較低的。
另外,由于需要適配各個平臺的控件,那就有可能出現(xiàn),系統(tǒng)控件更新了,而框架本身還沒有更新,由此產(chǎn)生了一些問題。換句話說,這種方案是受到原生控件限制的。
繪圖引擎渲染
接下來就是主角了。
在前端,如果完全不使用原生控件,我們可以通過系統(tǒng)的繪圖 API 繪制出一個用戶界面。從這個角度出發(fā),可以在各個平臺使用一個統(tǒng)一接口的繪圖引擎來進(jìn)行界面繪制,這個引擎最終調(diào)用的是系統(tǒng)的 API 繪制的。這樣的話,它的性能可以做到接近原生,并且又不受原生控件的限制,在不同平臺上能夠做到 UI 統(tǒng)一。
Flutter 就是這樣的一個開發(fā)框架。
一個跨平臺 UI 解決方案
Flutter 是由 Google 開發(fā)的,一個跨平臺 UI 解決方案。換句話說,它原則上只管 UI 的問題,如果涉及到平臺本身的一些功能,比如調(diào)用藍(lán)牙、攝像頭,一般還是需要原生代碼去操作。但現(xiàn)在也會有一些第三方庫幫我們解決這些問題。
繪圖引擎 Skia
Flutter 使用 Skia 作為它的繪圖引擎。Skia 已經(jīng)被 Google 收購,目前很多 Google 旗下的產(chǎn)品都是用 Skia 繪制的,包括 Android。
Android 內(nèi)置了 Skia,但 iOS 沒有,所以在打 iOS 安裝包的時候,會把 Skia 一起打進(jìn)去。這就導(dǎo)致了,用同一份 Flutter 代碼打包之后,iOS 的包要比 Android 的包大一些。
開發(fā)語言 Dart
Flutter 使用的開發(fā)語言,叫 Dart。Dart 也是 Google 自家的,它是一門面向?qū)ο蟮恼Z言,從它身上會看到一些其他開發(fā)語言的影子。學(xué)習(xí)起來難度不大的。
前面講跨平臺方案的時候,可以發(fā)現(xiàn)別的方案基本都是用 JavaScript 作為開發(fā)語言的,但為什么 Flutter 不用?就因?yàn)?Dart 是谷歌自家的嗎?這個問題先留著,我們后面會提到。
這里部分就簡單點(diǎn)帶過了,具體的搭建流程可以在官網(wǎng)查看:
主要的搭建步驟如下:
下載 Flutter SDK
官網(wǎng)下載地址:
由于在國內(nèi)訪問可能受限,官方為中國開發(fā)者搭建了鏡像:
更新環(huán)境變量
解壓后,將 flutter\bin 的全路徑添加到環(huán)境變量 PATH 中。
安裝開發(fā)工具
理論上,任何文本編輯器都可以用來開發(fā) Flutter 應(yīng)用,但推薦的開發(fā)工具是 Android Studio、IntelliJ 以及 VS Code。因?yàn)樵谶@些開發(fā)工具上,可以安裝官方的 Flutter 和 Dart 插件,得到更好的開發(fā)體驗(yàn)。文章里使用 Android Studio 來演示。
如果你打算開發(fā) iOS 應(yīng)用,則還需要安裝 Xcode。
安裝插件
在開發(fā)工具的插件設(shè)置中,安裝上面說到的 Flutter 和 Dart 插件。Flutter 插件用于支持 Flutter 的運(yùn)行、調(diào)試、熱重載等功能,而 Dart 插件則提供了代碼的輸入校驗(yàn)、代碼補(bǔ)全等功能。
萬物始于 Hello World,我們先來創(chuàng)建一個顯示 Hello World 的 Flutter 項(xiàng)目。
在 Android Studio 的歡迎頁面選擇 Start a new Flutter project ,或者通過菜單欄的 File New New Flutter Project ,創(chuàng)建一個新的 Flutter 項(xiàng)目。
創(chuàng)建好的項(xiàng)目里面包含了 android 和 ios 兩個文件夾,它們是標(biāo)準(zhǔn)的 Android 和 iOS 項(xiàng)目。我們的 Flutter 代碼,存放在 lib 文件夾里。項(xiàng)目創(chuàng)建好后,會默認(rèn)帶一個計數(shù)器的示例,我們不管它,把 main.dart 的代碼改成 Hello World:
啟動一個模擬器,或者連上真機(jī),點(diǎn)擊 Run 運(yùn)行一下,就能看這樣一個界面了:
具體代碼先混個眼熟就好,具體的后面會再講到。
在寫 Flutter 之前,還要先跟大家簡單介紹一下 Dart 的語法。如果你有 Java 或 JavaScript 的開發(fā)經(jīng)驗(yàn),以及面向?qū)ο蟮木幊趟枷?,學(xué)起來是很快的。
我們可以在 test 文件夾下新建一個 dart 文件,用來寫測試代碼。
指定類型
var
但和 JavaScript 不同的是,以下代碼在 JavaScript 是不會報錯的,但在 Dart 里會報錯:
Object
如果非要上面這樣寫,那也可以。把 var 換成 Object 就不報錯了:
和 Java 類似,Object 是所有對象的根基類。但是這樣的話,如果想打印一下 num 的字符串長度,是會報錯的:
因?yàn)?length 是屬于 String 的,但系統(tǒng)只知道 num 是一個對象,并不知道它是一個 String。
dynamic
如果還是非要這樣寫,那也可以。Dart 有一個特有的關(guān)鍵字 dynamic,把 Object 改成 dynamic 就不報錯了:
我們運(yùn)行一下這個文件,可以在控制臺看到正確打印出了字符串長度。
函數(shù)
dynamic
在 Dart 里,函數(shù)也是可以不寫返回類型的,不寫的話會被當(dāng)做 dynamic 來處理。這樣的話,函數(shù)的類型就是 return 的類型,如果沒有 return 則是 void 類型。比如可以這樣:
運(yùn)行之后是能正確打印出字符串長度的。
用于傳參
Dart 里的函數(shù)也是一個對象,所以可以把函數(shù)作為參數(shù)來傳遞,比如:
可選參數(shù)
在 Dart 的函數(shù)傳參里,有一個叫可選參數(shù)的概念,我們以文字控件 Text 為例,在源碼里可以看到 Text 的構(gòu)造函數(shù)是這樣的:
首先,在參數(shù)里有一個 data,它是要顯示的文字內(nèi)容,是一個必填項(xiàng)。而 data 后面的一堆參數(shù),是用一個大括號括起來的,這些參數(shù)就叫做可選參數(shù),意思是這些參數(shù)可傳可不傳。
假如我們要顯示一個比較長的文字,又想限制它最多顯示兩行,就可以這樣來創(chuàng)建一個 Text:
可選參數(shù),在 Flutter 里面用的非常多。
異步
Future
在 Dart 里使用 Future 來處理異步任務(wù),比如我們現(xiàn)在延時一秒打印 666,代碼如下:
Future 的語法和 Promise 非常像。任務(wù)執(zhí)行成功會調(diào)用 then,執(zhí)行失敗會調(diào)用 catchError,而無論成功還是失敗,都會調(diào)用 whenComplete。
async/await
如果你不喜歡上面那種寫法,或者是想把異步轉(zhuǎn)成同步,就可以用 async 和 await 這兩個關(guān)鍵字來轉(zhuǎn)換。
我們把上面的代碼轉(zhuǎn)換一下,寫一個 getString 方法,返回的類型是 Future,它會延時返回一個字符串。在 main 函數(shù)后面加上 async 關(guān)鍵字,在 getString() 前面加上 await,代碼如下:
運(yùn)行之后可以看到,能正常延時一秒后,把字符串打印出來。這里 getString() 返回的類型是 Future,而 await getString() 則是返回了延時之后返回的字符串。await 要在 async 的函數(shù)里面才能使用。
async 和 await 其實(shí)是一個語法糖,它最終也是轉(zhuǎn)換成 Future 調(diào)用鏈的形式執(zhí)行的。
接下來回到 Flutter,F(xiàn)lutter 里最重要的一個概念是 Widget(下面翻譯作控件)。
在原生開發(fā)里面,我們可能會在界面上區(qū)分,這是一個 View,這是一個 Layout,這是一個 View Controller。但在 Flutter 里面,它們?nèi)紝儆谝粋€統(tǒng)一的模型 Widget??梢哉f,在 Flutter 界面里,所有東西都是 Widget。
以前學(xué)面向?qū)ο蟮臅r候,我們都聽過一句話,叫萬物皆對象。我這里套用一下,在 Flutter 里, 萬物皆控件 。
具體有哪些控件,我做了一下簡單的分類。
根控件
所有的控件都屬于 StatefulWidget 或 StatelessWidget 。它們的區(qū)別是,StatefulWidget 擁有狀態(tài) State ,而 StatelessWidget 沒有。
StatefulWidget
當(dāng)一個控件是可變的時候,就要使用 StatefulWidget 來構(gòu)建。StatefulWidget 本身不可變,但它持有的狀態(tài) State 是可變的。
StatelessWidget
當(dāng)一個控件狀態(tài)是固定不可變的時候,就可以使用 StatelessWidget。前面我們寫的 Hello World 就是使用 StatelessWidget。
容器控件
容器類控件一般是將某些屬性或配置,作用在它的子控件上,比如控件所在的寬高、背景、位置等。
常用的容器控件有 Container、Center、Padding 等。
布局控件
布局控件可以類比作原生開發(fā)中的 Layout,通常它會擁有一個 children 的屬性,用于接收一個控件數(shù)組,對這些控件進(jìn)行特定的排版。
常用的布局控件有 Row、Column、Stack、Flex 等。
基礎(chǔ)控件
基礎(chǔ)控件就是常用的文字、按鈕、圖片等控件。
常用的基礎(chǔ)控件有 Text、TextField、Button、Image 等。
功能控件
在 Flutter 里還有一類控件,它們不影響 UI 布局,但帶有一些特定的功能,比如頁面跳轉(zhuǎn)、事件監(jiān)聽、定義主題等。我們把這一類控件稱作功能控件。
常用的功能控件有 Navigator、NotificationListener、Theme 等。
開始寫 Flutter 代碼了。還記不記得,在 Flutter 項(xiàng)目創(chuàng)建之后,是自帶一個計數(shù)器 demo 的,現(xiàn)在我們用自己的代碼實(shí)現(xiàn)一遍。代碼修改成如下:
運(yùn)行之后,就可以看到這樣的界面了:
按鈕每點(diǎn)擊一次,數(shù)字就會加一。下面我們來分析一下這段代碼,看下里面用到的一些 Widget。
StatefulWidget
由于頁面中的數(shù)字是跟隨狀態(tài)變化的,所以該頁面改用 StatefulWidget。StatefulWidget 并不會直接返回一個 Widget,而是返回狀態(tài) State,在 State 里再返回 Widget。
Scaffold
Scaffold 是一個標(biāo)準(zhǔn)的 Material Design 頁面,它包含了標(biāo)題欄、浮動按鈕、側(cè)滑菜單、底部導(dǎo)航欄等配置。我們這里用到了標(biāo)題欄 appBar、頁面內(nèi)容 body、浮動按鈕 floatingActionButton。
AppBar
AppBar 就是標(biāo)題欄,通過查看控件的構(gòu)造方法,我們可以知道它可配置的屬性。
AppBar 的可選參數(shù)除了標(biāo)題 title,還可以配置標(biāo)題前的內(nèi)容 leading,右側(cè)的操作按鈕 anctions,控件垂直高度 elevation 等。我們只傳了 title,其他屬性都用默認(rèn)值。
Center
Center 是一個容器類控件,它的作用就是讓它的子控件居中顯示。
FloatingActionButton
熟悉安卓開發(fā)的應(yīng)該對這個控件比較熟悉,它就是頁面右下角一個特定樣式的 Button,參數(shù)里面的 onPressed 是一個必填項(xiàng),要傳一個點(diǎn)擊之后的回調(diào)函數(shù)。
根據(jù)這個例子,下面給大家介紹一下 Flutter 兩個比較重要的特性。
點(diǎn)擊 Button 之后,我們把 num 變量加一,并使用 setState 通知狀態(tài)發(fā)生了改變,F(xiàn)lutter 會根據(jù)新的狀態(tài)更新 UI。如果有接觸過小程序開發(fā),setState 就和小程序的 setData 類似。
在 Flutter 里面我們不需要用 set 方法來更新 UI,可變控件是和狀態(tài)綁定的,這就是 Flutter 的響應(yīng)式 UI 編程。
在 Android Q 和 iOS 13 里都加入了暗黑模式,我們也換一個暗黑主題來玩一下。MaterialApp 里有一個 theme 的屬性,我們把它配置一下:
這次改完之后不點(diǎn) Run 了,我們點(diǎn)一下閃電圖標(biāo) Flutter Hot Reload ,就能看到界面發(fā)生了變化:
這就是 Flutter 的 熱重載 ,在修改完代碼之后,通過熱重載就能馬上在設(shè)備上看到修改結(jié)果,可以很大程度上增加開發(fā)效率。
下面再給大家介紹幾個 Flutter 里的常見操作。
在 Flutter 里,使用 Navigator 來管理頁面跳轉(zhuǎn),比如要跳轉(zhuǎn)到一個 NewPage 可以這樣寫:
進(jìn)棧使用 push,出棧則是 pop。
使用 MaterialPageRoute 會模擬出 Android 上頁面跳轉(zhuǎn)的過場效果。
我們來看看怎么顯示一張本地圖片。
先在根目錄新建一個存放圖片的文件夾,比如叫 images,把圖片 picture.png 放進(jìn)去。
找到根目錄下的 pubspec.yaml 文件,這個便是 Flutter 依賴配置文件,我們需要在這里配置一下剛才的圖片:
這樣,我們就能使用 Image 控件把這張圖片顯示出來了:
和 node 的 npm 以及 Android 的 jcenter 類似,F(xiàn)lutter 也擁有一個公共倉庫 pub.dev。pub.dev 是 Google 官方的 Dart 倉庫,在上面可以找到我們需要的包和插件。
Flutter 本身沒有 Toast,我們來接入一個。在 pub.dev 上搜索后,我決定使用 fluttertoast:
按照說明,在 pubspec.yaml 文件里的 dependencies 下配置:
點(diǎn)一下 Android Studio 右上角的 Packages get 同步之后就可以使用了:
我們上面使用的都是 Material Design 的控件,它們都是在 flutter/material.dart 包里面的。如果要使用 iOS 風(fēng)格的控件,則要用到 flutter/cupertino.dart 包:
iOS 風(fēng)格的控件,基本都以 Cupertino 開頭。我們把計時器頁面里的控件替換一下:
效果如下:
代碼的部分就到這里了,接下來跟大家聊一下編譯方式,編程語言的編譯方式有兩種。
關(guān)于它們孰優(yōu)孰劣,就要看從哪個角度去對比了。JIT 的話,它的一大特點(diǎn)就是支持動態(tài)發(fā)布代碼,也就是支持熱更新。但要是從性能的角度考慮,AOT 會更好,因?yàn)樵谶\(yùn)行的時候不用再進(jìn)行編譯的操作的,運(yùn)行的效率會更高一些。
回到我們一開始的時候留下的問題,為什么別的跨平臺方案都是用 JavaScript,而 Flutter 要用 Dart 來開發(fā)。JavaScript 的編譯方式是 JIT 的,它不支持 AOT。而 Dart 同時支持 JIT 和 AOT。
Flutter 在開發(fā)階段使用 JIT,讓我們用上了熱重載,增加了開發(fā)效率。在打包時改用 AOT,保證了正式版應(yīng)用的性能。
最后講一下大家比較關(guān)心的一個東西,F(xiàn)lutter 是否支持熱更新?前面說到 Dart 支持 JIT,所以從技術(shù)層面它是支持的。但是目前是不支持的,在官方的計劃文檔中,可以看到:
至于原因,官方在這里進(jìn)行了說明??偟膩碚f,是由于政策的限制,以及出于對性能和安全性的考慮,暫時不支持了。
到這就結(jié)束啦。由于想把 Flutter 基礎(chǔ)在一篇內(nèi)講完,沒有涉及太多細(xì)節(jié),如果要寫 Flutter 代碼還需要深入學(xué)習(xí)。但相信理解之后再學(xué),會輕松很多。
app開發(fā)語言flutter的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于app使用什么語言開發(fā)、app開發(fā)語言flutter的信息別忘了在本站進(jìn)行查找喔。