flutter-tutorials icon indicating copy to clipboard operation
flutter-tutorials copied to clipboard

Stream controller providing stale values for onModelReady()

Open omkardeshpande3194 opened this issue 4 years ago • 2 comments

I followed the pattern you suggested in provider-aechitecture-pt2

The flow is common as follows, login view gets user credentials , passes to login view model which then passes to auth service. After api call is successful auth service adds user to user stream controller and then on login success navigator.pushNamed() Which pushes to homeview

ref - https://github.com/FilledStacks/flutter-tutorials/blob/master/012-provider-architecture-pt2/2-final/lib/ui/views/home_view.dart

onModelReady: (model) => model.loadData(Provider.of(context))

The issue I am facing is that the stream controller doesn't pass the user before model.loadData() is called for homeview. After reading a few articles I got to know that there is no way to ensure if streams deliver data. Am I missing something? how can I solve this issue?

Not sure if this is the right place to ask this question

omkardeshpande3194 avatar May 12 '21 19:05 omkardeshpande3194

I guess we should be pulling user from some UserService in the home model loadData( ) method. As we cannot rely on pushed data (doesn't assure delivery) but we can wait and listen for data form user service in home model.

omkardeshpande3194 avatar May 12 '21 20:05 omkardeshpande3194

@omkardeshpande3194 provider was updated quite a bit after this tutorial. I think you need to set lazy false for the StreamProvider for this to work.

FilledStacks avatar May 13 '21 09:05 FilledStacks