gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 04:20:51 37 4
gpt4 key购买 nike

我正在尝试在WebViewScaffold中加载本地HTML文件,但是我没有插件onWebViewCreated提供的webview_flutter回调。我无法使用这种依赖关系,因为我想访问webview_flutter不提供的Web View 的回调的状态侦听器。谁能告诉我如何加载本地文件?
这是我当前的实现-

   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.....'),
),
),
},
},
);
}
}

最佳答案

您可以像下面这样从用户的电话加载本地HTML文件:

...
url: Uri.dataFromString(
File('filePath').readAsStringSync(),
mimeType: 'text/html',
).toString(),
...
如果您想从应用程序包中打开一个html文件( Assets 文件夹中的html文件),则可以这样操作:
...
url: Uri.dataFromString(
await rootBundle.loadString('assets/index.html'),
mimeType: 'text/html',
).toString(),
...
注意:您必须像其他 Assets 一样在 pubspec.yaml Assets 部分中声明html文件。

关于flutter - Flutter-如何在WebViewScaffold中加载本地HTML文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62699155/

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