我想创建一个屏幕,其中包含一个WebView(来自webview_flutter: ^0.3.5+3),以及一个我希望在用户滚动时可以滚动到屏幕外的AppBar
。
我偶然发现了这个指南,并尝试实现类似的东西,但是没有成功。
是否有一种方法可以在CustomScrollView
中使用Slivers
和WebView
,或者目前还不支持?
如果我在我的SliverChildListDelegate
中创建常规小部件(例如我尝试过Row
、Text
、Container
等),可以使滚动应用栏正常工作,但是对于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,
),
)
]
),
)
],
)
);
}
欢迎任何指针/建议/阅读文档。
编辑悬赏
jordan-davies提供的解决方案可以工作,但很不流畅。
每当SliverAppBar
滚动时,WebView
尝试重新调整大小以填充剩余的视口。这会导致非常不流畅/缓慢的体验。
@override
Widget build(BuildContext context) {
return CustomScrollView(
slivers: <Widget>[
SliverAppBar(
title: const Text("Heading"),
floating: true,
),
SliverFillRemaining(
child: WebView(initialUrl: "http://stackoverflow.com"),
)
],
);
}