Como implementar streamBuilders (conectadas a uma única stream) em múltiplas telas para ter os dados atualizados constantemente em todas as telas ? #87
-
Pessoal, tudo bem? Mas estou enfrentando o seguinte problema: Imaginem um programa com 3 telas: A, B e C. Na tela C eu atualizo a stream e mostro os dados do snapshot na tela por meio do StreamBuilder. Na tela B eu também mostro os dados da mesma stream usando o streamBuilder. Porém, depois de alterar os valores na tela C e retornar à tela B acontece que os valores mostrados pelo streamBuilder da tela B não estão atualizados. E quando eu vou da B para A e volto para B os valores se atualizam. Eu quero que os valores fiquem atualizados o tempo todo em todas as telas. Eu já tentei implementar o get_it e não funcionou. Com o get_it o resultado é o mesmo. Vocês podem ter acesso ao git que construi pra discutir o problema aqui: Eu também fiz uma pergunta no stackOverflow: -> lá tem os códigos descritos E aqui tem um vídeo do youtube que fiz para mostrar a questão ... Obrigado a todos... |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 3 replies
-
Olá @EuHigorBarbosa,
class SeqDepServiceFFmpeg implements SeqDepService {
static SeqDepServiceFFmpeg? _instance;
SeqDepServiceFFmpeg._();
factory SeqDepServiceFFmpeg(){
_instance ??= SeqDepServiceFFmpeg._();
return _instance!;
}
final List<SeqDepEntity> _activeListSeqDep = [];
final StreamController<List<SeqDepEntity>> _controller = StreamController<List<SeqDepEntity>>.broadcast();
@override
List<SeqDepEntity> get activeSeqDepList => _activeListSeqDep;
@override
Stream<List<SeqDepEntity>> get activeSeqDepListStream => _controller.stream;
@override
void addActiveSeqDep( SeqDepEntity seqDep) {
_activeListSeqDep.add(seqDep);
_addInStream(_activeListSeqDep);
}
void _addInStream (List<SeqDepEntity> activeEntities){
_controller.sink.add(activeEntities);
}
}
|
Beta Was this translation helpful? Give feedback.
Olá @EuHigorBarbosa,
PageCC
. A linhaSeqDepService seqDepService = SeqDepService();
deveria estar dentro da classe que estendeState
e ela está entre as classes. (isso não resolve o problema)MultiStreamController
, pois umStreamController.broadcast()
já resolve. Você pode simplificar seuSeqDepServiceFFmpeg
para ficar assim: