Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Empty set state what is the point?

I want to know the point behind calling setState without setting a new value to the variables.

  readLocal() async {
    prefs = await SharedPreferences.getInstance();
    id = prefs.getString('id') ?? '';
    if (id.hashCode <= peerId.hashCode) {
      groupChatId = '$id-$peerId';
    } else {
      groupChatId = '$peerId-$id';
    }

    setState(() {});
  }
like image 802
Aya Elsisy Avatar asked Jan 02 '23 20:01

Aya Elsisy


1 Answers

I would say it's just a convention. The above can be re-written as

readLocal() async {
  prefs = await SharedPreferences.getInstance();
  setState(() {
    id = prefs.getString('id') ?? '';
    if (id.hashCode <= peerId.hashCode) {
      groupChatId = '$id-$peerId';
    } else {
     groupChatId = '$peerId-$id';
   }
  });
}

Both will do the same thing. Calling setState(() {}) after mutating the state variable looks neat and reabable.

As per the implementation section of setState, it will below things in order.

  1. Assertions. If any assert fails, throws exception and stops there.
  2. Execute the callback function (final dynamic result = fn() as dynamic;)
  3. Ask framework to rebuild(_element.markNeedsBuild();)
like image 198
Dinesh Balasubramanian Avatar answered Jan 27 '23 07:01

Dinesh Balasubramanian