Just started Flutter with native iOS background, so I just have a quick question about Dart beta null safety.
So in Swift, because they have the idea of null safety from the beginning just like Kotlin, there are 2 features that I really like about the language is if let
and guard let
. These 2 make working with optional values so much easier. I'm not sure if the beta version of Dart has anything like that.
Thanks
I'm not an expert on Swift, but Dart will use null checks to automatically promote types, and I think that mostly does the job of if let
and guard let
.
For example:
String? x = possiblyReturnsNull();
if (x != null) {
// All code within this block treats `x` as non-nullable.
}
// All code outside the block continues to treat `x` as nullable.
Note that promotion won't be performed on non-local variables, so for those you would need to explicitly introduce a local reference. (There is a language proposal to provide a mechanism to allow a nicer mechanism to add a local reference without polluting the outer scope.)
I'm going to jump in on this, since I'm coming from Swift too and love to use guard a lot. Adding to what @jamesdlin said, the opposite is also true.
So you can functionally do a Swift guard statement:
String? x = possiblyReturnsNull();
if (x == null) return whatever; // This works like Swift's guard
// All code outside the block now treats `x` as NON-nullable.
A small extension to the accepted answer is that Flutter also allows force-unwrapping an Optional. So in the case you are accessing a non-nil value that is not saved inside a variable, like in a dictionary, you need to unwrap it inside the if-statement:
if (someDict[someKey] != null) {
print(someDict[someKey]!)
}
//
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With