当前位置: 首页 > 知识库问答 >
问题:

如何使用flutter dart webview渲染本地超文本标记语言文件

曹光霁
2023-03-14

我想使用flatter和dart在webview中呈现存储在手机内存中的本地HTML文件。

共有3个答案

呼延凌
2023-03-14

@suragch,你的代码在发布时不起作用,它说localUrlnull上被调用。_loadHtmlFromAssets需要在分配控制器后调用:

onWebViewCreated: (WebViewController webViewController) {
  _controller = webViewController;
  _loadHtmlFromAssets();
}

那么它就可以正常工作了:)

冯永长
2023-03-14

你可以传递一个数据URI

Uri.dataFromString('<html><body>hello world</body></html>', mimeType: 'text/html').toString()

或者,您可以在Flutter中启动一个Web服务器,并传递一个指向服务器提供文件的IP/端口的URL。

另请参见中的讨论https://github.com/fluttercommunity/flutter_webview_plugin/issues/23

看见https://flutter.io/docs/development/ui/assets-and-images#loading-有关如何从资源加载字符串的文本资源。

有关如何读取其他文件,请参阅https://flutter.io/docs/cookbook/persistence/reading-writing-files。

明财
2023-03-14

我正在使用来自颤振团队的webview_颤振插件。

>

dependencies:
  webview_flutter: ^0.3.20+2

将html文件放入assets文件夹(参见此)。我叫它“帮助”。html。

在代码中获取html字符串并将其添加到webview中。

import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:webview_flutter/webview_flutter.dart';


class HelpScreen extends StatefulWidget {
  @override
  HelpScreenState createState() {
    return HelpScreenState();
  }
}

class HelpScreenState extends State<HelpScreen> {
  WebViewController _controller;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Help')),
      body: WebView(
        initialUrl: 'about:blank',
        onWebViewCreated: (WebViewController webViewController) {
          _controller = webViewController;
          _loadHtmlFromAssets();
        },
      ),
    );
  }

  _loadHtmlFromAssets() async {
    String fileText = await rootBundle.loadString('assets/help.html');
    _controller.loadUrl( Uri.dataFromString(
        fileText,
        mimeType: 'text/html',
        encoding: Encoding.getByName('utf-8')
    ).toString());
  }
}
  • 我需要将编码设置为UTF-8,因为非ASCII字符崩溃了。
  • 在iOS你需要添加键io.flutter.embedded_views_preview作为true在nfo.plist文件中。检查文档,了解此需求的任何更新。
  • Flutter中WebView的力量
 类似资料:
  • 我试图在HTML的pre标签中包装文本,但它不起作用。我使用下面的CSS作为我的标签。 我从如何在pre标记中换行文本? 我已添加

  • 对于上面的html内容,我如何使用Jsoup解析并获取文本 当我使用 我得到了这样的东西

  • 我正在尝试使用BeautifulSoup转换HTML文本块。以下是一个示例: 我试着做了这样的事情: ...但是这样我的span元素总是在新行上。这当然是一个简单的例子。有没有办法在超文本标记语言页面中获取文本,就像它在浏览器中呈现的方式一样(不需要css规则,只是div、spans、li等元素呈现的常规方式)在Python中?

  • 我正在尝试使用放心来检查服务器返回的HTML文档的一些属性。演示该问题的SSCCE如下所示: 现在,此尝试以,这是由所有可能的错误大约 30 秒左右后超时! 如果我用< code>xmlPathConfig()删除这一行。用()。功能(...)当特性“http://Apache . org/XML/features/disallow-DOCTYPE-decl”设置为true时,由于< code>D

  • 我是新来的。我想解析html,但问题是我们必须在中指定的URL,我将在运行时从其他页面响应此URL。有没有办法将收到的网址传递到中?我读过这样的东西: 但是我不知道如何使用它。我很想知道是否有其他方法比jsoup更好。

  • 这个头衔实际上是我实现目标的失败尝试。具体来说,我想1。从main转到页面。html(例如,到page1.html) 2。在第1页的表单中收集数据 3。提交时,转到第2页。html(它使用PHP将数据保存到数据库并宣布结果) 4。单击“确定”并返回主菜单页<似乎很合理,对吧? 上面的第4步是我的问题。 我尝试过的事情: 1.在page2中的Ok单击调用history.back。 这将转到page1