context.watch<T>() listens to changes on T . context.read<T>() returns T without listening to it. You were calling.
Read moreHow do you use future provider in Flutter?
Future provider has a initial value, which widgets can use until the Future value is resolved . When resolved, it the FutureProvider will tell it’s descendents to rebuild, using the new value. Importantly, this means that the widgets who rely on the value of a future provider will only rebuild once.
Read more