Flutter:如何在Webview中显示本地html文件?

时间:2020-06-24 15:49:38

标签: html flutter dart

我在fluttter应用-webview_flutter中使用了此插件。我需要在webview中显示本地html文件。这不是来自资产,但是我有此文件的路径。 我尝试:

  1. 以字符串形式读取文件

    var file = File(_path);
    var data = await file.readAsString(); 
    
  2. 准备字符串

    String _getHtml() { 
       var html = Uri.dataFromString(data, mimeType: 'text/html').toString();
       return html;
    }
    
  3. 在我的网络视图中显示此字符串

    WebView(
       initialUrl: _getHtml(),
    ) 
    

但是我遇到了错误(在步骤Uri.dataFromString上):

enter image description here

如何解决?有提示吗?

1 个答案:

答案 0 :(得分:0)

来自https://pythonprogramming.net/control-camera-sensor-self-driving-autonomous-cars-carla-python/

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());
  }
}