flutter

Flutter 加载本地HTML

2021-04-07  本文已影响0人  一只哈哈
///获取打包后的资源文件实际路径
///如assets/files/index.html
String getAssetsPath(String path) {
  if (Platform.isAndroid) {
    return 'file:///android_asset/flutter_assets/' + path;
  } else {
    return 'file://Frameworks/App.framework/flutter_assets/' + path;
  }
}

使用


image.png

android设备上已经可以正常显示本地html页面了,但是IOS设备还需要修改下插件IOS部分的源码,FlutterWebView.m文件:

image.png
//判断url的加载方式
if([url hasPrefix:@"http"]) {
    [_webView loadRequest:request];
}else{
    // 我自己项目中传过来的路径中含有@"file://",所以需要替换为空,实际应以当前项目为主
    url = [url stringByReplacingOccurrencesOfString:@"file://" withString:@""];
    if (@available(iOS 9.0, *)) {
        NSURL *findUrl = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] bundlePath], url]];

        [_webView loadFileURL:findUrl allowingReadAccessToURL:[findUrl URLByDeletingLastPathComponent]];
    } else {
        // Fallback on earlier versions
        NSLog(@"webview_flutter:  loadFileUrl error");
    }
}

android 跨域问题


image.png

FlutterWebView.java 添加代码

webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
webView.getSettings().setAllowFileAccessFromFileURLs(true);
上一篇下一篇

猜你喜欢

热点阅读