gpt4 book ai didi

flutter scrollable.ensurevisible 不能反向工作

转载 作者:行者123 更新时间:2023-12-05 06:06:09 25 4
gpt4 key购买 nike

请查看视频/gif:

enter image description here

我的网页浏览量将使当前选项卡处于事件状态。我需要确保事件选项卡始终可见,即使用户多次滑动屏幕也是如此。它是从左到右工作的。但是当我们尝试从右向左返回时,它的行为并不像预期的那样。

页面 View 文件

         PageView(
controller: pageController,
onPageChanged: (int page) {
_duaWidgetState.currentState.updateBtn(page + 1);
Scrollable.ensureVisible(
_duaWidgetState.currentState.activeBtn.currentContext);
},
children: loaded

带有 ScrollView 文件的TabBarWidget

    GlobalKey activeBtn = GlobalKey();
var _selectedTab = 1;
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.symmetric(vertical: 20),
child: SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(
children: List.generate(widget.numberOfTab,
(index) => tabBarItem(index + 1, widget.numberOfTab, activeBtn)),
),
),
);
}

使用Key的容器

               Container(
key: activeBtn,
margin: EdgeInsets.only(left: 20),
padding: EdgeInsets.symmetric(
vertical: 10,
horizontal: 24,
),

最佳答案

没有人回答我的问题。但是,经过大量的努力和时间。我找到了解决此问题的解决方法。希望这是一个错误,Flutter 团队会在接下来的更新中修复它。

Scrollable.ensureVisible(_duaWidgetState.currentState.activeBtn.currentContext); 

此函数有一个称为对齐的可选参数,可以对其进行调整以确保所选元素/按钮位于视口(viewport)的中心。 (在我的例子中水平居中)。

我的小部件是水平滚动的,所以我需要根据PageView()的结果更新页码,这里是我使用的时候

alignment: 0

从左向右轻扫页面 View ,它工作正常。但是,当我从右向左滑动页面以转到 PageView 小部件中的上一页时,使用这种对齐方式,ensureVisible 无法按预期工作。所选元素/按钮不在 View 中。我试验了一下,发现当我用

aligment: 1

ensureVisible 在从右向左滑动但同时工作正常。当我从左向右滚动时,出现了同样的问题。

最后,我设法采取了一些解决方法来解决此问题。解决方案是将最后一页索引存储在一个变量中,并检查最后一页是否大于新页面然后 alignment: 0 如果最后一页小于新页面 aligment:1 就像那样。

   PageView(
onPageChanged: (int page) {
if (lastPage < page) {
Scrollable.ensureVisible(
_duaWidgetState.currentState.activeBtn.currentContext,

alignment: -0.0100,
);
} else {
Scrollable.ensureVisible(
_duaWidgetState.currentState.activeBtn.currentContext,
(Perfect For font size 24)
alignment: 1.005,
);
}}

希望我的回答对以后的人有所帮助。

关于flutter scrollable.ensurevisible 不能反向工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65845208/

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