真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

flutter加載慢,Flutter性能優(yōu)化

flutter加載h5很卡

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

創(chuàng)新互聯(lián)技術(shù)團(tuán)隊(duì)十載來(lái)致力于為客戶提供網(wǎng)站建設(shè)、成都做網(wǎng)站、品牌網(wǎng)站制作、網(wǎng)絡(luò)營(yíng)銷推廣、搜索引擎SEO優(yōu)化等服務(wù)。經(jīng)過多年發(fā)展,公司擁有經(jīng)驗(yàn)豐富的技術(shù)團(tuán)隊(duì),先后服務(wù)、推廣了數(shù)千家網(wǎng)站,包括各類中小企業(yè)、企事單位、高校等機(jī)構(gòu)單位。

一種臨時(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)問題。

Flutter混合開發(fā)實(shí)戰(zhàn)

之前開發(fā)了一個(gè)純Flutter的項(xiàng)目,結(jié)果接到個(gè)新的需求需要使用Flutter單獨(dú)開一個(gè)模塊集成到原有的android項(xiàng)目中

下面分享一下如何集成現(xiàn)有的項(xiàng)目和如何繼承以及碰到的問題

1.首先第一步 修改gradle

因?yàn)?Flutter 當(dāng)前僅支持為 x86_64,armeabi-v7a 和 arm64-v8a 構(gòu)建預(yù)編(AOT)的庫(kù) 所以我們需要修改gradle的文件限制 APK 中支持的架構(gòu),從而避免 libflutter.so找不到引起的崩潰

2.新建一個(gè)FlutterModel的工程

2.使用aar文件 因?yàn)樗泄こ探y(tǒng)一使用jenkins打包所以我們放在本地肯定是不合適的

說(shuō)以我們需要 打包aar并上傳服務(wù)器

上傳完成后在android中引用

在開發(fā)中遇到的問題

1.關(guān)于android和Ios中的跳轉(zhuǎn)傳參問題

這個(gè)問題在android端還是比較方便的 但是的在Ios端并不怎么好實(shí)現(xiàn)

最終決定使用flutter_boost來(lái)完成android和Ios與Flutter的通信操作

flutter_boost github地址:

集成文檔:

集成文檔給出了 但是沒有android的 尷尬

下滿分享下android的集成

(1)在flutter的 pubspec.yaml工程中添加

(2)修改android工程

使用本地工程的時(shí)候需要在工程共添加

使用aar的時(shí)候不需要添加

(3)在android工程中添加對(duì)應(yīng)的條狀路由配置

(4)在使用默認(rèn)的flutter_boost啟動(dòng)界面的時(shí)候可能碰到狀態(tài)欄丟失的情況

所以最好集成BoostFlutterActivity寫一個(gè)新的activity方便處理狀態(tài)欄和activity進(jìn)出動(dòng)畫

(5)跳轉(zhuǎn)并傳參

//params 傳多個(gè)參數(shù)可以使用json的形式

2.在flutter中的網(wǎng)絡(luò)框架使用的dio結(jié)果在ios的彈出loading的時(shí)候出現(xiàn)卡頓現(xiàn)象

解決方式:1.服務(wù)換證書 (但是后臺(tái)太忙暫時(shí)沒有支持的人員)

2.ios使用原生的loading解決

3.在使用dio的時(shí)候出現(xiàn)ios部分手機(jī) 網(wǎng)絡(luò)請(qǐng)求緩慢問題

解決方法:請(qǐng)求的時(shí)候使用http 2.0協(xié)議

插件地址:

flutter刷新頁(yè)面的方法

這種方法最常見,但是有些地方引用的話,刷新的成本比較大,刷新的是整個(gè)頁(yè)面,數(shù)據(jù)太多加載太慢的話,會(huì)有閃爍的現(xiàn)象

這種方法類似于iOS中的set方法,通過設(shè)置某個(gè)屬性的時(shí)候,去刷新某個(gè)控件。在flutter中這種刷新方式,是對(duì)上面setState(){}方法的改進(jìn),根本的方法還是setState(){},只不過是通過方法去刷新某個(gè)控件。如下:

