我使用本地HTML字符串,其中我使用assets/html目录中的style.css:
final String html = """ <!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="assets/html/style.css">
</head>
<body>
<h2>Simple HTML with External CSS</h2>
<p class="blue">This is a blue color paragraph</p>
<p class="red">This is a red color paragraph</p>
<p class="green">This is a green color paragraph</p>
</body>
</html> """;
CSS文件是:
body{
background-color:lavender;
text-align: center;
}
h2{
font-style: italic;
size: 30px;
color: #f08080;
}
p{
font-size: 20px;
}
.blue{
color: blue;
}
.red{
color: red;
}
.green{
color: green;
}
WebViewPlus的代码是:
return Scaffold(
backgroundColor: Colors.blue,
body: WebViewPlus(
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (controller) {
controller.loadString(html);
},
)
);
结果只是一个简单的文本,而不使用style.css文件。我应该如何从assets文件夹引用css文件?href=”“应该使用什么<LOCATION_OF_CSS>
我修改了pubspec.yaml以包含assets/html文件夹。
谢谢!
2条答案
按热度按时间v8wbuo2f1#
要在HTML中使用CSS内容,您可以使用标记替换标记,并将CSS内容直接包含在HTML字符串中。
下面是一个如何修改HTML字符串以包含CSS内容的示例:
在此修改后的代码中,标记被替换为标记,CSS内容(cssContent)使用字符串插值('$cssContent')包含在标记中。
现在,当WebView加载修改后的HTML时,它将直接在HTML文档中应用CSS样式。
注意:确保CSS文件(style.css)包含有效的CSS语法,以避免渲染出现任何问题。
5us2dqdw2#
要从Flutter WebView中的assets文件夹引用CSS文件,您需要使用数据:URL方案。以下是如何修改代码以正确加载CSS文件:
首先,确保style.css文件包含在assets部分下的pubspec.yaml文件中:
接下来,使用以下数据更新HTML字符串以引用CSS文件:URL方案:
在上面的代码中,File('assets/html/style.css').readAsBytesSync()从assets文件夹加载CSS文件,并将其base64Encode编码为base64字符串。
现在,当您使用controller.loadString(html)在WebView中加载HTML字符串时,CSS文件将被正确引用并应用于HTML内容。
注意:确保CSS文件位于相对于pubspec.yaml文件的assets/html/style.css。
通过这些修改,WebView应该使用CSS文件中定义的样式呈现HTML内容。