AWS Amplify由一組工具和服務組成,用于構(gòu)建安全、可擴展的移動和Web應用程序。目前,由Amazon Web Services(AWS)提供的Amplify支持iOS、Android和JavaScript(Web和React Native),是構(gòu)建應用程序最快和最簡單的方法。
Flutter是Google的UI工具包,用于從單一代碼庫中構(gòu)建本機編譯的移動、Web和桌面應用程序,是發(fā)展最快的移動框架之一。
Amplify Flutter將AWS Amplify和Flutter結(jié)合,此為已投資Flutter生態(tài)系統(tǒng)且現(xiàn)在希望利用AWS強大力量的客戶而設計。
2020年8月,我們推出了Amplify Flutter開發(fā)者預覽版,并請求提供反饋。我們對回應感到高興。經(jīng)過幾個月的服務優(yōu)化,今天我們非常高興地宣布Amplify Flutter正式推出。
GA中的新Amplify Flutter功能
GA版本增加的三項新功能,使構(gòu)建功能強大的Flutter應用程序變得更加輕松:
首先,我們最近添加了由AWS AppSync和REST APIs提供支持的GraphQL API以及使用Amazon API Gateway和AWS Lambda的處理程序。
其次,Amplify DataStore為利用共享和分布式數(shù)據(jù)提供了一種無需為離線和在線場景編寫額外代碼的編程模型,這使得處理分布式、跨用戶數(shù)據(jù)和處理僅本地數(shù)據(jù)一樣簡單。
最后,我們配有的托管式UI是實現(xiàn)身份驗證的絕佳方法,且與Amazon Cognito和其他社交身份提供商合作,例如Facebook、Google和Amazon。托管式UI是可自定義的OAuth 2.0流程,允許您啟動登錄屏幕時無需在應用程序中嵌入適用于Cognito的SDK或社交提供商。
深入了解Amplify DataStore
在過去的兩周里,我一直使用Amplify Flutter構(gòu)建應用程序,我最喜歡的功能是Amplify DataStore,主要是因為它為我節(jié)省了很多時間。
在Amplify中使用REST和GraphQL API非常棒。但是,當我創(chuàng)建移動應用程序時,我常考慮移動設備具有間歇性連接且無法連接到API終端節(jié)點時會發(fā)生什么情況。在本地存儲數(shù)據(jù)并同步回云可能會變得相當復雜。Amplify DataStore通過提供能夠處理離線或在線場景的設備上持久性數(shù)據(jù)存儲來解決此問題。
當我開始開發(fā)應用程序時,我使用DataStore作為獨立的本地數(shù)據(jù)庫。但是,當我將它連接到云后端時,其力量對我來說一目了然。當網(wǎng)絡連接可用時,DataStore使用我的AWS AppSync API同步數(shù)據(jù)。如果應用程序處于離線狀態(tài),它會進行本地存儲在,以為連接可用時做準備。
Amplify DataStore會自動設置數(shù)據(jù)版本,并在云中使用AppSync檢測和解決沖突。此工具鏈還會根據(jù)我所提供的GraphQL架構(gòu)生成對象定義。
寫入Amplify DataStore
寫入DataStore非常簡單。文檔網(wǎng)站展示了一個示例,您可以使用博客網(wǎng)站中的架構(gòu)自己嘗試。
Post newPost = Post (
title: 'New Post being saved', rating: 15, status: PostStatus.DRAFT);
await Amplify.DataStore.save(newPost);
讀取Amplify DataStore
要從DataStore中讀取,您可以查詢給定模型類型的所有記錄。
try {
List<Post> posts = await Amplify.DataStore.query(Post.classType);
} catch (e) {
print("Query failed: " + e);
}
同步Amplify DataStore
如果啟用數(shù)據(jù)同步,則客戶端之間可能存在不同的對象版本,且多個客戶可能已對其對象副本進行了更新。DataStore將通過應用沖突檢測和解決策略來匯合不同的對象版本。默認解決方案為Auto Merge,但其他策略包括開放式并發(fā)控制和自定義Lambda函數(shù)。
其他Amplify Flutter功能
Amplify Flutter允許您通過三種其他方式與AWS合作:
·身份驗證。Amplify Flutter提供用于驗證用戶身份的界面,并啟動案例,例如,Sign-Up(注冊)、Sign-In(登陸)和Multi-Factor Authentication(多重身份驗證)。在后臺,它為其他的Amplify類別提供必要的授權(quán)。它為Cognito用戶池和身份池提供內(nèi)置支持。
·存儲。Amplify Flutter提供一個界面,為公有、受保護或私有存儲桶中的應用程序管理用戶內(nèi)容。它啟動例如上傳、下載、刪除對象等使用案例,并在默認情況下為Amazon Simple Storage Service(S3)提供內(nèi)置支持。
·分析。Amplify Flutter使您能夠在Amazon Pinpoint中為已經(jīng)身份驗證或未經(jīng)身份驗證的用戶收集跟蹤數(shù)據(jù)。您可以輕松記錄事件,并根據(jù)需要擴展自定義指標或?qū)傩缘哪J功能。
現(xiàn)已推出
Amplify Flutter現(xiàn)已在支持的所有區(qū)域的GA中推出。使用Amplify Flutter無需額外費用;您只需為應用程序在免費套餐之外所使用的后端服務付費。