繁体   English   中英

如何使用官方 webview_flutter 插件在 flutter 中预加载 webview?

[英]How to preload a webview in flutter using the official webview_flutter plugin?

我正在 flutter 中开发应用程序,但在尝试在 webview 中预加载页面时卡住了。 基本上,该应用程序使用标签栏,其中包含一些带有正常列表视图内容的标签,以及 2 个应包含 webview 作为内容的标签。 知道如何在应用程序加载时预加载 web 视图并在后台保持它们的活动状态,因此当用户在选项卡之间滑动并进入 webview 的选项卡时,站点已经加载并呈现,因此 UX 是无缝的。 我尝试创建 WebView 实例并在应用程序加载时使用 setstate 将其分配给变量,但无济于事。

任何帮助,将不胜感激。

所以你可以尝试做的是:

使用 PageView 将您在 TabBar 中调用的小部件包装起来,如下所示

您还可以通过使用AutomaticKeepAliveClientMixin扩展有状态小部件来确保 WebView 在加载一次后保持活动状态。 在使用它时,请确保您声明:

 bool get wantKeepAlive => true;

编辑:为了在您的应用程序启动时预加载所有页面,您可以在声明 TabBar 的 class 中使用索引堆栈。 包裹正文并像这样调用那里的所有页面:

  Widget build(BuildContext context) {
    return
     Scaffold(
      body:IndexedStack(
              index: _selectedIndex,
              children: _children,
            ),),}

您可以使用 OffStage 小部件包装 webview 并将 offstage 参数设置为 true。 当某些事件被触发并且您准备好显示页面时,将 offstage 参数翻转为 false。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM