天天看點

開源項目——FLutter/iOS/Android編寫的三個電腦APPios_calculatorandroid_calculatorflutter_calculator

開源項目——FLutter/iOS/Android編寫的三個電腦APPios_calculatorandroid_calculatorflutter_calculator

前端時間使用flutter,ios,android三種技術編寫了三個相同功能的電腦app,github位址,https://github.com/thinkerjack/android-ios-flutter_notepad。

使用swift編寫的ios app,實作了電腦的常見功能。

語言:swift 5.4

ui架構:uikit

包管理工具:cocoapods

布局架構:snapkit 5.0.0

開源項目——FLutter/iOS/Android編寫的三個電腦APPios_calculatorandroid_calculatorflutter_calculator

打開xcode建立ios app項目。

引入包管理工具和架構。

編寫布局類,繼承uiview。編寫button元件,繼承uibutton。

封裝計算邏輯工具類。

在viewcontroller中引入布局檔案,通過布局類中的按鈕點選協定完成電腦的計算邏輯。

swift基礎文法

uikit使用

snapkit使用

cocoapods使用

m1 mac安裝有問題

swift中的協定

學習ios開發也有一段時間了,學習途徑包括哔哩哔哩視訊教程,youtube視訊教程,apple官網文檔,閱讀相關書籍。因為擁有flutter和android的開發經驗,學習過程中沒有什麼大的阻礙,唯一覺得不好的一點是中文社群的匮乏,面向初學者的文章和書籍都比較少,随着ios相關技術的破壞性更新,導緻很多教程不适用,耽誤了不少時間。編寫ui有拖拽storyboard和純代碼兩種方式,個人還是比較喜歡純代碼的方式。開發語言有swift,objective-c,ui架構有uikit和swiftui,選擇了資料比較多的swift和uikit學習,技術選擇的多樣性在最初也造成了一些困惑,因為精力有限,不可能全都學。後續使用ios技術寫一些複雜點的app,提升技術水準。

使用java編寫的android app,實作了電腦的常見功能。

語言:java 1.8

依賴庫:詳見android_calculator/app/build.gradle下的dependencies

開源項目——FLutter/iOS/Android編寫的三個電腦APPios_calculatorandroid_calculatorflutter_calculator

編寫布局xml,使用<code>constraintlayout</code>布局

<code>activity</code>中注冊控件,監聽點選事件

點選=号時執行計算邏輯

java基礎文法

安卓開發官網

<code>constraintlayout</code>布局

三種技術寫一個項目,感覺給自己挖了一大坑,本意是熟悉一下學習過的技術,可能最近工作和學習的狀态都有所下滑,感覺沒有什麼動力了。

寫之前看了一下其他的開源項目,參考了一下布局,學習了<code>constraintlayout</code>布局,其實本來想用jetpack試一下,不過自己kotlin還沒學,而且學到太多也有點記不住,就放棄了。

可能需要歇一歇再繼續。

使用dart編寫的flutter app,實作了電腦的常見功能。

語言:dart 2.14

架構版本:flutter stable, 2.0.6

開源項目——FLutter/iOS/Android編寫的三個電腦APPios_calculatorandroid_calculatorflutter_calculator

gridview和expanded實作布局

dart文法

flutter基礎

程式設計其實是一種思想的表達手段,某一天我突發奇想,想做一個什麼樣的app,基于這個想法就有了用戶端的頁面,也是基于這個想法有了後端的業務。程式設計隻不過是實作這個想法的工具,程式設計和程式員,就像文字和作家,畫筆和畫家之間的關系,重要的不是實作想法的手段,重要的是心,一個充滿了想法的心靈才是最寶貴的。作家什麼都不想寫,文字對他有什麼用呢,畫家什麼都不想畫,畫筆又有什麼用呢,這樣才能準确的了解程式設計的作用,如果沒有一個改變世界的想法,google搜尋和蘋果手機也都不會出現了,拉裡佩奇或喬布斯代碼寫的多好都沒用。由此可見,網際網路行業大部分的行業都是為了想法在服務,不管是産品,營運,ui,都是為了讓想法變成現實,什麼時候自己能成為不再為别人的想法服務的人,而是提出想法呢?有點跑題了。

