I am very new to Dart/Flutter and I have a confusion regarding the => notation. The documentation says that the => notation is used as a shorthand to return a single expression.
bool isNoble(int atomicNumber) => _nobleGases[atomicNumber] != null;
My doubt comes when I am trying to set state in a flutter application.
RaisedButton( onPressed: () => { setState(() { print('hello'); _products.add('More stuff'); }) }, child: Text('Add Product'), ), Now when i change the setState method with => notation
RaisedButton( onPressed: () => { setState(() => { print('hello'), _products.add('More stuff'), }) }, child: Text('Add Product'), ), Both methods mentioned above work, that is they set the state as expected. All i had to do was change the semicolons to commas when using the fat arrow notation.
What is the logic behind this ? How is the fat arrow notation working with curly braces which contains multiple expressions within it.
Edit
As mentioned by Hemanth Raj the => returns a set and the code segment containing the => notation can be written as follows.
RaisedButton( onPressed: () => { setState(() { return { print('hello'), _products.add('More stuff'), }; }) }, child: Text('Add Product'), ), How is the returned set containing a print function and _products.add actually updating the state. Shouldn't it throw some kind of error because usually setState is done by an expression such as _products.add('More stuff');.
Setintroduced inDart 2.2.