在編寫幾個 Flutter 項目后,發(fā)現(xiàn) Flutter 的強大之處在于業(yè)務(wù)中所有用到的控件以及場景都有對應(yīng)的處理方案;而 Dart 語言也與 Java 、 Kotlin 類似,所以對 Android 開發(fā)者來說門檻非常低;特意記錄一下常用的控件及其使用:
創(chuàng)新互聯(lián)公司是專業(yè)的紅山網(wǎng)站建設(shè)公司,紅山接單;提供成都網(wǎng)站設(shè)計、成都做網(wǎng)站,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行紅山網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
StatelessWidget 不需要額外的創(chuàng)建 State
StatefulWidget 創(chuàng)建 State 類,并可以在其中保存一些狀態(tài)
only 可以單獨設(shè)置每個方向的內(nèi)邊距
類似于 LinearLayout 中的 orientation 設(shè)置為 vertical , mainAxisAlignment 表示豎向的一個對齊方式, crossAxisAlignment 表示橫向的對齊方式
與 Column 相反,主軸是橫向,對齊方式類似, crossAxisAlignment 表示豎向的對齊方式
類似 SizedBox ,一個容器,但是主要功能是有一個 decoration —— 裝飾器,作用是繪制背景,或者使用 item 中的陰影
棧,先入后出,類似于 Android 上的 FrameLayout
通常配合 Stack 使用,固定顯示在某一個位置
配合多 child 使用,會填充剩余的空間
Image 功能強大,使用不同的方法可以加載不同來源的圖片
看到這些方法,突然覺得 Flutter 太香了,而且 Image 可以配置 clip 等裁剪出不同形狀的圖片,無論是圓形還是五角星都不在話下,然而 Android 要實現(xiàn)不規(guī)則的形狀,可是要下不少功夫的。
名字和 Android 的一模一樣,但是用法卻比 Android 的簡單很多:
主要就是 itemCount 與 itemBuilder ,其余就是配置樣式, itemBuilder 需要返回一個 widget ,當然了,每個 ListView 都有其對應(yīng)的 item ,在里面的方法中編寫 widget 即可
與 ListView 類似,但是需要有一個 delegate 類,作用是設(shè)置有多少列,每一列之間的間距是多少
GridView 沒有 build , children 表示所有的子 view
最常用的控件之一,有非常多的樣式, Flutter 中通常是使用裝飾器來處理控件的,如背景使用 BoxDecoration , TextFiled 使用 InputDecoration ; 使用如下
Flutter支持穩(wěn)定的桌面設(shè)備開發(fā)已經(jīng)一段時間了,不得不說,F(xiàn)lutter多平臺支持的特性真的很香。我本人并沒有任何桌面開發(fā)的經(jīng)驗,但仍然使用Flutter開發(fā)出了一個桌面版小程序,功能很簡單,就是對輸入的json做格式化處理和轉(zhuǎn)模型。
話不多說,先來看看實際效果。 項目源碼地址
開發(fā)環(huán)境如下:
Flutter : 2.8.1
Dart : 2.15.1
IDE : VSCode
JSON作為我們?nèi)粘i_發(fā)工作中經(jīng)常要打交道的一種數(shù)據(jù)格式,它共有6種數(shù)據(jù)類型: null , num , string , object , array , bool 。我們勢必對它又愛又恨。愛他因為他作為數(shù)據(jù)處理的一種格式確實非常方便簡潔。但是在我們做Flutter開發(fā)中,又需要接觸到j(luò)son解析時,就會感覺非常棘手,因為flutter沒有反射,導致json轉(zhuǎn)模型這塊需要手寫那繁雜的映射關(guān)系。就像下面這樣子。
數(shù)據(jù)量少還能接受,一旦量大,那么光手寫這個解析方法都能讓你懷疑人生。更何況手寫還有出錯的可能。好在官方有個工具**json_serializable**可以自動生成這塊轉(zhuǎn)換代碼,也解決了flutter界json轉(zhuǎn)模型的空缺。當然,業(yè)界也有專門解析json的網(wǎng)站,可以自動生成dart代碼,使用者在生成后復制進項目中即可,也是非常方便的。
本項目以json解析為切入點,和大家一起來看下flutter是如何開發(fā)桌面應(yīng)用的。
要讓我們的flutter項目支持桌面設(shè)備。我們首先需要修改下flutter的設(shè)置。如下,讓我們的項目支持 windows 和 macos 系統(tǒng)。
接下來使用 flutter create 命令創(chuàng)建我們的模版工程。
創(chuàng)建完項目后,我們就可以 run 起來了。
先來看下整體界面,界面四塊,分別為功能模塊、文件選擇模塊、輸入模塊、輸出模塊。
我們在新建一個桌面應(yīng)用時,默認的模版又一個Appbar,此時應(yīng)用可以用鼠標拖拽移動,放大縮小,還可以縮到很小。但是,我們一旦去掉這個導航欄,那么窗口就不能用鼠標拖動了,并且我們往往不希望用戶將我們的窗口縮放的很小,這會導致頁面異常,一些重要信息都展示不全。因此這里需要借助第三方組件 bitsdojo_window 。通過 bitsdojo_window ,我們可以實現(xiàn)窗口的定制化,拖動,最小尺寸,最大尺寸,窗口邊框,窗口頂部放大、縮小、關(guān)閉的按鈕等。
通過 InkWell 組件,可以捕捉到手勢、鼠標、觸控筆的移動和停留位置
這個功能是鼠標移動后的UI交互界面。要在窗口上顯示一個提示框,可以使用 Overlay 。需要注意的是,由于在 Overlay 上的 text 的根結(jié)點不是 Material 風格的組件,因此會出現(xiàn)黃色的下劃線。因此一定要用 Material 包一下 text 。并且你必須給創(chuàng)建的 OverlayEntry 一個位置,否則它將全屏顯示。
讀取說表拖拽的文件一開始想嘗試使用 InkWell 組件,但是這個組件無法識別拖拽中的鼠標,并且也無法從中拿到文件信息。因此放棄。后來從文章《Flutter-2天寫個桌面端APP》中發(fā)現(xiàn)一個可讀取拖拽文件的組件 desktop_drop ,能滿足要求。
使用開源組件 file_picker ,選完圖片后的操作和拖拽選擇圖片后的操作一致。
Textfield 如果要顯示富文本,那么需要自定義 TextEditingController 。并重寫 buildTextSpan 方法。
在做導出功能時遇到下列報錯,保存提示為沒有權(quán)限訪問對應(yīng)目錄下的文件。
通過Apple的開發(fā)文檔找到有關(guān)權(quán)限問題的說明。其中有個授權(quán)私鑰的key為 com.apple.security.files.downloads.read-write ,表示 對用戶的下載文件夾的讀/寫訪問權(quán)限 。那么,使用Xcode打開Flutter項目中的mac應(yīng)用,修改工程目錄下的 DebugProfile.entitlements 文件,向 entitlements 文件中添加 com.apple.security.files.downloads.read-write ,并將值設(shè)置為YES,保存后重啟Flutter項目。發(fā)現(xiàn)已經(jīng)可以向下載目錄中讀寫文件了。
當然,這是正常操作。還有個騷操作就是關(guān)閉系統(tǒng)的沙盒機制。將 entitlements 文件的 App Sandbox 設(shè)置為NO。這樣我們就可以訪問任意路徑了。當然關(guān)閉應(yīng)用的沙盒也就相當于關(guān)閉了應(yīng)用的防護機制,因此這個選項慎用。
原文地址:
我是初學者小白,所以很多看法不深,理解也不夠透徹。但是很適合小白們一起從低角度往高處探索。文中有錯誤的,感謝指正,一起進步。
趁著假期做一個Flutter的地圖功能,因為后端選用了百度地圖,所以前端沒得挑。找了遍插件,并沒有現(xiàn)成可用的。(不過發(fā)現(xiàn)了百度官方也自開發(fā)Flutter插件,目前功能只有一個獲取本地位置信息,后期會繼續(xù)增加吧?很期待!)
參考帖子:
這個實際上跟功能之間沒太大關(guān)系,只是我按照個人摸索的過程來寫。
當對一個“領(lǐng)域/知識塊”完全不懂的時候,360°的方向都不確定的話。先了解基礎(chǔ)概念,有利于你確定自己的摸索方向。
參考帖子:
中間我跳過了幾十,上百個帖子的摸索過程。這個才是關(guān)鍵能夠真正做事的參考。
因為百度的sdk還算是很完善的,所以一旦出問題,都會有對應(yīng)的報錯提示。
我是使用flutter插件:permission_handler,來解決安卓的動態(tài)授權(quán)問題,用法簡單而且設(shè)計合理。
這個錯誤直接來看,就是簽名有問題。怎么查看SHA1碼和包名,這里不多說,網(wǎng)上有極其多的方法,百度Sdk開發(fā)指南里也有。沒那么復雜,也沒那么麻煩。按照流程操作就是對的。
實在不放心?跟我一樣,flutter打包后,把apk反過來解SHA1碼不就行了?
參考帖子:
紅色框框基本就是帖子講解的那樣。
藍色框框見下圖:release標簽里好像是自己設(shè)置了。所以debug標簽里面,箭頭指向的位置,是我多設(shè)置的一個參數(shù)。
uid: -1 appid -1 msg: httpsPost failed,IOException:Unable to resolve host "api.map.baidu.com": No address associated with hostname
這一步我是哭笑不得,一開始老是和問題(2)混淆,導致浪費很多時間。仔細閱讀后,發(fā)現(xiàn)是不能連接到“api.map.baidu.com”。
我打開模擬器的chrome瀏覽器,發(fā)現(xiàn)不能上網(wǎng)。查看手機的dns是10.0.2.3(默認的),和家里wifi不一樣,所以不能上網(wǎng)也正常,之前居然沒發(fā)現(xiàn)這個問題?。?!
終端執(zhí)行:adb shell? 和? getprop,就可以查看所有的屬性參數(shù)了。(window小伙伴自行百度,這個沒多大差別。如果你有多個設(shè)備,記得自己選好設(shè)備。)
在里面找到這一項,就是你的dns參數(shù)。有些人是net.dns1,我的是net.eth0.dns1。這個沒關(guān)系,只是等下指令 稍微改動 就行。
修改dns指令:setprop net.eth0.dns1 192.168.2.1
后面的192.168.2.1是我自己的dns,這個根據(jù)自己的情況來填寫。不懂的百度下怎么查看自己的dns。
雖然提示設(shè)置失敗,但是回到模擬器一看,地圖已經(jīng)顯示出來了。
嘿嘿,在flutter設(shè)定多大的區(qū)域,地圖就是多大的區(qū)域。用起來就很方便了。
過程十分痛苦,因為對flutter不是很熟悉,對Android原生更是了解很少。所以自己就像突然不能講話,被丟到一個陌生的環(huán)境,卻要我去找一個人。所以細心很重要,一定要看清楚錯誤提示,不要錯過每一個細節(jié)和可能性。
幸好最后解決了問題,開心~
其實如果你仔細閱讀過百度官方的文檔,會發(fā)現(xiàn)里面有關(guān)于 地圖的生命周期管理 。然后在這里面沒有提及到,這一點雖然沒提,但不可或缺,小伙伴就自行思考吧。
最后還有一點,其實我的初衷是想實現(xiàn)一個百度地圖的plugin,但是苦于能力有限,對Android的不熟悉,最后折戟。我不得已另起項目,然后重新實現(xiàn)地圖sdk接入。經(jīng)過這次對于這些有更多更全面的認知后,有空會再次研究flutter 插件的開發(fā),共勉,奧利給?。?!
Flutter是一個移動應(yīng)用程序的軟件開發(fā)工具包(SDK),具有以下特征:
跨平臺應(yīng)用的框架,沒有使用WebView或者系統(tǒng)平臺自帶的控件,使用自身的高性能渲染引擎自繪
簡化版的瀏覽器,最大限度在android和ios上統(tǒng)一UI,包括業(yè)務(wù)邏輯和用戶體驗
開發(fā)語言使用dart,結(jié)合C, C++, 和Skia(2D渲染引擎)構(gòu)建
支持hot reload,包含著完整的控件和工具鏈
一切皆控件,控件是每個Flutter應(yīng)用程序的基本構(gòu)建塊,與分離視圖、控制器、布局和其他屬性的框架不同,F(xiàn)lutter具有一致的統(tǒng)一對象模型:控件。一個控件可以定義:結(jié)構(gòu)元素(比如按鈕或菜單)、風格元素(比如字體或顏色方案)、布局的方面(比如填充)、一些業(yè)務(wù)邏輯等
組合大于繼承,控件本身通常由許多小型、單用途的控件組成,結(jié)合起來產(chǎn)生強大的效果,類的層次結(jié)構(gòu)是扁平的,以最大化可能的組合數(shù)量
強化版的WebView,框架僅提供一個View層,大部分功能要依賴原生
目前只能夠運行大部分Dart代碼(不能引入dart:mirrors或dart:html庫)
手機APP制作流程:無需技術(shù),教你制作一個自己的手機APP
一款手機APP的制作,說復雜非常復雜,涉及到多個領(lǐng)域的研發(fā),稍復雜一點的個人研發(fā)基本上搞不定,但是,也有非常簡單的手機APP一站式制作運營方法。
隨著移動互聯(lián)網(wǎng)基層開開發(fā)技術(shù)的發(fā)展,無需編程技術(shù),也可以在應(yīng)用公園制作手機。這里就以應(yīng)用公園為例,教您熟悉手機APP制作流程,手把手教你制作一款自己心儀的手機APP。
第一步:了解自己想要制作一款怎么的手機APP。是軟硬件結(jié)合? 游戲 類?商城類?新聞資訊類?互動類?聊天類?還是團購類、同城服務(wù)類?送餐類?企業(yè)展示類?
每一個類別的APP開發(fā)差異非常大,主要就是不同類型所需要的功能支持。對自己想要做的APP有個大致的了解,但是這一步很多人都沒搞清楚,大部分人都存在一個大概模糊的創(chuàng)意、想法階段。
第二步:了解自己想要做的APP的基礎(chǔ)功能,劃分板塊。
對基礎(chǔ)功能的了解、板塊的分類,上手最快的方法就是:查看市場上類似的APP進行借鑒。
第三步:界面及交互的設(shè)計
界面及交互的設(shè)計,可以直接使用“墨刀”??梢韵仍O(shè)計一個大概,后期不斷豐富。
第四步:APP功能的開發(fā)制作
APP功能的開發(fā)直接使用應(yīng)用公園就可以了。應(yīng)用公園把市場上常見的APP功能進行拆分組合,你不需要懂任何編程技術(shù),只需喲安把需要的功能挑選出,組合搭配一個,就能迅速組建出一個手機APP。
手機APP制作具體流程:
1、打開應(yīng)用公園的官網(wǎng),點擊“開始制作”,注冊登錄;
2、應(yīng)用公園為在線APP制作平臺,所以不需要下載任何東西,直接進入制作頁面就可以;
3、應(yīng)用公園目前有兩種模式:
(1)主題模式:應(yīng)用公園平臺上,已經(jīng)很多已經(jīng)制作完善的手機APP軟件,可以直接當做模板使用,僅需要把里面的文字圖片進行替換,就可以快速制作一款APP。
(2)自由模式:就像拼圖一樣,把需要的功能自由組合搭配一下,就可以創(chuàng)造一款獨一無二的手機APP。
每一個功能控件的具體功能,都通過后臺自動配置。
4、手機APP打包
制作完善后,在應(yīng)用公園平臺直接點擊制作完成,就會自動打包成手機安裝程序。
5、應(yīng)用發(fā)布上架
在應(yīng)用公園平臺直接申請應(yīng)用發(fā)布,通過聯(lián)網(wǎng)后,就可以聯(lián)網(wǎng)使用了。
6、下載管理、運營
應(yīng)用公園提供運營管理后臺、下載站點、下載二維碼、手機管理助手等APP相關(guān)產(chǎn)品,一站式服務(wù),自動配置,免去多次開發(fā)成本,而且后期的功能、內(nèi)容的更新迭代自己既可以搞定,也不需要具體的編程技術(shù)。
自己制作app需要 編程知識 。但依靠第三方工具,三分鐘就可以做成專屬自己的APP。下面以簡易網(wǎng)為例演示:
簡網(wǎng)APP工廠三大特點
1、最低的成本:節(jié)省所有開發(fā)成本,以及僅幾分鐘的時間成本。
2、實用的功能:貼近傳統(tǒng)網(wǎng)站的內(nèi)容編輯與發(fā)布方式。
3、靈活的運營:生成APP后,一個人也可以完美運營。
先來了解一下APP工廠:三分鐘制作APP
使用簡網(wǎng)APP工廠之前,我曾經(jīng)通過其他類似的APP公司制作過兩三個不同版本的免費APP,簡網(wǎng)的操作流程是制作門檻最低的一家。
不支持用戶名注冊,需要使用微博賬號
新浪與騰訊微博用戶數(shù)幾乎覆蓋全網(wǎng)網(wǎng)民數(shù),我們默認用戶已經(jīng)擁有微博賬號,以便于進行APP快速創(chuàng)建。
填寫APP信息:幾分鐘搞定
制作APP之前我們需要做一些準備工作,比如我們要明確我們要做一個怎樣的APP,我們要為這個APP準備一張1024x1024的ICON以及一張114x114的小圖標,另外還需要一張640x1136的開機圖。
從簡網(wǎng)APP工廠的首頁,經(jīng)過3次跳轉(zhuǎn),省略了網(wǎng)站注冊過程,通過模板挑選完成APP美工定案,所需的是APP的圖標與應(yīng)用簡介。全過程幾分鐘足矣。
快捷實用的后臺采編系統(tǒng)
我們制作了一個新聞資訊類的APP軟件,同時我們擁有了一個功能齊全的后臺更新系統(tǒng)。利用后臺可以完全解決APP內(nèi)容更新問題,可以快速進行新聞發(fā)布,包括文字、圖片、視頻、微博等形式,并且引入了完善的評論系統(tǒng)與社區(qū)系統(tǒng)。
筆者至今使用過三家大型網(wǎng)站的后臺系統(tǒng),由于種種 歷史 原因,這些后臺系統(tǒng)都存在或多或少的不合理設(shè)計,也許是因為承載的功能過多,數(shù)據(jù)架構(gòu)過于復雜,在新入職人員上手操作時,需要經(jīng)過長時間的熟悉過程。
簡網(wǎng)為我們制作的APP提供了統(tǒng)一的后臺模板,這個后臺的功能亮點在于不僅提供原始錄入,還提供也許是目前設(shè)計最為合理的網(wǎng)絡(luò)來源抓取功能。包括網(wǎng)頁、微博在內(nèi)的網(wǎng)絡(luò)內(nèi)容,都可以在大約1分鐘時間內(nèi)導入后臺中,并且實時呈現(xiàn)在用戶手機上的APP客戶端。
APP的生成時間約為三分鐘,APP容量只有3M,一般的寬帶都可以在1分鐘之內(nèi)下載好裝進手機
我們得到了一個可安裝的APP軟件
同時獲得了一個功能完善的編輯后臺
快速的內(nèi)容抓取,讓后臺采編人員的數(shù)量可以降到最低,維持一個日更新量在100篇文章左右的APP客戶端,一個工作人員足矣。
內(nèi)容采編神器:發(fā)布到應(yīng)用
“發(fā)布到應(yī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人員進行專業(yè)設(shè)計和美化,最后將設(shè)計圖打包給開發(fā)人員。
開發(fā)設(shè)計
拿安卓舉例,開發(fā)使用語言也分幾種,具體得根據(jù)實際情況來選擇。
1.原生開發(fā)
安卓一般使用java語言開發(fā),當然現(xiàn)在也有kotlin語言進行開發(fā)。如何開發(fā)就涉及到具體編程了,這里就不詳說了。簡單描述就是使用安卓提供的一系列控件來實現(xiàn)頁面,復雜點的頁面可以通過自定義控件來實現(xiàn)。
2.使用H5語言開發(fā)
使用H5開發(fā)的好處有很多,可以多端復用,比如瀏覽器端,ios端,當然H5開發(fā)的體驗是沒有原生好的。結(jié)合我做過的項目來說,一般是這個頁面需要分享出去的話,就用H5開發(fā)。
3.使用flutter開發(fā)
flutter是近年來谷歌推出的一款UI框架,
使用dart語言進行開發(fā),支持跨平臺,weight渲染直接操作硬件層,體驗可媲美原生。但是flutter技術(shù)比較新,生態(tài)還不完善,開發(fā)起來效率相對偏低
頁面數(shù)據(jù)填充
頁面開發(fā)出來只是空殼子,沒有數(shù)據(jù)填充,這時候就需要通過接口獲取數(shù)據(jù),然后解析數(shù)據(jù),顯示在頁面上。
到此,一個大概的App制作流程就結(jié)束了。
首先你要清楚自己想要什么樣的APP,是做哪一方便的?簡單的?還是復雜的
一下我就分為兩類進行回答
一,簡單APP
必要崗位
ui設(shè)計師(至少一個)
主要負責APP頁面的搭建和交互的梳理
客戶端開發(fā)人員(至少一個)
目前市面上的APP開發(fā)方式多為混合開發(fā),如果做一個簡單的APP可以選擇webapp,這樣不但可以減少開發(fā)周期還可以控制開發(fā)成本
服務(wù)端開發(fā)(至少一個)
目前服務(wù)器語言很多php,java,
node.js
非必要崗位
首先 ,我說的非必要崗位不是說這些崗位不重要,而是說在為了減少成本的情況下,這樣崗位可以被別的崗位所替代
產(chǎn)品經(jīng)理
如果開發(fā)的App功能簡單,UI設(shè)計師就可以擔任這樣職責
測試工程師
當然,在時間允許的情況下,開發(fā)人員也可以是測試人員
二,復雜APP
復雜app可以考慮純原生開發(fā),那么客戶端至少兩個人進行開發(fā)(安卓,IOS),或者考慮混合開發(fā),及web前端+原生開發(fā)人員
必要崗位
ui設(shè)計師,安卓開發(fā)工程師,ios開發(fā)工程師,后端開發(fā)工程師,產(chǎn)品經(jīng)理,測試工程師,人員的多少可以根據(jù)項目的大小來定
三,必要成本
服務(wù)器 :這是開發(fā)app必須要的,也就是我們放代碼的地方
上架審核所需費用 :比如IOS上架審核的花好幾百,安卓要申請軟著等
今年六月的時候,萌生了開發(fā)一個記賬 App 的想法,想去用自己的 App 記賬,管理收支。那時正好在英國是考試周,放假后,我回到了國內(nèi),準備去實現(xiàn)我的計劃。沒想到這暑假很快就結(jié)束了,在這個暑假中經(jīng)歷的太多的事,準備了要去美國讀研的考試,遇到了生命中的另一半,同時,也將 Costuary for iPhone 帶到了這個世界。
Logo
說道為什么要開發(fā)這樣一個 App ,因為筆者在 UK 讀書,市面上很少有記賬 App 能夠?qū)崿F(xiàn)實時匯率的換算,帶有這個功能的 App 也是操作繁雜。所以要自己開發(fā)一個,功能并沒有那么復雜的,并且能夠滿足自己在國外和國內(nèi)生活需求的 App,所以自己編寫了 iPhone 的客戶端,為了獲取匯率和 Excel 導出,又用 Java 設(shè)計和編寫了 Costuary 的后端服務(wù)器。
比起今年年初開發(fā)的 Flat Weather,這個項目的代碼量大約是他的十倍,需要實現(xiàn)眾多的功能和模塊。
這篇文章將會介紹一下 Costuary 的功能與我開發(fā)過程中的一些心得。
效果圖設(shè)計
說到設(shè)計,兩年前,我還是一個 Android 開發(fā)者,Google 的 Material Design 是我的最愛,所以,Costuary 采用了 Android 5.0 之后采用的 Material Design 設(shè)計。其中摻雜了一些我自己的設(shè)計,因為 Material Design 的控件有時候操作繁瑣。
早在 5 月份的時候已經(jīng)零零總總的用 Sketch 畫出了這個產(chǎn)品的 UI 和圖標,之后開始了漫長開發(fā)的過程。
Sketch交互
與去年開發(fā)的 Android 版不同,iPhone 版的 Costuary 采用了底部導航欄的設(shè)計,相比于 Android 通常使用的 Navigation Drawer 的抽屜布局,底部導航欄的設(shè)計即使在右手操作 iPhone 的時候都不會太費力。
UX功能 Features
Costuary 支持世界上主要貨幣的實時匯率轉(zhuǎn)換,所有外匯在統(tǒng)計時會轉(zhuǎn)換成主貨幣的數(shù)目,方便查看花銷。
日歷視圖能夠很直觀的反映出哪一天有消費和收入。
說到記賬軟件,量化消費的圖表無疑是重要的一環(huán),Costuary 提供了餅狀圖來視覺化一段時間的花銷。
可以建立多個賬戶來表示自己的銀行卡,支付寶,現(xiàn)金等等。
可以看出本月的預算還有多少。
如果想要進行更加詳細的分析,可以使用導出功能將賬本導出到 Excel。
允許備份賬本內(nèi)容到 iCloud。
開發(fā)
去把一紙設(shè)計變成真正的產(chǎn)品,這是一個獨立開發(fā)者應(yīng)該具有的能力。只會寫代碼不只是我唯一掌握的,能夠去設(shè)計出來自己想要的應(yīng)用并且將他實現(xiàn)才是我在做的事情。
這款應(yīng)用的開發(fā)并沒有想象中的簡單,需要自己去實現(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è)計一些機制來防止數(shù)據(jù)丟失與損壞。
Development
為了實現(xiàn) App 獲取每日的匯率,并且在 iPhone 上能夠?qū)崿F(xiàn)賬本導出到 Excel ,我設(shè)計了一個服務(wù)器后端來處理這些繁雜的實物。每次 App 啟動后會與我的服務(wù)器來更新最新的匯率。當用戶選擇導出時,賬本會被發(fā)送到服務(wù)器上并處理為 Excel 發(fā)送到用戶的郵箱里。
說到服務(wù)器,就不得不提到用戶隱私了,因為導出到 Excel 功能需要將賬本傳到我的服務(wù)器上做進一步處理,很多人會覺得我侵犯了他的個人隱私。對此,為了保護我的權(quán)益與用戶的權(quán)益,我撰寫了 Costuary 軟件許可及服務(wù)協(xié)議與 Costuary 隱私政策,這是我作為獨立開發(fā)者這么多年后第一次去寫許可協(xié)議。
Agreement資費
與我的其他產(chǎn)品一樣,這款 App 依舊是免費供大家使用的,作為獨立開發(fā)者,我們都知道,絕大多數(shù)用戶不會去珍惜一個免費的產(chǎn)品。就像 Flat Weather 一樣,雖然獲得了很多人的支持,但是也收到了很多人的吐槽。在 Costuary 中依然設(shè)計了一個的捐助按鈕,如果大家使用之后喜歡這個應(yīng)用,請支持我將他維護下去。
Please donate me尾巴
Costuary for iPhone 是我開發(fā)出來過最大的軟件體系。我相信,能夠獨立開發(fā)出來產(chǎn)品的人懂得不只是編程。一個人要去經(jīng)歷項目的全部生命周期:規(guī)劃,設(shè)計,開發(fā),運營,維護,營銷,這些是我開發(fā)這么多產(chǎn)品所學會的。
現(xiàn)在的 Costuary 只是第一個版本,還有很多 iPhone 的特性沒有來得及開發(fā),以后會跟上的,比如 iPhone X 的適配,3D Touch、Today Widget、Touch ID 等等。
以前在少數(shù)派撰稿的時候,很多讀者會來問我如何學習開發(fā),我也特地去寫過如何去學習編程,但我相信,真正想去學習的,想去為這個生態(tài)貢獻出自己的一份力的人,自己都會找到學習的方法。我的專業(yè)是電子電器而不是軟件工程,但是我不后悔當年去學習編程。
最后,還是感謝在背后默默支持我的人,我會不斷地改進與提升,如果 Costuary 真的在記賬方面給予了你便利,這是我莫大的榮幸。
如果想要了解我的更多作品可以訪問我的個人博客 MikeTech,或者在少數(shù)派中閱讀我以前寫過的文章。今年年初也在 iPhone 上寫過一個天氣 App,天氣應(yīng)用 Flat Weather 的設(shè)計歷程
對了,關(guān)于記賬有什么用,如何記賬,如何養(yǎng)成記賬的習慣。為什么每個月末都捉襟見肘,除了沒錢,很可能是對財務(wù)管理的能力不強。想了解這一方面的知識,不妨看一看我派的付費閱讀欄目:從零開始做好個人記賬
你好,非常感謝你的邀請。
開發(fā)一個app的話首先
第一步、需要調(diào)研,分析開發(fā)需求。
第二步、根據(jù)你的開發(fā)需求整理一個開發(fā)方案,選擇合理的架構(gòu)。
第三步、開始研發(fā)。
第四步、測試。
第五步、上線試運行。
第六步、查缺補漏后投入使用。
開發(fā)一個app的話。有多種選擇。可以找一個第三方公司來進行開發(fā)。也可以自己招聘開發(fā)團隊。也可以交給比較信任的程序員朋友來進行開發(fā)。第三種方式的話,屬于接私活兒,成本較低。 當然前提你得有認識的人。
我也是程序員出身。參與過web網(wǎng)站開發(fā)。傳統(tǒng)辦公開發(fā)。H5開發(fā)。微信小程序開發(fā)。以及安卓開發(fā)。有著較豐富的開發(fā)經(jīng)驗。自己完全可以勝任一個App,如果你有這方面的事需求的話,也可以私信我。我是山東的。如果方便的話也可以面談。
App軟件開發(fā),從之前的溝通需求、規(guī)劃設(shè)計、程序開發(fā)、測試修改、它的發(fā)布等。這是一個非常復雜和漫長的過程,一旦進入通信,就需要定期維護和功能變更。它需要大量的專業(yè)人員參與,成本自然很高。 所以,隨著更新市場的發(fā)展和人們福利的提高,現(xiàn)在已經(jīng)不像傳統(tǒng)開發(fā)那么困難了。只需要動動鼠標,不需要觸碰代碼就可以完成制作app部分。
App開發(fā)已成為企業(yè)發(fā)展的重要推動力量
十年巨變!移動互聯(lián)網(wǎng)已顛覆我們的時代,商業(yè)、社交、視頻、新聞、工具等領(lǐng)域,移動應(yīng)用的滲透率已高達95%,在團購 旅游 和零售行業(yè),移動端收入規(guī)模已超過PC端,手機APP已成為企業(yè)不可或缺的線上陣地。
不用編程就能制作app的在線平臺,擺脫了很多復雜的流程,還能減少用戶的麻煩,不會制作,而且可以在平臺上查看詳細的課程,非常貼心的設(shè)置!在這里,我想說的是,如果你想制作app的話,可以在平臺上查看詳細的課程??偟膩碚f,這種方法會大大降低軟件開發(fā)app的成本,節(jié)省時間,讓很多人解決了資金短缺和想快速制作app的問題。
app是如何制作的,APP如何開發(fā)?
隨著智能手機APP軟件的吸引力越來越大,越來越多的企業(yè)開始開發(fā)自己的APP應(yīng)用。企業(yè)要想開發(fā)屬于自己企業(yè)的APP應(yīng)用,首先要分析自身的情況和市場對產(chǎn)品的需求。
在APP,開發(fā)這件事上,企業(yè)一定要注意以下幾點。
1. 開發(fā)APP應(yīng)用一定要明確以自己為中心,開發(fā)APP是否能帶來巨大的利潤。
2. 要了解目標用戶的需求,配置APP吸引用戶,提高用戶購買應(yīng)用的意愿。
3. 通過合作再次尋找潛在客戶,我相信開發(fā)APP的收益遠遠大于成本。
開發(fā)APP蘋果系統(tǒng),必須使用Xcode蘋果開發(fā)工具,一般采用Objective-C或Swift語言。Objective-C是繼承了C語言的C字,可以直接用Objective-C語言進行編程。如果你不懂數(shù)據(jù),差別很小。還有一些新的蘋果后綴語言,非常有用。
Andro系統(tǒng)的app都是用Java語言開發(fā)的,Java語言已經(jīng)流行了20多年,這個趨勢還在持續(xù)和延續(xù)。如果想要安卓系統(tǒng)的app首先要掌握Java語言,對于說C語言的人來說,學習Java還是很容易的。如果你對自學感興趣,Java網(wǎng)站上有很多培訓課程,還有很多免費培訓。視頻,不想付費。如果這個絕對是零基礎(chǔ)(沒學過其他編程語言,比如c語言),如果真的很感興趣,可以自學,但是速度比較慢。
總結(jié):app開發(fā)擁有多種方法,選擇最適合自己的方式方法很重要
答案寫到這里,我想您應(yīng)該知道了app的開發(fā)途徑或者方法是什么。如果您是小企業(yè)或者是個體工商戶,您可以找人幫忙開發(fā)小程序或者自己在一些網(wǎng)站上進行傻瓜式軟件開發(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)用程序。目前手機平臺是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ā)如果你再會點前端的h5和js就更好了。一般一個軟件公司的基本配置是一個前端一個ios一個安卓一個后臺?;揪蜐M足你搭建網(wǎng)站和手機應(yīng)用的需求了。不過你作為老板養(yǎng)這樣一個團隊很費錢。還不如找外包
軟件的生成需要經(jīng)歷以下幾個階段:
1、滿足用戶需求——建立軟件目標,設(shè)想產(chǎn)品功能,進行場景化細分說明;進行可行性分析,用戶需求收集,用戶需求場景描述;場景問題梳理;獲取用戶行為、想法;場景應(yīng)用痛點,機會點
2、需求開發(fā)與管理——建立用戶畫像,從軟件目標出發(fā),進行問題梳理,場景行為分析,愿景分析,建立體驗地圖
3、利用Axure繪制軟件原型,在用戶場景中切入,并組織軟件原型實施,在實施過程中進行問卷調(diào)查,收集問題,記錄用戶行為,不斷改善軟件需求,進行需求評審,進入評審優(yōu)化
4、技術(shù)可行性分析——技術(shù)分析,場景分析,功能實現(xiàn)驗證,
5、開發(fā)計劃制定,實施,測試,驗證,發(fā)布
文章轉(zhuǎn)自:
用Android Stduio創(chuàng)建Flutter項目的時候,會出現(xiàn)各種問題,踩了一個又一個,最后編譯的時候可能會出現(xiàn)一直顯示Running Gradle task 'assembleDebug'然后就不動了,或者會顯示Could not resolve io.flutter等問題,歸根結(jié)底是網(wǎng)絡(luò)無法訪問到Google服務(wù)引起的,兩種解決方案:
1.具有比較良好的訪問谷歌的網(wǎng)絡(luò)環(huán)境
2.修改鏡像源為國內(nèi)的:
找到Flutte SDK目錄下的Flutter打包配置文件flutter.gradle
路徑為flutter\packages\flutter_tools\gradle\flutter.gradle
第一處配置:
buildscript {
repositories {
//注釋
// google()
// jcenter()
//添加
maven { url ' ' }
maven { url ' ' }
maven { url ' ' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
}
}
第二處配置:
class FlutterPlugin implements PluginProject {
//注釋
// private static final String MAVEN_REPO = " ";
//添加這行
private static final String MAVEN_REPO = " ";
第三處配置:
void addFlutterDependencies(buildType) {
String flutterBuildMode = buildModeFor(buildType)
if (!supportsBuildMode(flutterBuildMode)) {
return
}
String repository = useLocalEngine()
? project.property('local-engine-repo')
: MAVEN_REPO
最后一處,項目中的配置,修改Flutter項目下的android下的build.gradle:
buildscript {
ext.kotlin_version = '1.3.50'
repositories {
// google()
// jcenter()
maven { url ' ' }
maven { url ' ' }
maven { url ' ' }
}
}
allprojects {
repositories {
// google()
// jcenter()
maven { url ' ' }
maven { url ' ' }
maven { url ' ' }
}
}
修改完成后,再build,就可以正常構(gòu)建了?。?!