77 lines
1.8 KiB
Text
77 lines
1.8 KiB
Text
|
|
|
|
Actually you can use if/else and switch and any other statement inline in dart / flutter.
|
|
Use a builder
|
|
|
|
Widget build(BuildContext context) {
|
|
return Container(
|
|
child: Builder(
|
|
builder: (context) {
|
|
if (true) //
|
|
return "tis true";
|
|
|
|
return "anything but true";
|
|
},
|
|
),
|
|
);
|
|
}
|
|
|
|
or an immediate anonymous function
|
|
|
|
Widget build(BuildContext context) {
|
|
return Container(child: () {
|
|
if (value == 1) {
|
|
return Text('tis true');
|
|
}
|
|
return Text('anything but true');
|
|
}());
|
|
}
|
|
|
|
I would heavily recommend against putting too much logic directly with your UI 'markup' but I found that type inference in Dart needs a little bit of work so it can be sometimes useful in scenarios like that.
|
|
Use the ternary operator
|
|
|
|
condition ? Text("True") : null,
|
|
|
|
Use If or For statements or spread operators in collections
|
|
|
|
children: [
|
|
...manyItems,
|
|
oneItem,
|
|
if(canIKickIt)
|
|
...kickTheCan
|
|
for (item in items)
|
|
Text(item)
|
|
|
|
Use a method
|
|
|
|
child: getWidget()
|
|
|
|
Widget getWidget() {
|
|
if (x > 5) ...
|
|
//more logic here and return a Widget
|
|
|
|
EDIT - new with Dart 3.0
|
|
|
|
Dart 3.0 adds new functionality such as if-case & switch expressions in order to use pattern matching, destructuring, guard clauses.
|
|
https://dart.dev/language/patterns
|
|
Switch Expressions
|
|
|
|
We can now use switch as an expression. https://dart.dev/language/branches#switch-expressions
|
|
|
|
child: switch (task) {
|
|
Task_completed(:date) => Text("completed on $date"),
|
|
Task_overdue(:priority) => Text("$priority"),
|
|
},
|
|
|
|
if-case (new to Dart 3.0)
|
|
|
|
Use if-case instead of switch when you have a single or small number of conditions to check. https://dart.dev/language/branches#if-case
|
|
|
|
return ListView(children: [
|
|
Text('header'),
|
|
if (pair case [int x, int y]) //
|
|
Text('Coordinates: ($x, $y)') //
|
|
else
|
|
Text('No coordinates given'),
|
|
]);
|
|
|