Search code examples
dartfluttersetstategesturedetector

Having Multiple SetStates() in a Gesture Detector?


I can't get the set state to change in multiple areas from an onTap VoidCallback?

I have two AnimationController in different stateful widgets. What I would like to implement is that if controller1.value == 0.0 then it'll make sure that when onTap that the controller2.value == 1.0 and visa versa for if controller1.value == 1.0.

StatefulWidget bottom layer (passes the widget.onTapOpen/closed to the top layer)

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

StatefulWidget top layer

onTapOpen: _ensureVisible,
onTapClosed: _ensureInvisible,

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

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

Solution

  • It worked when if (_controller2.value > or < 0.5) then it would toggle the visibility.