android/ios/flutter 三種技術寫同一種app本意是為了熟悉一下近來學習的android和ios,flutter算是添頭,寫一下玩一玩。不過通過這次項目的編寫,讓我覺得其實很多的技術都是在做類似的事情,變化的隻不過是api。用icon,用rn,用flutter,用android,用ios都可以寫出app來,成為大前端,也就是掌握多種可以做同一個事情的技術,會一種和會多種隻不過是誰記住了更多的api。

最近在做一個移動端即時通訊的需求,讀了一些技術部落格,這些部落格不是為了flutter而寫,他講述的是用戶端和伺服器端整個的處理即時通訊的流程,用戶端開啟連接配接,心跳檢測,建立本地資料庫,服務端接收到消息再轉發到用戶端,等等。這讓我覺得在業務開發上重要的其實不是語言或者技術,而是這種整體的,解決問題的思路,思路才是靈魂,語言和架構隻不過是實作這種思路的工具。

工作已經兩年了,感覺自己就是個api boy,掌握了很多的api,前端,用戶端,服務端都寫過,學過的語言都有七種了,以至于現在不是工作用到的技術,很多細節都想不起來了。可是這些api有多少是可以遷移的呢,過了幾年有了新的語言,新的架構,所謂的程式設計經驗也跟着清零。基于這種考慮,讓我想到去學習計算機基礎,學一學經久不衰的計算機科學,不能滿足于學習api。從技術投資的角度來講,肯定是希望自己學習的技術永遠不過時,現在來看隻有計算機科學有這樣的特性,準備學一學試一試。當我認識到我可能會從事十幾年的計算機行業後,我覺得不能再為了面試而學習了,應該學一些真正的可以貫穿整個職業生涯的知識。

從資本的角度出發,不管跨平台寫出來的app有多爛,跨平台還是提高了員工生産力。從我自己的角度出發,我覺得跨平台也是一種很好的技術方案,本來都是做的類似的事情,何必要用那麼多種語言,那麼多種架構,當flutter web正式版出了之後,我就放棄了js技術棧的學習,學習多種技術做同一種東西在我看來毫無意義。即使flutter不是終極方案,我覺得跨端是不會消失的,隻要還有各種各樣的端存在,跨端技術就會存在。

我覺得一名好的跨端工程師不隻是掌握跨端技術,能夠寫端上的應用,也應該熟悉端的特性,能夠解決對應端的特定問題。自己未來一年裡,除去基礎知識的學習外,也會朝着這個目标前進。未來的一年内,也會尋找機會為開源社群做出貢獻。技術在我這裡分兩種,一種是應該學的技術,所謂應該學的技術就是市場需要什麼樣的技術人才,對應的就是就是應該學的技術。另一種是感興趣的技術,感興趣的技術就全憑自己的心意,想學點什麼就學點什麼。

這兩年來多半是在學應該學的技術,很多想做的事情,感興趣的技術都被排在後面了,現在想一想如果當初不是對flutter産生了興趣,自己也不會在這兩年裡取得這麼大的進步。其實做正确的事情我隻是全憑意志力在堅持,而做感興趣的東西會讓我感到快樂和興奮,生活已經夠艱難了,還是應該讓自己快樂一些,接下來一兩年的時間裡,我決定多學習一些自己感興趣的知識,做自己真正想做的事情。做正确的事情,取得世俗意義上的成功,對自己來說毫無意義。做自己想做的事情,成為自己想成為的人,才是最有意義的事情。人生還長着呢,如果這一兩年發現做自己感興趣的東西完全行不通,到時候再調整方向也來得及。

我雖然希望一年後的自己成功,但我更希望一年後的自己快樂。人生一輩子都追求正确,雖然能有一個好的結果,但是也會錯過一些其他的風景,我決定去看看這些風景。

“我支援你,加油!”

開源項目——FLutter/iOS/Android編寫的三個電腦APPios_calculatorandroid_calculatorflutter_calculator
開源項目——FLutter/iOS/Android編寫的三個電腦APPios_calculatorandroid_calculatorflutter_calculator