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.