dart alternate for a lot of if elseiif
5,706
Solution 1
If you want less code, you can do somtehing like this :
homes = {
"http://www.example.com/1": "example",
"http://www.example.com/2": "another example",
"http://www.example.com/3": "yet another one",
};
home = homes[url];
Solution 2
I like Muldec's answer as I personally find switch statements to be a bit awkward to read. I also like the option of having a default so you could 'kind of' redefine the switch statement. The additional benefit is that you can use it inline as an expression and it is still typesafe...like this.
case2(myInputValue,
{
"http://www.example.com/1": "example",
"http://www.example.com/2": "another example",
"http://www.example.com/3": "yet another one",
}, "www.google");
The case2 code could be
TValue case2<TOptionType, TValue>(
TOptionType selectedOption,
Map<TOptionType, TValue> branches, [
TValue defaultValue = null,
]) {
if (!branches.containsKey(selectedOption)) {
return defaultValue;
}
return branches[selectedOption];
}
Solution 3
You can use a switch statement.
switch(variable_expression) {
case constant_expr1: {
// statements;
}
break;
case constant_expr2: {
//statements;
}
break;
default: {
//statements;
}
break;
}
References
Author by
Jona
Updated on December 12, 2022Comments
-
Jona over 1 year
I want to replace an URL String in Dart with another String. Example:
if (url == "http://www.example.com/1") { home = "example"; } else if (url == "http://www.example.com/2") { home = "another example"; }
Isn't there a better way with less code and maybe faster? I'd have to do this over 60 times..