doBuild method
Implementation
Widget doBuild(Widget Function() build, void Function() markNeedsBuild) {
late Widget result;
nonTracking(() {
final (signals, widget) = recordSignals(build);
final newSignals = signals.where((it) => !subscriptions.containsKey(it));
final unusedSignals = subscriptions.keys.where((it) => !signals.contains(it)).toList();
for (final signal in unusedSignals) {
subscriptions[signal]!.cancel();
subscriptions.remove(signal);
}
for (final signal in newSignals) {
subscriptions[signal] = (signal.sync ?? signal.stream).listen((_) => markNeedsBuild());
}
result = widget;
});
return result;
}