Flutter WebView加載本地html的問題

  • 目前項目中使用webview_flutter0.3.9,安卓端加載本地html沒有問題,ios端無法加載本地html,查看源碼發(fā)現(xiàn)沒有做適配,解決辦法修改插件中ios端源碼
    打開ios>Classes下的FlutterWebView.m,大概281行代碼修改成
- (bool)loadUrl:(NSString*)url withHeaders:(NSDictionary<NSString*, NSString*>*)headers {
  NSURL* nsUrl = [NSURL URLWithString:url];
  if (!nsUrl) {
    return false;
  }
  NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:nsUrl];
  [request setAllHTTPHeaderFields:headers];
//判斷是url,然后使用不同的加載方式
  if([url hasPrefix:@"http"]) {
      [_webView loadRequest:request];
  }else{
      [_webView loadFileURL:nsUrl allowingReadAccessToURL:[nsUrl URLByDeletingLastPathComponent]];
  }
  return true;
}

修改后使用

WebView(
    //加載本地文件使用file://開頭,網(wǎng)絡的正常使用
    initialUrl: "file://xxxx/xxx/xxx/html",
    javascriptMode: JavascriptMode.unrestricted,
    onPageFinished: (url) {},
    onWebViewCreated: (WebViewController controller) {},
)
  • 如果url中有空格ios是加載不出來的,需要轉(zhuǎn)義后在使用:
//Uri.encodeFull()會把空格轉(zhuǎn)義成%20%,轉(zhuǎn)義后安卓和ios都能使用
WebView( initialUrl: Uri.encodeFull(url))
  • 目前android端使用webview_flutter鍵盤無法呼起還是無解,實在需要可以使用flutter_webview_plugin,他的局限是無法很好的嵌入頁面中。
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容