Эта часть документации о том, как возможно, чтобы ваш виджет перестраивался с другими параметрами.
Например, с StreamBuilder
первая сборка может быть похожа на:
StreamBuilder(
stream: Stream.value(42),
builder: ...
)
А затем что-то меняется, и StreamBuilder
перестраивается с помощью:
StreamBuilder(
stream: Stream.value(21),
builder: ...
)
В этом случае stream
изменяется. Поэтому StreamBuilder
необходимо прекратить прослушивание предыдущего Stream
и прослушивание нового.
Это будет сделано, хотя следующее didUpdateWidget
:
StreamSubscription<T> subscription;
@override
void didUpdateWidget(StreamBuilder<T> oldWidget) {
super.didUpdateWidget(oldWidget);
if (widget.stream != oldWidget.stream) {
subscription?.cancel();
subscription = widget.stream?.listen(...);
}
}
То же самое logi c относится к ChangeNotifier
и любому другому наблюдаемому объекту.