首页 > 解决方案 > 在手势检测器中有多个 SetStates()?

问题描述

我无法通过 onTap VoidCallback 在多个区域更改设置状态?

我在不同的有状态小部件中有两个 AnimationController。我想实现的是,如果controller1.value == 0.0,那么它将确保当onTap 时controller2.value == 1.0,反之亦然,如果controller1.value == 1.0。

StatefulWidget 底层(将 widget.onTapOpen/close 传递给顶层)

onTap: () {
  _toggleExpandingSheetPanelVisibility();
  setState(() {
    if (_controller1.value == 0.0){
      widget.onTapOpen();
    }
    else if (_controller1.value == 1.0){
      widget.onTapClosed();
    }
  });
 },

StatefulWidget 顶层

onTapOpen: _ensureVisible,
onTapClosed: _ensureInvisible,

 void _ensureVisible() {
 setState(() {
   if (_controller2.value == 0.0) {
     _toggleVisibility();
   }
 });
}

void _ensureInvisible() {
 setState(() {
   if (_controller2.value == 1.0) {
     _toggleVisibility();
   }
 });
}

标签: dartfluttersetstategesturedetector

解决方案


它在切换可见性的时候if (_controller2.value >或之后起作用。< 0.5)


推荐阅读