关闭应用后在iOS上的应用中打开html文件时,随机呈现空白屏幕

时间:2020-02-27 14:32:49

标签: flutter

我有一个显示在电子邮件客户端中打开的html文件的应用程序。我正在使用MethodChannel将发送数据从MainActivity / AppDelegate发送到main.dart,将文件保存到存储中并在其中打开webview。我的main.dart在这里https://github.com/akravets/sandbox/blob/master/main.dart

html文件很大-20至30 MB。打开附件时,一切正常,但是在关闭应用程序并尝试打开附件后,出现黑屏。之后我可以打开另一个文件,但是关闭应用程序后第一次打开总是失败。

相关代码可以在这里:

    String fileName = data.substring(0, indexOfSeparator);
    String content = data.substring(indexOfSeparator + 3);

    if (_fileName != fileName) {
      setState(() {
        _fileName = fileName;
        writeLog("Setting fileName in state: $fileName");
      });
    }

    final file = await _localFile(fileName);

    writeData(file, content).then((f) {
     writeLog("File write OK, reloading webView with file ${file.path}");
     flutterWebviewPlugin.reloadUrl('file://${file.path}');
   }

任何想法在这里可能是什么问题?

1 个答案:

答案 0 :(得分:0)

这里的问题是我正在设置状态并调用flutterWebviewPlugin.reloadUrl('file:// $ {file.path}');之后。我怀疑发生的事情是状态会改变,构建会被调用,但是webView的重新加载不会正确发生-出现计时问题。解决问题的方法是更改​​webView侦听器的状态,以便在所有数据准备就绪后触发构建

 flutterWebviewPlugin.onUrlChanged.listen((String url) {
    setState(() {
      _fileName = fileName;
      writeLog("Setting fileName in state: $fileName");
    });
  });