首先在pubspec.yaml中添加provider依賴

下面通過provider來(lái)實(shí)現(xiàn)一個(gè)發(fā)送驗(yàn)證碼的案例。

創(chuàng)建一個(gè)TimerModel文件

頁(yè)面布局如下:

Flutter 與 iOS 原生 webView 對(duì)比

本文對(duì)比的是 UIWebView、WKWebView、flutter_webview_plugin(在iOS中使用的是WKWebView)的加載速度,內(nèi)存使用情況。

測(cè)試網(wǎng)頁(yè)打開的速度,只需要獲取 WebView 在開始加載網(wǎng)頁(yè)和網(wǎng)頁(yè)加載完成時(shí)的時(shí)間戳,時(shí)間戳的差即為打開網(wǎng)頁(yè)的時(shí)間

為了使差異更明顯,我們選擇較為復(fù)雜的 新浪首頁(yè) 進(jìn)行加載的對(duì)比,為了減小網(wǎng)絡(luò)對(duì)加載速度的影響,我們讓手機(jī)連接同一個(gè)網(wǎng)絡(luò),分別進(jìn)行 10 次測(cè)試然后取平均值,另外,我們需要關(guān)閉 WebView 的緩存,防止緩存對(duì)加載速度產(chǎn)生影響

下面使筆者進(jìn)行 10 次測(cè)試所得到的數(shù)據(jù)

結(jié)果讓我有點(diǎn)驚訝,一直以為 WKWebView 會(huì)是個(gè)王者。結(jié)果看,速度上 WKWebView 略慢一點(diǎn),不過總體差異不大(該結(jié)果僅僅是測(cè)試新浪的結(jié)果,僅供參考啦)

在這里,筆者又加了一個(gè)測(cè)試,嘗試記錄從 viewController 的 viewDidLoad 到 webview 的 didFinish 時(shí)間,測(cè)試了新浪的數(shù)據(jù),如下:

UIWebViewA : 4970、3808、3815、4250、3556 avg(4079.8) (加載完所有頁(yè)面)

UIWebViewB : 4103、3124、3070、3256、2835 avg(3277.6)(加載sina完畢)

WKWebView : 3672、3032、2892、2912、2739 avg(3049.4)

flutter_webView : 4532、3901、4310、3496、3378 avg(3923.4)

其中可以看到,webView 有兩行,UIWebViewB 的數(shù)據(jù)就是加載 sina 主站的時(shí)間;UIWebViewA 的數(shù)據(jù)是因?yàn)樵诩虞d完 sina 主站之后,新浪又加載了一個(gè) ,所以導(dǎo)致總時(shí)間延長(zhǎng),不過即使按照 UIWebViewB 的數(shù)據(jù)來(lái)比較,也是 wkWebView 略勝一籌。

此處可以看出 flutter_webView 使用的是 wkwebView,所以它吃虧的主要原因是 flutter 包了一層。

結(jié)論:

速度(didStart - didFinish) UIWebView flutter_webview WKWebView

速度(viewDidLoad - didFinish)WKWebView UIWebView flutter_webview

這里查看內(nèi)存使用的是 xcode 的 debug session 中的 memory。

首先看之前測(cè)試時(shí),連續(xù)打開十次新浪的內(nèi)存情況

接著我們?cè)诳匆幌麓蜷_淘寶首頁(yè)的內(nèi)存情況

從圖上可以看出,WKWebView 在內(nèi)存方面有很大的優(yōu)勢(shì)啊,UIWebView 的內(nèi)存是真的傷啊,然后 debug 看了一下 flutter_webView,他使用的就是原生的 webView 。

他相比較原生 WKWebView 的內(nèi)存開銷稍大一點(diǎn),從測(cè)試表現(xiàn)來(lái)看,一般大個(gè) 30 MB 左右。

結(jié)論:內(nèi)存 WKWebView flutter_webview UIWebView

