gpt4 book ai didi

flutter - 如何从 Flutter WebView 访问本地 CSS、JS 和图像

转载 作者:行者123 更新时间:2023-12-03 02:43:26 25 4
gpt4 key购买 nike

我正在尝试在本地 HTML 文件中嵌入图像。并尝试通过 flutter review 加载该 HTML 文件。网页文本正在显示,但没有显示本地引用的图像。

WebView

class _HomeState extends State<Home> {
WebViewController _webViewController;
@override
Widget build(BuildContext context) {
return Container(
color: Colors.orange,
child: WebView(
initialUrl: "",
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (controller){
_webViewController = controller;
_loadHtmlFromAssets();
},
),

);
}

_loadHtmlFromAssets() async {
String fileHtmlContents = await rootBundle.loadString("assets/test.html");
_webViewController.loadUrl(Uri.dataFromString(fileHtmlContents,
mimeType: 'text/html', encoding: Encoding.getByName('utf-8'))
.toString());
}
}

html

<h1>Hellop</h1>
<img src="myimage.jpg">

最佳答案

您可以使用 flutter_inappwebview插件。首先在您的 pubspec.yaml 中定义 Assets 目录

  assets:
- assets/index.html
- assets/img/

创建用于内容交付的本地服务器。
InAppLocalhostServer localhostServer = new InAppLocalhostServer();

运行服务器
void main() async {
await localhostServer.start();
runApp(MyApp());
}

添加 InAppWebView在您的小部件树中。
  @override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: InAppWebView(
initialUrl: "http://localhost:8080/assets/index.html",
initialOptions: InAppWebViewWidgetOptions(
inAppWebViewOptions: InAppWebViewOptions(
debuggingEnabled: true,
)
),
),
);
}

停止服务器
  @override
void dispose() {
localhostServer.close();
super.dispose();
}

我创建了一个示例项目,您可以在此处找到 https://github.com/zakir01913/flutter_webview_with_local_assest

关于flutter - 如何从 Flutter WebView 访问本地 CSS、JS 和图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56787422/

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