【发布时间】:2020-10-15 23:39:40
【问题描述】:
我有一个 CustomScrollView 和一个隐藏在滚动条上的 SliverAppBar。
应用栏上有一个搜索按钮,按下该按钮时,会将TextField 放入应用栏中。
当字段获得焦点时,它会导致滚动视图一直滚动到顶部,并且应用栏卡在“不安全”区域:
Scaffold docs 提到,当显示键盘时,脚手架的插图发生变化并重建脚手架,导致“如果焦点小部件位于可滚动容器内,则会滚动到视图中”。
这似乎是我不想要的行为。我看了但无法理解机制或如何抑制它。这样做可以吗?
图片中视图的源代码为here。
我还注意到,这个问题在我之前使用非 sliver 标准小部件的实现中没有发生。我怀疑这是因为应用栏不在可滚动视图中,而 SliverAppBar 位于 CustomScrollView 内部,因此它可以与主体交互。
【问题讨论】:
-
不确定这是否能解决问题,但尝试使用
floating: true, pinned: true, snap: true制作应用栏。 Doc Reference -
我不想将其固定,因此即使解决了滚动和/或安全区域问题,它仍然无法解决我的问题。
-
好的。只是问,再次设置
pinned: false,会出现滚动/安全区域问题? -
上面的 gif 显示了
pinned: false的情况。pinned: true案例将应用栏锁定在正确的位置,但下方的内容仍在滚动,并且滚动到稍微错误的偏移量(逐栏重叠)。
标签: flutter focus flutter-appbar flutter-scaffold