flutter踩坑

1. 三方庫使用:

https://pub.dev/ 這上面有豐富的flutter三方庫及評分

2. 圖片設(shè)置格式問題

assets:
  - images/icon_no_data.png
  - images/icon_logo_small.png

///如果格式不是這個圖片顯示不出來牛柒,如少空格等;
需要在pubspec.yaml中添加圖片级乐,不需要@2x這種

圖片資源很多的時候不想每張圖片都去聲明呢嫉称,這時候可以只需要聲明文件夾晴圾,這樣就會把文件夾里面所有資源識別到蝇闭,就像這樣:

assets:
    - images/
    - images/2.0x/
    - images/3.0x/

3. 使用FlutterEngine

使用FlutterEngine方式蕴侣,調(diào)用 setInitialRoute 方法會無效泊交,在Flutter端拿到的永遠(yuǎn)是“/”根目錄符號雁歌,這是Flutter SDK的一個BUG宏浩,因此如果必須依賴 setInitialRoute 參數(shù),那么可以使用直接 new FlutterViewController再使用路由

// 這種 setInitialRoute不生效 
func handleButtonAction() {
        let flutterEngine = (UIApplication.shared.delegate as? AppDelegate)?.flutterEngine
        let flutterViewController = FlutterViewController(engine: flutterEngine, nibName: nil, bundle: nil)!
        flutterViewController.setInitialRoute("test1")

        self.navigationController?.pushViewController(flutterViewController, animated: true)
    }
// new FlutterViewController
 @objc func handleButtonAction2(){
        let flutterViewController = FlutterViewController()
        flutterViewController.setInitialRoute("test1")
        
        self.navigationController?.pushViewController(flutterViewController, animated: true)
    }

4. native給flutter交互傳值

setMethodCallHandler result native原生給flutter傳值 json類型的value需要轉(zhuǎn)為string類型

// 路由
    func configRoute() {
        var initialRoute = Dictionary<String, String>()
        initialRoute["pageRoue"] = "order_list_page"
        initialRoute["url"] = "t8x"
        self.setInitialRoute(initialRoute.ff_toJson())
    }

5.熱更新

Only Flutter apps in debug mode can be hot reloaded. 只有==debug==模式下可用

6.debug和release模式

Debug 模式對應(yīng)Dart的 JIT 模式靠瞎,該模式會打開所有的斷言(assert)比庄,調(diào)試信息等,并支持 Hot reload(熱重載)乏盐,但是并沒有優(yōu)化代碼執(zhí)行速度佳窑、二進(jìn)制包大小和部署,所以在debug模式下我們會感覺到卡頓父能,不流暢等問題

Release模式對應(yīng)Dart的 AOT 模式神凑,該模式會關(guān)閉所有斷言,盡可能多的調(diào)試信息。此外還優(yōu)化了應(yīng)用快速啟動溉委,代碼快速執(zhí)行鹃唯,以及二進(jìn)制包的大小,所以在release模式下瓣喊,才是Flutter真正的實(shí)力坡慌,非常流暢。

7. 混編頁面黑屏

iOS和flutter混編加載頁面藻三,iOS需要設(shè)置頁面顏色洪橘,否則會閃黑屏

8.Listview監(jiān)聽滾動狀態(tài)

child: NotificationListener(
  onNotification: (notification){
    switch (notification.runtimeType){
      case ScrollStartNotification:
       debugPrint("開始滾動");
        break;
      case ScrollUpdateNotification:
        debugPrint("正在滾動");
        break;
      case ScrollEndNotification:
        debugPrint("結(jié)束滾動");
        break;
      case OverscrollNotification:
        debugPrint("滾動到邊界");
        break;
    }
  },
  child: ListView.builder(
    
  ),
));

9.熱更新Error -32601 received from application: Method not found

flutter pub cache repair
flutter clean

10. 第一次加載flutter頁面顯示ios啟動圖

需要注意的是iOS原生跳轉(zhuǎn)flutter時,第一次跳轉(zhuǎn)會異步渲染flutter環(huán)境棵帽,因此熄求,F(xiàn)lutterViewController實(shí)例有個splashScreenView屬性,防止用戶在打開flutter頁面時會有一個中間的空檔逗概,如果我們沒有設(shè)置此屬性抡四,iOS默認(rèn)將app應(yīng)用的LaunchStoryboard設(shè)置為此屬性的值,默認(rèn)可能設(shè)置成功也可能設(shè)置失敗仗谆,取決于你APP的啟動圖片是否是用LaunchStoryboard來設(shè)置的指巡,所以,沒有特殊情況隶垮,最好手動設(shè)置一下此屬性藻雪;

