我有大量 mp3 文件 (+3GB) 需要包含在我为 Android 和 iOS 编写的应用程序中,以便离线使用。由于 Google Play Bundle 不能大于 2GB,自然我需要在初始应用程序运行时将这些 mp3 文件下载到本地目录。我已经编写了一个 html 网页,其中包含选择和播放具有同步屏幕文本和背景的 mp3 文件所需的所有功能。我还成功地使用 webview_flutter 离线加载和测试了我的网页,在资产目录中加载了一组有限的 mp3 文件。现在我需要包含所有 +3GB 的 mp3 文件,所以我已将它们下载到 ApplicationSupportDirectory,但似乎 webview_flutter 无法播放此目录中的 mp3 文件。我尝试将它们放在 ApplicationSupportDirectory 中,ApplicationDocumentsDirectory 或 ExternalStorageDirectory,但它们都不能从 webview_flutter 的页面访问。我还尝试将我的 index.html 加载到这些非资产目录中,但即使使用 Permission.storage.request() 并且在 manifest.xml 中声明了 READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE、INTERNET 的权限,也会出现文件权限错误。现在用完了选项,您知道是否可以从 webview_flutter 中加载的网页链接非资产文件?加载字符串到 webview 方法可能不起作用,因为我在页面中链接了音频和 javascript。希望你们中的一些人能给我指明一个方向。先感谢您。html 进入这些非资产目录,但即使使用 Permission.storage.request() 并在 manifest.xml 中声明了 READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE、INTERNET 的权限,也会出现文件权限错误。现在用完了选项,您知道是否可以从 webview_flutter 中加载的网页链接非资产文件?加载字符串到 webview 方法可能不起作用,因为我在页面中链接了音频和 javascript。希望你们中的一些人能给我指明一个方向。先感谢您。html 进入这些非资产目录,但即使使用 Permission.storage.request() 并在 manifest.xml 中声明了 READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE、INTERNET 的权限,也会出现文件权限错误。现在用完了选项,您知道是否可以从 webview_flutter 中加载的网页链接非资产文件?加载字符串到 webview 方法可能不起作用,因为我在页面中链接了音频和 javascript。希望你们中的一些人能给我指明一个方向。先感谢您。你知道是否可以从 webview_flutter 中加载的网页链接非资产文件?加载字符串到 webview 方法可能不起作用,因为我在页面中链接了音频和 javascript。希望你们中的一些人能给我指明一个方向。先感谢您。你知道是否可以从 webview_flutter 中加载的网页链接非资产文件?加载字符串到 webview 方法可能不起作用,因为我在页面中链接了音频和 javascript。希望你们中的一些人能给我指明一个方向。先感谢您。
问问题
17 次
1 回答
0
找到了我自己的答案:需要在 webview_flutter 和非资产目录之间设置一个服务器。我使用包 local_assets_server.dart 并使用 LocalAssetsServer() 中的 rootDir 参数来调用并指向本地目录路径。可能需要将assetBasePath 保留为空白。当 webview_flutter 从这个服务器加载时,它会加载这个 rootDir 路径中的 index.html。
_initServer() async{
final server = new LocalAssetsServer(
address: InternetAddress.loopbackIPv4,
assetsBasePath: '',
rootDir: rootPath,
);
print('rootDir for server init to $rootPath');
final address = await server.serve();
print('init server address: $address');
setState(() {
this.address = address.address;
port = server.boundPort;
print('server port: $port');
isListening = true;
});
}
于 2021-05-23T01:13:25.200 回答