Я, наверное, просто неправильно понимаю поток дротика, но когда я делаю это:
TabBarView(
children: [
...
StreamBuilder(
builder(context, url){
...
print(url);
...
},
stream: () async* { ... }().asBroadcastStream(),
initialData: 'Dope',
)
...
]
)
Я получаю странное поведение при рендеринге StreamBuilder с помощью TabBarView.
Во-первых, мне нужно использовать asBroadcastStream (), иначе я получу:
Плохое состояние: поток уже прослушан
что я признаю, это плохое решение.
Но пока решение работает, возврат к StreamBuilder в TabBarView теперь приведет к повторному построению с повторным использованием initialData, а не последнего моментального снимка потока. Вот результат печати при двойном возврате на вкладку:
I / flutter (14541): допинг
I / flutter (14541): правильный URL
I / flutter (14541): допинг
I / flutter (14541): допинг
Я представляю, что обе проблемы связаны, но я не понимаю, почему StreamBuilder повторно использует async * и initialData