gpt4 book ai didi

WebView CustomScrollView + Floating AppBar

转载 作者:IT老高 更新时间:2023-10-28 12:34:36 34 4
gpt4 key购买 nike

我正在尝试创建一个具有 WebView(来自 webview_flutter: ^0.3.5+3)和 AppBar 的屏幕,我想在用户滚动时将其滚动到屏幕外。

我偶然发现了这个 guide并尝试实现类似的东西,但没有骰子。
有没有办法在 CustomScrollView 中使用 WebViewSlivers 或者这还不支持?

如果我在 SliverChildListDelegate 中创建常规小部件(我尝试了 RowTextContainer 等),但没有使用 WebView

@override
Widget build(BuildContext context) {
return Scaffold(
body: CustomScrollView(
slivers: <Widget>[
SliverAppBar(
title: const Text("Heading"),
floating: true,
),
SliverList(
delegate: SliverChildListDelegate([
Container(
child: WebView(
initialUrl: url,
javascriptMode: JavascriptMode.unrestricted,
),
)
]
),
)
],
)
);
}

欢迎任何指针/建议/RTFM。

编辑赏金

jordan-davies 提供的解决方案有效,但非常不稳定。每当 SliverAppBar 滚动离开时,WebView 就会尝试调整自身大小以填充剩余的视口(viewport)。这会造成非常不稳定/缓慢的体验。

@override
Widget build(BuildContext context) {
return CustomScrollView(
slivers: <Widget>[
SliverAppBar(
title: const Text("Heading"),
floating: true,
),
SliverFillRemaining(
child: WebView(initialUrl: "http://stackoverflow.com"),
)
],
);
}

gif of code above
有没有更好的办法?

最佳答案

其实我很想发表评论,但是太长了,放不下

我可以给你我的看法,为什么在插件的当前状态下无法做到这一点,默认情况下,Webview 仅在没有其他 View 声明该手势时才响应拖动手势。 另一方面,像 SliverList 这样的滚动条是使 SliverAppBar 向上滚动所必需的,默认情况下会消耗所有拖动滚动手势 -尽管您可以禁用通过提供 noScrollPhysics - 但是一旦 WebView 覆盖了所有屏幕,实际上就没有办法向 slivers 报告以再次开始使用滚动。

所以解决的办法是修改WebView插件本身,提供拖拽手势回调,希望flutter团队早日实现这个功能。

关于WebView CustomScrollView + Floating AppBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54219987/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com