flutter加載h5很卡的解決方法如下:

成都創(chuàng)新互聯(lián)是一家專業(yè)提供貴德企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、H5建站、小程序制作等業(yè)務(wù)。10年已為貴德眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
一種臨時(shí)解決方案,在切換動(dòng)畫加載完畢后,再去構(gòu)造 WebView,這樣從用戶角度上看,就不會(huì)有路由切換動(dòng)畫的卡頓了。class WebViewPage extends StatefulWidget {undefined
final String uri;
WebViewPage({undefined
@required this.uri,
}) : assert(uri != null);
@override
_WebViewPageState createState() = _WebViewPageState();
}
class _WebViewPageState extends State {undefined
WebViewController _controller;
bool _animationCompleted = false;
@override
Widget build(BuildContext context) {undefined
// 主要是下面的代碼
var route = ModalRoute.of(context);
if (route != null !_animationCompleted) {undefined
void handler(status) {undefined
if (status == AnimationStatus.completed) {undefined
route.animation.removeStatusListener(handler);
setState(() {undefined
_animationCompleted = true;
});
}
}
route.animation.addStatusListener(handler);
}
return Scaffold(
title: widget.title,
backgroundColor: Colors.white,
body: _animationCompleted
? WebView(
initialUrl: 'about:blank',
onWebViewCreated: (WebViewController webViewController) {undefined
_controller = webViewController;
_loadHtmlFromAssets();
},
)
: Container(),
);
}
_loadHtmlFromAssets() async {undefined
var uri = Uri.dataFromString(
await rootBundle.loadString(widget.uri),
mimeType: 'text/html',
encoding: Encoding.getByName('utf-8'),
).toString();
_controller.loadUrl(uri);
}
}
Fluent是目前國(guó)際上比較流行的商用CFD軟件包,在美國(guó)的市場(chǎng)占有率為60%,凡是和流體、熱傳遞和化學(xué)反應(yīng)等有關(guān)的工業(yè)均可使用。
它具有豐富的物理模型、先進(jìn)的數(shù)值方法和強(qiáng)大的前后處理功能,在航空航天、汽車設(shè)計(jì)、石油天然氣和渦輪機(jī)設(shè)計(jì)等方面都有著廣泛的應(yīng)用。
FLUENT軟件包含基于壓力的分離求解器、基于密度的隱式求解器、基于密度的顯式求解器,多求解器技術(shù)使FLUENT軟件可以用來(lái)模擬從不可壓縮到高超音速范圍內(nèi)的各種復(fù)雜流場(chǎng)。
FLUENT軟件包含非常豐富、經(jīng)過工程確認(rèn)的物理模型,由于采用了多種求解方法和多重網(wǎng)格加速收斂技術(shù),因而FLUENT能達(dá)到最佳的收斂速度和求解精度。
靈活的非結(jié)構(gòu)化網(wǎng)格和基于解的自適應(yīng)網(wǎng)格技術(shù)及成熟的物理模型,可以模擬高超音速流場(chǎng)、傳熱與相變、化學(xué)反應(yīng)與燃燒、多相流、旋轉(zhuǎn)機(jī)械、動(dòng)/變形網(wǎng)格、噪聲、材料加工等復(fù)雜機(jī)理的流動(dòng)問題。
圖片加載過程是由ImageProvider觸發(fā)的。而ImageProvider表示異步獲取圖片數(shù)據(jù)的操作,可以從資源,網(wǎng)絡(luò),文件等不同的渠道獲取。
首先,ImageProvider根據(jù)_ImageState中傳遞的圖片配置生成對(duì)應(yīng)的圖片緩存key,然后去ImageCache中查找是否由對(duì)應(yīng)的圖片緩存,如果有,通知刷新對(duì)應(yīng)的UI;如果沒有通過ImageStream異步加載,加載完成后更新緩存,然后通知_ImageState刷新UI。
ImageCache采用的是LRU(Least Recently Used)
首先將項(xiàng)目android目錄下的build.gradle中g(shù)oogle()和jcenter()替換成阿里鏡像地址
修改本地的flutter配置文件,flutter安裝目錄下找到packages/flutter_tools/gradle/flutter.gradle文件,repositories 修改為
將 MAVEN_REPO 地址替換為
修改 packages/flutter_tools/gradle/resolve_dependencies.gradle,替換maven地址為
重新運(yùn)行項(xiàng)目,等待一會(huì)就可以正常運(yùn)行。
Flutter 國(guó)內(nèi)鏡像 失效替換:
同上篇文章《九、Flutter水波動(dòng)畫》畫水波原理是一樣的,都是通過畫筆呈現(xiàn)不規(guī)則圖形。this.offsetList是存儲(chǔ)加載的動(dòng)畫里面的實(shí)心圓的坐標(biāo),通過drawCircle方法把坐標(biāo)畫到畫布上。
RoundProgress繼承StatefulWidget通過 Timer刷新頁(yè)面,來(lái)達(dá)到動(dòng)畫的效果。this.w * i / this.numOfMoveView是計(jì)算每個(gè)實(shí)心圓的寬度的,i越小實(shí)心圓的寬度越小,實(shí)心圓就越小。(pi * 2.0 / this.numOfMoveView) * i計(jì)算出弧度,通過弧度計(jì)算出每個(gè)實(shí)心圓的坐標(biāo),保存在this.offsetList里。每個(gè)實(shí)心圓初始化的弧度都保存在了 this.radianList里,循環(huán)第二次,第三次......累計(jì)弧度,每個(gè)實(shí)心圓的坐標(biāo)逐一按弧度偏移,從而所有的實(shí)心圓繞著一個(gè)點(diǎn)旋轉(zhuǎn)。
RoundProgress最重的一個(gè)參數(shù)loading,當(dāng)loading = true加載動(dòng)畫會(huì)在stack里面呈現(xiàn)出來(lái),當(dāng)loading = false加載動(dòng)畫不會(huì)出現(xiàn)在stack里面。
由于RoundProgress繼承了StatefulWidget,從外部就沒有辦法更新RoundProgress數(shù)據(jù)了,可以通過組件間通信。這里使用的是Global Key通信,可以訪問State對(duì)象的公共屬性和方法,從而讓加載動(dòng)畫停止旋轉(zhuǎn),刷新組件。另外還有一種通信方法是ValueNotifier通信,ValueNotifier是一個(gè)包含單個(gè)值的變更通知器,當(dāng)它的值改變的時(shí)候,會(huì)通知它的監(jiān)聽。
總結(jié):這個(gè)加載動(dòng)畫算是初步完成了,基本使用還是可以的,封裝的不夠靈活,可自定義程度比較低。下一篇文章將進(jìn)一步對(duì)加載動(dòng)畫優(yōu)化,并上傳到pub.dev方便大家使用。謝謝收看,點(diǎn)個(gè)贊吧!
分享題目:flutter等待加載,flutter widget 延遲加載
分享URL:http://chinadenli.net/article49/dsihdhh.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、全網(wǎng)營(yíng)銷推廣、面包屑導(dǎo)航、云服務(wù)器、網(wǎng)站建設(shè)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)