11. 混合棧問題

使用馬蜂窩App方案,一個 Native 頁面(ios vc 安卓activity/fregment)對應(yīng)一個 flutter 頁面;
問題:在跳轉(zhuǎn)時候狸吞,由于原生導(dǎo)航棧push有動畫效果勉耀,之前使用 MaterialPageRoute 路由也有默認(rèn)動畫,導(dǎo)致有兩個動畫
解決:flutter修改路由為 PageRouteBuilder ;自定義路由蹋偏,默認(rèn)無動畫效果

在項(xiàng)目中建議使用閑魚團(tuán)隊(duì)出的 flutterboost 框架便斥,非常方便進(jìn)行路由管理及解決混合棧問題。

12威始、iOS風(fēng)格的AppBar

/**
 *  iOS風(fēng)格導(dǎo)航欄
 *
 * const CupertinoNavigationBar({
    Key key,
    this.leading,//導(dǎo)航欄左側(cè)組件
    this.automaticallyImplyLeading = true,//是否顯示左邊組件
    this.automaticallyImplyMiddle = true,//是否顯示中間組件
    this.previousPageTitle,//導(dǎo)航欄左側(cè)組件的右邊的文本
    this.middle,////導(dǎo)航欄中間組件
    this.trailing,////導(dǎo)航欄右側(cè)組件
    this.border = _kDefaultNavBarBorder,//
    this.backgroundColor = _kDefaultNavBarBackgroundColor,//背景色
    this.padding,//
    this.actionsForegroundColor = CupertinoColors.activeBlue,//左側(cè)默認(rèn)組件和左側(cè)組件右邊文本的顏色
    this.transitionBetweenRoutes = true,//
    this.heroTag = _defaultHeroTag,//transitionBetweenRoutes:false時才能設(shè)置
    })
 */
return new Scaffold(        
        appBar: new CupertinoNavigationBar(
          middle: new Text('test'), //title
          trailing: Material(child: IconButton(icon: Icon(Icons.settings))), //右側(cè)導(dǎo)航icon      
        ),
 
        body: Text('test'),

13枢纠、TabBarView使用問題

在上下聯(lián)動的結(jié)構(gòu)中,使用到 TabBarView 組件黎棠,該組件切換的時候晋渺,每次都會重新觸發(fā)子組建的initState方法
這時候可以設(shè)置

class OrderListState extends State<OrderListView>
    with  AutomaticKeepAliveClientMixin{
  @override
  bool get wantKeepAlive => true;

并且在build方法里面調(diào)用super方法
  Widget build(BuildContext context) {
    super.build(context);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市脓斩,隨后出現(xiàn)的幾起案子木西,更是在濱河造成了極大的恐慌,老刑警劉巖随静,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件八千,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)恋捆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門照皆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鸠信,你說我怎么就攤上這事÷壅” “怎么了星立?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長葬凳。 經(jīng)常有香客問我绰垂,道長,這世上最難降的妖魔是什么火焰? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任劲装,我火速辦了婚禮,結(jié)果婚禮上昌简,老公的妹妹穿的比我還像新娘占业。我一直安慰自己,他們只是感情好纯赎,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布谦疾。 她就那樣靜靜地躺著,像睡著了一般犬金。 火紅的嫁衣襯著肌膚如雪念恍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天晚顷,我揣著相機(jī)與錄音峰伙,去河邊找鬼。 笑死该默,一個胖子當(dāng)著我的面吹牛瞳氓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播栓袖,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼顿膨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了叽赊?” 一聲冷哼從身側(cè)響起恋沃,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎必指,沒想到半個月后囊咏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年梅割,在試婚紗的時候發(fā)現(xiàn)自己被綠了霜第。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡户辞,死狀恐怖泌类,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情底燎,我是刑警寧澤刃榨,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站双仍,受9級特大地震影響枢希,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜朱沃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一苞轿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逗物,春花似錦搬卒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至莲祸,卻和暖如春蹂安,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锐帜。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工田盈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缴阎。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓允瞧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蛮拔。 傳聞我的和親對象是個殘疾皇子述暂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

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