In Dart if you want to narrow down a nullable final class variable, it is not enough to do
if (value == null) { // value is still nullable here }
instead you need to first capture the value
final value = this.value if (value == null) { // value is non-null }
Swift's guard and if let syntax seems way nicer here. In swift, it's also nice to destructure nested nullable values using if let.
if let value = object.object?.value { // value is non null }
In dart you'd need to first assign this into a local variable and then do the null check which is unnecessarily verbose.