之前試過 flutter doctor , 看看有哪些配置上的原因, 發(fā)現(xiàn)沒有任何問題, 很完美
成都創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、同江網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5場景定制、商城網(wǎng)站建設、集團公司官網(wǎng)建設、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為同江等各大城市提供網(wǎng)站開發(fā)制作服務。
然后又試了 flutter clean , 發(fā)現(xiàn)還是不奏效.
于是在網(wǎng)上用 flutter白屏 作為關鍵字查詢, 發(fā)現(xiàn)很多文章都沒什么用, 但是還是被我找到了解決方案:
先在安卓Studio中調(diào)出終端, 然后輸入命令:
flutter run --enable-software-rendering
此時, 再點擊 Run , 在iOS端就不會白屏了!
使用flutter_webview_plugin 加載一個H5頁面,是從dart頁面中跳轉(zhuǎn)h5頁面,h5頁面中可返回dart頁面,也可跳轉(zhuǎn)到其他dart頁面。
經(jīng)測試,在Android上可正常使用,但在ios上關閉web頁面時顯示白屏,web頁面并沒有close,還沒找到原因。。。
優(yōu)化點1:使用 builder構建列表
當你的列表元素是動態(tài)增長的時候(比如上拉加載更多),請不要直接用children 的方式,一直往children 的數(shù)組增加組件,那樣會很糟糕。對于 ListView.builder 是按需構建列表元素,也就是只有那些可見得元素才會調(diào)用itemBuilder 構建元素,這樣對于大列表而言性能開銷自然會小很多。
優(yōu)化點2:禁用 addAutomaticKeepAlives 和 addRepaintBoundaries 特性
這兩個屬性都是為了優(yōu)化滾動過程中的用戶體驗的。
addAutomaticKeepAlives 特性默認是 true,意思是在列表元素不可見后可以保持元素的狀態(tài),從而在再次出現(xiàn)在屏幕的時候能夠快速構建。這其實是一個拿空間換時間的方法,會造成一定程度得內(nèi)存開銷??梢栽O置為 false 關閉這一特性。缺點是滑動過快的時候可能會出現(xiàn)短暫的白屏(實際會很少發(fā)生)。
addRepaintBoundaries 是將列表元素使用一個重繪邊界(Repaint Boundary)包裹,從而使得滾動的時候可以避免重繪。而如果列表很容易繪制(列表元素布局比較簡單的情況下)的時候,可以關閉這個特性來提高滾動的流暢度。
優(yōu)化點3:盡可能將列表元素中不變的組件使用 const 修飾
使用 const 相當于將元素緩存起來實現(xiàn)共用,若列表元素某些部分一直保持不變,那么可以使用 const 修飾。
優(yōu)化點4:使用 itemExtent 確定列表元素滾動方向的尺寸
對于很多列表,我們在滾動方向上的尺寸是提前可以根據(jù) UI設計稿知道的,如果能夠知道的話,那么使用 itemExtent 屬性制定列表元素在滾動方向的尺寸,可以提升性能。這是因為,如果不指定的話,在滾動過程中,會需要推算每個元素在滾動方向的尺寸從而消耗計算資源。
Flutter ListView 的4個優(yōu)化要點,非常實用哦!實際上,這些要點都可以從官網(wǎng)的文檔里找出對應得說明。因此,如果遇到了性能問題,除了搜索引擎外,也建議多看看官方的文檔。
最近突然無法在as上直接跑ios真機,app在iPhone上跑到開機動畫,然后等了一會就結(jié)束 報錯Error launching application on xxxx
我的解決辦法
將Flutter module 嵌入到原生做混合開發(fā)時,遇到一個奇怪現(xiàn)象,模擬器能正常跑起來,但一運行到真機,進入到flutter模塊就直接白屏。
通過查看控制臺打印的log,發(fā)現(xiàn)了如下錯誤信息:
搜索最后一條信息 Could not launch engine with configuration 時看到網(wǎng)上給出了對應的答案:
嘗試了對應的方案,無果。
接著搜索第一條信息 Can't load Kernel binary: Invalid SDK hash ,總算是找到了對我有用的答案:
問題的根源就是在于我本地存在多個Flutter SDK版本,當時同一個項目需要切換不同版本時,進行對應的套件安裝估計出了問題,所以就導致我在運行項目時無法正常顯示。