flutter - 如何将完成者重置为未来
问题描述
我正在使用flutter的官方WebView。
Completer<WebViewController> _controller = Completer<WebViewController>(); //State class variable
return WebView(
key: widget.key,
javascriptMode: JavascriptMode.unrestricted,
initialUrl: "$baseUrl/course.html",
onWebViewCreated: (WebViewController webViewController) {
_controller.complete(webViewController); // here is the problem
},
onPageFinished: (url) {
_showPageTitle();
},
javascriptChannels: <JavascriptChannel>[createChannel()].toSet(),
);
当我最初进入屏幕时工作正常,但是当我进行后按和前按时,我得到了
Unhandled Exception: Bad state: Future already completed
#0 _AsyncCompleter.complete (dart:async/future_impl.dart:43:31)
所以我_controller
的已经完成了。就好像屏幕保持着_controller
.
我尝试使用 UniqueKey ,WebView
但没有奏效。有什么我可以做的吗,dispose
或者willPopScope
如何让完成者“不完整”因为需要一个更好的短语!
解决方案
您是否每次都尝试重新分配它?
Widget build(BuildContext context) {
_controller = new Completer<WebViewController>();
return WebView(
...
推荐阅读
- c# - getoledbschematable 需要一个打开且可用的连接。连接的当前状态为关闭
- java - 在java中收集arraylist的更快方法
- python - 如何在 django 多个数据库中处理异常
- excel - VBA Cdate 解释 DD-MM-YYYY
- mysql - 如何将表记录与SQL表中的某些条件结合起来?
- javascript - 从函数访问 JavaScript 对象变量
- vba - VBA - 根据包含日期的单元格值复制和粘贴循环
- java - POJO的“部分”排序列表
- android - 如何在 XML android 和 dart Flutter 中结合 java native
- java - Neo4j 插件递归