【发布时间】:2019-01-16 15:08:42
【问题描述】:
我正在尝试创建一个具有 WebView(来自 webview_flutter: ^0.3.5+3)和 AppBar 的屏幕,我想在用户滚动时将其滚动到屏幕外。
我偶然发现了这个 guide 并尝试实现类似的东西,但没有骰子。
有没有办法在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,
),
)
]
),
)
],
)
);
}
欢迎任何指针/建议/RTFM。
编辑赏金
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"),
)
],
);
}
【问题讨论】:
标签: webview flutter flutter-sliver flutter-appbar