我正在使用如下所示的选择器小部件:
它的构建方法没有问题,只有在值发生变化时才调用它。但是当我使用 Devtools 或者 Android Studio 来跟踪小部件重建时,它显示在滚动列表或任何其他支持滚动的小部件中滚动时 Selector 本身将重建。
是的,Selector 直到值改变才会调用构建方法,但这正常吗?
使用 Devtools:
如您所见,其他 (2) 个选择器没有被触发,但它们仍然被重建了。
如果你没有理解我的话,我可以在评论区另外解释一遍。
使用 Devtools:
![enter image description here](https://istack.dev59.com/k4dc9.webp)
如果你没有理解我的话,我可以在评论区另外解释一遍。
bool isHideHomeScreenTabBar = false;
void hideShowTabBar(ScrollDirection scrollDirection) {
isHideHomeScreenTabBar = scrollDirection == ScrollDirection.reverse;
notifyListeners();
}
在我的主屏幕上:
_scrollController.addListener(() {
Provider.of<AppProvider>(context, listen: false).hideShowTabBar(
_scrollController.position.userScrollDirection);
});
所以基本上,提供者会在我滚动时通过changenotifier触发,选择器被通知并重新构建自己,但如果值没有改变,选择器不会触发构建方法(因此对于选择器的子级和构建方法中的小部件来说可以正常工作)。
但即便如此,这正常吗?为什么?其他选择器甚至都没有监听滚动方向。
无论如何,我找到了另一种替代方法(使用动画控制器),但如果有人能解释一下这里发生了什么,那就太好了。这对我很重要,因为我可能会使用另一种状态管理。
size
。 - Pavel