gpt4 book ai didi

flutter - 本 map 片文件可以和webview_flutter一起使用吗?

转载 作者:行者123 更新时间:2023-12-05 05:50:11 29 4
gpt4 key购买 nike

背景

我正在使用 webview_flutter 3.0.0 来呈现我实时创建的复杂 HTML 字符串。所以它不是从网络加载的内容。我这样做如下:

  final Completer<WebViewController> _controller =
Completer<WebViewController>();
late WebViewController _con;

var finalThreadHTML;

_loadHTML() async {

finalThreadHTML = createComplexHTMLStringInRealTime();

}

_con.loadUrl(Uri.dataFromString(
setThreadHTML(
finalThreadHTML
),
mimeType: 'text/html',
encoding: Encoding.getByName('utf-8')
).toString());
}

然后在我的 UI 中

     WebView(
initialUrl: '',
javascriptMode: JavascriptMode.unrestricted,
javascriptChannels: <JavascriptChannel>[
JavascriptChannel(
name: 'MessageInvoker',
onMessageReceived: (s) {
}),
].toSet(),
onWebViewCreated: (WebViewController webViewController) {
_con = webViewController;
_loadHTML();
},
onProgress: (int progress) {
print("WebView is loading (progress : $progress%)");
},
navigationDelegate: (NavigationRequest request) {
if (request.url.startsWith('https://www.youtube.com/')) {
print('blocking navigation to $request}');
return NavigationDecision.prevent;
}
print('allowing navigation to $request');
return NavigationDecision.navigate;
},
onPageStarted: (String url) {
print('Page started loading: $url');
},
onPageFinished: (String url) {
print('Page finished loading: $url');
},
gestureNavigationEnabled: true,
)

我的实时 HTML 字符串 (createComplexHTMLStringInRealTime() ) 看起来像这样:

String createComplexHTMLStringInRealTime(){
return ('''
<html>
<head>

<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
</head>

<body style="height:100vh;">
Testing some stuff
<img src="/images/blankAvatar.jpg" />
Testing more stuff
</body>
</html>

''');
}

我的问题

在我形成的 HTML 字符串中,我想包含一些图像,这些图像是 pubspec.yaml 中定义的本地 Assets 文件

所以我尝试这样做:

<img src="/images/blankAvatar.jpg" />

但是那没有加载任何东西,然后我尝试了

<img src="file:///images/blankAvatar.jpg" />

仍然没有。

无论如何,是否有加载本地文件与我生成的文本内联以将本地文件加载到 webview 中?

最佳答案

img 标签中的本地镜像可以在 webview_flutter 中显示,您需要调整 Controller 以加载方案中的 (HTML) uri 而不是数据中的 uri。

_con.loadUrl(Uri(scheme: 'file', path: file.path).toString());

enter image description here

关于flutter - 本 map 片文件可以和webview_flutter一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70551983/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com