可以在 html5test 中對(duì)瀏覽器的兼容性進(jìn)行評(píng)分,通過測(cè)試發(fā)現(xiàn)得分分別如下

因?yàn)?flutter 里使用的就是 WK,所以和原生的 WKWebView 一樣都是 444 分,比 UIWebView 的 437 略勝一籌

結(jié)論:兼容性 WKWebView = flutter_webview UIWebView

UIWebView : 速度相比較 WKWebView 稍快一點(diǎn),但是內(nèi)存是一大硬傷,所以只要條件允許,就不推薦使用了

WKWebView : 速度略慢一點(diǎn),不過差別不大,總體可以接受。是比UIWebView更好的選擇,推薦使用。

flutter_webView_plugin :在iOS中使用的就是原生的WKWebView,所以總體和 native WKWebView 表現(xiàn)差不多。如果是混編項(xiàng)目中,因?yàn)樗话艘粚?,所以?yè)面加載上存在一定的劣勢(shì),所以混編項(xiàng)目中仍然推薦使用 WKWebView。不過如果從多端考慮、以及項(xiàng)目可遷移等,那么使用也未嘗不可,就是維護(hù)成本要增加一些,需要維護(hù)兩套 webView。這個(gè)就需要根據(jù)自己的情況自己取舍了。

Flutter下載jar速度慢

文章轉(zhuǎn)自:

用Android Stduio創(chuàng)建Flutter項(xiàng)目的時(shí)候,會(huì)出現(xiàn)各種問題,踩了一個(gè)又一個(gè),最后編譯的時(shí)候可能會(huì)出現(xiàn)一直顯示Running Gradle task 'assembleDebug'然后就不動(dòng)了,或者會(huì)顯示Could not resolve io.flutter等問題,歸根結(jié)底是網(wǎng)絡(luò)無(wú)法訪問到Google服務(wù)引起的,兩種解決方案:

1.具有比較良好的訪問谷歌的網(wǎng)絡(luò)環(huán)境

2.修改鏡像源為國(guó)內(nèi)的:

找到Flutte SDK目錄下的Flutter打包配置文件flutter.gradle

路徑為flutter\packages\flutter_tools\gradle\flutter.gradle

第一處配置:

buildscript {

repositories {

//注釋

// google()

// jcenter()

//添加

maven { url ' ' }

maven { url ' ' }

maven { url ' ' }

}

dependencies {

classpath 'com.android.tools.build:gradle:3.5.0'

}

}

第二處配置:

class FlutterPlugin implements PluginProject {

//注釋

// private static final String MAVEN_REPO = " ";

//添加這行

private static final String MAVEN_REPO = " ";

第三處配置:

void addFlutterDependencies(buildType) {

String flutterBuildMode = buildModeFor(buildType)

if (!supportsBuildMode(flutterBuildMode)) {

return

}

String repository = useLocalEngine()

? project.property('local-engine-repo')

: MAVEN_REPO

最后一處,項(xiàng)目中的配置,修改Flutter項(xiàng)目下的android下的build.gradle:

buildscript {

ext.kotlin_version = '1.3.50'

repositories {

// google()

// jcenter()

maven { url ' ' }

maven { url ' ' }

maven { url ' ' }

}

}

allprojects {

repositories {

// google()

// jcenter()

maven { url ' ' }

maven { url ' ' }

maven { url ' ' }

}

}

修改完成后,再build,就可以正常構(gòu)建了?。?!

Flutter 異步加載數(shù)據(jù),UI卡頓

記錄下坑

一開始我就使用Future、async、await去做異步操作,以為這樣能解決問題,經(jīng)過一天研究發(fā)現(xiàn)他們都還在同一個(gè)線程里面,也就是UI線程,導(dǎo)致卡頓,這明顯不是我們想要的異步加載數(shù)據(jù)。

Dart真正的線程叫隔離(Isolate)

難受香菇

有點(diǎn)心累,記錄下吧。


本文名稱:flutter加載慢,Flutter性能優(yōu)化
新聞來(lái)源:http://weahome.cn/article/dscdcsj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部