Question: I have seen the Page speed for the web <https://pagespeed.web.dev/>
I want to calculate the amount of time taken between the user lands on the screen until the app completes processing and rendering the content.
Have tried some analytics tools such as Firebase performance, Posthog, Mixpanel, Google Analytics, and Instabug. But no tool provided the analytics which I am looking for.

Answer: 
The code that I posted has had mixed results for some. My main project actually is actually a bit more complex and involves `Provider`, but I tried my best to strip the code down to its simplest parts when I posted this question. I'm wondering if something else is getting in the way of this working. (maybe it's because I threw this example together using dartpad?)

In the mean time, I've discovered that adding or removing an element to the list seems to change the entire state of the list. *Using this technique, instead of trying to change an individual value, I get its index, remove it, and re-add it at that index and it works like a charm.* So instead of this:

```
void userRequest(String name) {
    // send a speak request to a tile
    int index = users.indexWhere((element) => element.name == name);
    users[index].userTileState = UserTileState.requested;
  }

```

followed by `setState(() => userRequest("name");`, the following seems to work instead:

```
void userRequest(String name) {
    // send a speak request to a tile
    int index = users.indexWhere((element) => element.name == name);
    users.removeAt(index);
    users.insert(index, UserItem(name, UserTileStates.requested));
  }

```
You can use StatefulBuilder() - by using this you will get a separate state for each item in your list, that can be updated

like this:

```
ListView.separated(
          separatorBuilder: (context, index) {
            return const Divider();
          },
          itemCount: users.length,
          itemBuilder: (context, index) {
            return StatefulBuilder(
              builder: ((context, setStateItem){

         //return_your_listTile_widget_here
         //use setStateItem (as setState) this will update the state of selected item

                setStateItem(() {
                        //code for update the listView item                 
                       });

                  })
                );
          })),

```

[![enter image description here](https://i.stack.imgur.com/pcmbR.gif)](https://i.stack.imgur.com/pcmbR.gif)