Flutter 颤振-如何在WebViewScaffold中加载本地HTML文件?

Flutter 颤振-如何在WebViewScaffold中加载本地HTML文件?,flutter,dart,webview,Flutter,Dart,Webview,我正在尝试在我的webviewscapold中加载一个本地HTML文件,但是我没有插件webview\u flatter提供的onwebviewscreated回调。我无法使用该依赖项,因为我希望访问webview\u flight不提供的webview回调的状态侦听器。有人能告诉我如何加载本地文件吗? 这是我当前的实现- final Set<JavascriptChannel> jsChannels = [ JavascriptChannel(

我正在尝试在我的
webviewscapold
中加载一个本地HTML文件,但是我没有插件
webview\u flatter
提供的
onwebviewscreated
回调。我无法使用该依赖项,因为我希望访问
webview\u flight
不提供的webview回调的状态侦听器。有人能告诉我如何加载本地文件吗? 这是我当前的实现-

   final Set<JavascriptChannel> jsChannels = [
      JavascriptChannel(
          name: 'Print',
          onMessageReceived: (JavascriptMessage message) {
            print(message.message);
          }),
    ].toSet();
    
    void main() {
      WidgetsFlutterBinding.ensureInitialized();
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      final flutterWebViewPlugin = FlutterWebviewPlugin();
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter WebView Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          routes: {
            '/': (_) => const MyHomePage(),
            '/widget': (_) {
              return WebviewScaffold(
                url: selectedUrl,  // How to load a local file here?
                javascriptChannels: jsChannels,
                mediaPlaybackRequiresUserGesture: false,
                appBar: AppBar(
                  title: const Text('Widget WebView'),
                ),
                withZoom: true,
                withLocalStorage: true,
                hidden: true,
                initialChild: Container(
                  color: Colors.redAccent,
                  child: const Center(
                    child: Text('Waiting.....'),
                  ),
                ),
            },
          },
        );
      }
    }
final Set jsChannels=[
JavascriptChannel(
名称:'打印',
onMessageReceived:(JavascriptMessage消息){
打印(message.message);
}),
].toSet();
void main(){
WidgetsFlutterBinding.ensureInitialized();
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
最终的FlatterWebViewPlugin=FlatterWebViewPlugin();
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“颤振网络视图演示”,
主题:主题数据(
主样本:颜色。蓝色,
),
路线:{
“/”:(\u)=>const MyHomePage(),
“/widget”:(uux){
返回WebviewScaffold(
url:selectedUrl,//如何在此处加载本地文件?
JavaScriptChannel:JSChannel,
MediaPlaybackRequireservesture:false,
appBar:appBar(
标题:const Text('Widget WebView'),
),
withZoom:true,
withLocalStorage:true,
隐藏:是的,
initialChild:容器(
颜色:Colors.redAccent,
孩子:康斯特中心(
子项:文本('Waiting…'),
),
),
},
},
);
}
}

您可以从用户手机加载本地HTML文件,如下所示:

。。。
url:Uri.dataFromString(
文件('filePath')。readAsStringSync(),
mimeType:'text/html',
).toString(),
...
如果您想从应用程序包(assets文件夹中的html文件)中打开html文件,您可以这样做:

。。。
url:Uri.dataFromString(
等待rootBundle.loadString('assets/index.html'),
mimeType:'text/html',
).toString(),
...

注意:您必须像其他资产一样在
pubspec.yaml
资产部分声明html文件。

您可以从用户手机加载本地html文件,如下所示:

。。。
url:Uri.dataFromString(
文件('filePath')。readAsStringSync(),
mimeType:'text/html',
).toString(),
...
如果您想从应用程序包(assets文件夹中的html文件)中打开html文件,您可以这样做:

。。。
url:Uri.dataFromString(
等待rootBundle.loadString('assets/index.html'),
mimeType:'text/html',
).toString(),
...

注意:您必须像其他资产一样在
pubspec.yaml
assets部分声明html文件。

当我放置我的文件路径时,它表示找不到目录?我将我的文件路径放置为assets/tr.htmlI必须
import'package:flatter/services.dart'show rootBundle;
但它仍然无法编译,因为:
等待表达式可以只能在异步函数中使用。
操作代码
返回WebviewScaffold(
没有异步-小部件是否需要以某种方式重新构造?当我放置我的文件路径时,它表示找不到目录?我将我的文件路径作为资产/tr.htmlI必须
导入“包:flift/services.dart”show rootBundle;
但它仍然不会编译,因为:
等待表达式只能在异步函数中使用。
操作代码
返回WebviewScaffold(
没有异步-小部件是否需要以某种方式重新构造?