在Flutter保持一条路线的活力



我有一个flutter应用程序,可以在其中看到几张卡。这些卡片是可点击的,将显示一个带有自定义查看器的InAppWebView,该查看器存在于我链接到的网站上。然而,加载这个InAppWebView对应用程序来说相当费力,我想尽可能多地预加载它。

很难给出很多细节,因为这是与工作相关的,因此是私人信息,所以我不能太具体。我也是这里唯一一个与Flutter合作的人,所以同事们不会给我任何建议。

我希望通过在后台打开InAppWebView,然后切换到正确的路由,而不是从头开始初始化,来减少它的加载时间。这里的问题是URL会更改,但这可以在视图中处理,而不是创建一个全新的InAppWebView。

简而言之:如何在Flutter应用程序的后台创建小部件/路由,并在必要时交换到它?

为此使用IndexedStack。

创建要交换的小部件列表(并保持其状态(

final viewRoutes = const <Widget>[
Screen1(),
Screen2(),
Screen3(),
];

然后使用IndexedStack交换

@override
Widget build(BuildContext context) {
return Scaffold(
body: IndexedStack(
index: 0, // <--- change this depending on the page
),
);
}

也许您可以使用StackVisibility小部件?像这样:

bool _isWebPageVisible = false;
Stack(
children: <Widget>[
MainWidget(),
Visibility(
visible: _isWebPageVisible,
child: WebPageWidget()
]
)

您可以随时更改_isWebPageVisible。当可见时,WebPageWidget将出现在MainWidget的上方。

相关内容

  • 没有找到相关文章

最新更新