Flutter開發(fā)填坑記錄

1.錯誤提示

2019-08-01 18:57:29.445804+0800 pedi Dev[48916:362606] [VERBOSE-2:ui_dart_state.cc(148)] Unhandled Exception: PlatformException(unregistered_view_type, trying to create a view with an unregistered type, unregistered view type: 'plugins.flutter.io/webview')

#0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:564:7)

#1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:316:33)

#2 PlatformViewsService.initUiKitView (package:flutter/src/services/platform_views.dart:167:41)

#3 _UiKitViewState._createNewUiKitView (package:flutter/src/widgets/platform_view.dart:499:71)

#4 _UiKitViewState._initializeOnce (package:flutter/src/widgets/platform_view.dart:449:5)

#5 _UiKitViewState.didChangeDependencies (package:flutter/src/widgets/platform_view.dart:459:5)

webview加載失敗說明兩個問題:

1.plugin注冊失敗

2.ios工程在info.plist 需要加

<key>io.flutter.embedded_views_preview</key>

如果url是http毕莱,還需要加

<key>NSAppTransportSecurity</key>

? ? ? ? ? <key>NSAllowsArbitraryLoads</key>

? ? ? ? <true/>

? ? ? ? <key>NSAllowsArbitraryLoadsInWebContent</key>

? ? ? ? <true/>

iOS Platform

FlutterAppDelegate霞捡,是iOS的Plugin管理器,它記錄了所有的Plugin巧颈,并將Plugin綁定到FlutterViewController(默認(rèn)是rootViewController)薪伏。官方Demo是個StoryBoard猾瘸,以及純flutter項目他們的RootViewController默認(rèn)就是FlutterViewController勉盅。而Plugin注冊很重要的一點(diǎn)是铆农,只有注冊到FlutterViewController牺氨,才能注冊成功,才可以加載執(zhí)行Flutter第三方插件墩剖。否則就會出現(xiàn)上述問題猴凹。而混合開發(fā)的工程絕大多數(shù)的RootViewController都不可能是FlutterViewController,一定是個Native的頁面比如TabbarController或者NavigationController岭皂,所以注冊一定失敗郊霎。所以,如果出現(xiàn)這種情況爷绘,下面是閑魚书劝,以及官方的注冊Plugin的代碼教程进倍。

Google官方Flutter混合工程集成文檔的Appdelegate改造


閑魚推薦方法

FlutterViewController* flutterViewController = [[FlutterViewController alloc] initWithEngine:self.engine nibName:nil bundle:nil];?

self.flutterEngine= [[FlutterEnginealloc]initWithName:@"io.flutter"project:nil];? [self.flutterEnginerunWithEntrypoint:nil];? [GeneratedPluginRegistrantregisterWithRegistry:self.flutterEngine];

經(jīng)過多次運(yùn)行測試,發(fā)現(xiàn)這三行代碼竟然會有時效性的問題购对。比如老工程的didFinishLaunchingWithOptions方法里面 一定有很多的第三方模塊的初始化代碼 以及自己工程的網(wǎng)絡(luò)工具初始化等各個模塊的代碼猾昆,所以中間的耗時操作,會影響到上面的Plugin注冊骡苞。經(jīng)常創(chuàng)建失敗垂蜗。 用flutterengine 去注冊 給appdelegate 加一個flutterengine的屬性。然后創(chuàng)建fluttervc也要用initwithengine 的方式解幽。你以為直接運(yùn)行就完事了贴见?然并卵。 運(yùn)行白屏躲株。使用延遲加載也不管用片部,網(wǎng)上搜索到的教程

經(jīng)過大神指點(diǎn)要先使用present然后dismiss才能顯示出來

__weak __typeof(self)weakSelf = self;? ? ? ? self.ctr4.modalPresentationStyle = UIModalPresentationOverCurrentContext;? ? ? ? [self presentViewController:weakSelf.ctr4 animated:NO completion:^{? ? ? ? ? ? [weakSelf dismissViewControllerAnimated:NO completion:^{? ? ? ? ? ? ? ? [weakSelf addChildViewController:weakSelf.ctr4];? ? ? ? ? ? ? ? [weakSelf.view bringSubviewToFront:weakSelf.tabbarContainer];? ? ? ? ? ? }];? ? ? ? }];

接下來準(zhǔn)備添加多個flutter

然而在push過程中發(fā)現(xiàn)flutter的第一次顯示的界面竟然是上次tab的頁面,因為engine是同一份的徘溢,我們創(chuàng)建的時候會保存一份engine吞琐。

路由傳值我們之前會用到- (void)setInitialRoutez:(NSString*)route ,但是用Engine注冊你會發(fā)現(xiàn)傳入到main.dart里面的window.defaultRouteName一直是 / 根目錄符號然爆,這時候站粟,Native初始化Flutter頁面的代碼以及傳后續(xù)請求頭的路無情中被堵的死死的。所以你只能用消息發(fā)送的機(jī)制來解決多路由傳值的功能曾雕,要用到FlutterMethodChannel奴烙,EventChannel,BasicMessageChannel剖张,雖然很常用切诀,但是對于初始化路由來講,過于繁雜搔弄,復(fù)雜度高幅虑。

最后的最后。經(jīng)過了無數(shù)次顾犹,復(fù)雜倒庵,漫長,絕望炫刷,心灰意冷的嘗試后擎宝。

發(fā)現(xiàn)? 你只需要把這行代碼?

[GeneratedPluginRegistrant registerWithRegistry:self];

放到你需要被插件響應(yīng)的FlutterViewController頁面里面,就解決了上面所有的問題浑玛。


做了最近一段時間flutter的理解就是绍申。flutter他整個底層還是不夠完善不夠充足。就相當(dāng)于。你從點(diǎn)A到B极阅。他只有一條或者兩條路胃碾,

你只能走著走著,前面有個坑涂屁,你跳進(jìn)去书在,然后再爬上了,再往前走拆又,再跳進(jìn)去再爬上來儒旬。就像實(shí)現(xiàn)一個功能。他只能那么一個或者兩個方法才可以實(shí)現(xiàn)帖族,你沒法繞過或者通過別的實(shí)現(xiàn)方式去做蟀悦,就是你只能這樣搞而不是說像現(xiàn)在比較成熟的一些比如說IOS矮烹,安卓或者是H5。他整個從A到B從這走到那兒。走不過去废离,你可以換條別的路過去科侈。就這些不夠豐富的api是flutter底層比較欠缺的四苇,不夠完備的地方装处,

這也是任何一門語言的必經(jīng)之路,隨著開發(fā)者的不斷加入挣郭,牽線搭橋迄埃,疊加最偉大公司Google 的背書。整個flutter還是會馬不停蹄的發(fā)展壯大的兑障。


文章參考:

http://www.reibang.com/p/5e5d54db8c7e? Flutter和原生iOS交互(GA_

http://www.reibang.com/p/119fc6873434? Flutter Plugin 調(diào)用 Native APIs(閑魚技術(shù))

https://juejin.im/post/5c6e84156fb9a049a5718047? flutter 多實(shí)例實(shí)戰(zhàn)(共田君)

https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps? Google自家混合集成Wiki

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末侄非,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子流译,更是在濱河造成了極大的恐慌逞怨,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件福澡,死亡現(xiàn)場離奇詭異叠赦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)革砸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進(jìn)店門眯搭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人业岁,你說我怎么就攤上這事】芪茫” “怎么了笔时?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長仗岸。 經(jīng)常有香客問我允耿,道長借笙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任较锡,我火速辦了婚禮业稼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蚂蕴。我一直安慰自己低散,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布骡楼。 她就那樣靜靜地躺著熔号,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鸟整。 梳的紋絲不亂的頭發(fā)上引镊,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天,我揣著相機(jī)與錄音篮条,去河邊找鬼弟头。 笑死,一個胖子當(dāng)著我的面吹牛涉茧,可吹牛的內(nèi)容都是我干的赴恨。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼降瞳,長吁一口氣:“原來是場噩夢啊……” “哼嘱支!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起挣饥,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤除师,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后扔枫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汛聚,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年短荐,在試婚紗的時候發(fā)現(xiàn)自己被綠了倚舀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡忍宋,死狀恐怖痕貌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情糠排,我是刑警寧澤舵稠,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響哺徊,放射性物質(zhì)發(fā)生泄漏室琢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一落追、第九天 我趴在偏房一處隱蔽的房頂上張望盈滴。 院中可真熱鬧,春花似錦轿钠、人聲如沸巢钓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽竿报。三九已至,卻和暖如春继谚,著一層夾襖步出監(jiān)牢的瞬間烈菌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工花履, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芽世,地道東北人。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓诡壁,卻偏偏與公主長得像济瓢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子妹卿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內(nèi)容