O jeito mais simples na minha opinião é signals, porque são praticamente identicos a variaveis normais so que quem usa a variavel consegue se atualizar quando a variavel muda de valor.

Pacote signals: https://pub.dev/packages/signals

Suporte a flutter do pacote signals: https://dartsignals.dev/flutter/watch/

Eu não quero coisas overengineered, quero a solução mais simples para o problema que eu tenho, claro preparando para mudanças futuras mas não demasiado porque é um balanço entre extensibilidade, velocidade e performance.

No caso dos signals podes apenas ter uma variavel em um arquivo dart acessivel na apliação inteira que tu consegues ouvir por mudanças e a API é super simples.

Exato. Eu ainda não vi o signals, mas pelo que eu entendi de tu falando, creio que seja mais especifico para reatividade (a variável mudou logo a tela muda). O que acontece é de eu tenho uma variável que indica o estado da tela (carregando/vazia/com erro) e aí a tela vai reagir a essa mudança de estado. É tipo, nem toda reatividade vai trabalhar com gerência de estado, mas toda gerência de estado vai trabalhar com reatividade. O que acaba sendo prático nas outras bibliotecas tipo BLoC ou Redux, é que eles criam um "efeito colateral" aquela mudança de estado. Exemplo: eu tenho uma tela que entrou em estado "Com erro" depois de eu submeter um formulario, aí a tela exibe aquele erro erro mas o efeito colateral é que ela salva localmente os dados do formulário pra que eu possa enviar depois. Normalmente eu faço os estados "na mão", mas quando vejo que precisa dessas outras operações observando o estado, aí uso um gerenciador mais completo