我正在使用WebviewScaffold
软件包中的抖动flutter_webview_plugin
的非常简单的实现。
当我弹出嵌入Webview支架的屏幕时,首先弹出屏幕,然后Webview在屏幕上停留1/2秒,然后弹出。我是不是做错什么了?
class _EYWebviewPageState extends State<EYWebviewPage> {
@override
void initState() {
super.initState();
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
return WebviewScaffold(
appBar: CupertinoNavigationBar(
leading: CupertinoButton(
padding: EdgeInsets.zero,
child: Image.asset('assets/img/navigation/common/close-icon.png'),
onPressed: () => Navigator.of(context).pop(true),
),
),
url: widget.url,
clearCache: true,
appCacheEnabled: true,
withJavascript: true,
withLocalStorage: true,
hidden: true,
);
}
}
答案 0 :(得分:1)
CupertinoNavigationBar
需要CupertinoPageScaffold。但是WebviewScaffold
使用Scaffold
。这就是为什么您要观察这种行为。
您可以使用AppBar
代替CupertinoNavigationBar
。
答案 1 :(得分:0)
解决方案是合并WillPopScope
以便在弹出屏幕时关闭插件。另外,使用maybePop() instead of pop()
这是完整版本:
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async {
await FlutterWebviewPlugin().close(); // Close the plugin so that it doesn't overlay anymore
return true;
},
child: WebviewScaffold(
appBar: CupertinoNavigationBar(
leading: CupertinoButton(
padding: EdgeInsets.zero,
child: Image.asset('assets/img/navigation/common/close-icon.png'),
onPressed: () => Navigator.maybePop(context),
),
),
url: widget.url,
),
);
}
}