В системе паттернов flutter blo c UI перестраивается только при изменении состояния. Если в любом случае, когда запущенное событие вызывает то же состояние, в котором в настоящее время находится blo c, функция сборки не будет вызываться снова, т.е. пользовательский интерфейс не будет перестроен.
В вашем случае , когда впервые выдается CashFlowState
, весь код работает нормально. Но затем снова возвращается то же состояние, событие запускается, но функция построения больше не вызывается, потому что состояние никогда не менялось.
Что вам нужно сделать, так это создать два разных состояния вместе с два разных события. Допустим, chipTappedEvent
даст chipTappedState
, а chipResetEvent
даст chipResetState
.
Вначале вы можете использовать chipResetState
или любое другое состояние в качестве начального состояния. Затем, когда пользователь нажимает на чип, просто активируйте chipTappedEvent
, который должен дать chipTappedState
.
В вашем слушателе прослушайте состояние chipTappedState
и сделайте то, что вы должны сделать. Затем немедленно вызовите chipResetEvent
, который должен дать chipResetState
. Таким образом, когда пользователь снова коснется чипа, полученное состояние будет chipTappedState
, которое будет отличаться от chipResetState
, поэтому функция сборки будет вызвана снова.