401--Flutter for iOS 10--和硬件、第三方服務(wù)以及平臺(tái)交互

[toc]

和硬件、第三方服務(wù)以及平臺(tái)交互

1. 我怎么和平臺(tái),以及平臺(tái)的原生代碼交互?

Flutter 的代碼并不直接在平臺(tái)之下運(yùn)行,相反,Dart 代碼構(gòu)建的 Flutter 應(yīng)用在設(shè)備上以原生的方式運(yùn)行,卻“側(cè)步躲開(kāi)了”平臺(tái)提供的 SDK。這意味著,例如,你在 Dart 中發(fā)起一個(gè)網(wǎng)絡(luò)請(qǐng)求,它就直接在 Dart 的上下文中運(yùn)行。你并不會(huì)用上平常在 iOS 或 Android 上使用的原生 API。你的 Flutter 程序仍然被原生平臺(tái)的 ViewController 管理作一個(gè) view,但是你并不會(huì)直接訪問(wèn) ViewController 自身,或是原生框架。

但這并不意味著 Flutter 不能和原生 API,或任何你編寫(xiě)的原生代碼交互。Flutter 提供了 platform channels ,來(lái)和管理你的 Flutter view 的 ViewController 通信和交互數(shù)據(jù)。平臺(tái)管道本質(zhì)上是一個(gè)異步通信機(jī)制,橋接了 Dart 代碼和宿主 ViewController,以及它運(yùn)行于的 iOS 框架。你可以用平臺(tái)管道來(lái)執(zhí)行一個(gè)原生的函數(shù),或者是從設(shè)備的傳感器中獲取數(shù)據(jù)。

除了直接使用平臺(tái)管道之外,你還可以使用一系列預(yù)先制作好的 plugins。例如,你可以直接使用插件來(lái)訪問(wèn)相機(jī)膠卷或是設(shè)備的攝像頭,而不必編寫(xiě)你自己的集成層代碼。你可以在 Pub 上找到插件,這是一個(gè) Dart 和 Flutter 的開(kāi)源包倉(cāng)庫(kù)。其中一些包可能會(huì)支持集成 iOS 或 Android,或兩者均可。

如果你在 Pub 上找不到符合你需求的插件,你可以自己編寫(xiě) ,并且發(fā)布在 Pub 上。

2. 我怎么訪問(wèn) GPS 傳感器?

使用 location 社區(qū)插件。

3. 我怎么訪問(wèn)攝像頭?

image_picker 在訪問(wèn)攝像頭時(shí)非常常用。

4. 我怎么登錄 Facebook?

登錄 Facebook 可以使用 flutter_facebook_login 社區(qū)插件。

5. 我怎么使用 Firebase 特性?

大多數(shù) Firebase 特性被 first party plugins 包含了。這些第一方插件由 Flutter 團(tuán)隊(duì)維護(hù):

你也可以在 Pub 上找到 Firebase 的第三方插件。

6. 我怎創(chuàng)建自己的原生集成層?

如果有一些 Flutter 和社區(qū)插件遺漏的平臺(tái)相關(guān)的特性,可以根據(jù) developing packages andplugins 頁(yè)面構(gòu)建自己的插件。

Flutter 的插件結(jié)構(gòu),簡(jiǎn)要來(lái)說(shuō),就像 Android 中的 Event bus。你發(fā)送一個(gè)消息,并讓接受者處理并反饋結(jié)果給你。在這種情況下,接受者就是在 Android 或 iOS 上的原生代碼。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容