Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create request caching service #280

Open
Tracked by #298
ethan-tbd opened this issue Aug 29, 2024 · 4 comments
Open
Tracked by #298

Create request caching service #280

ethan-tbd opened this issue Aug 29, 2024 · 4 comments

Comments

@ethan-tbd
Copy link
Contributor

This request caching service will be used to:

  1. make requests to url
  2. return cached data for url
  3. request new data from backend at url
  4. update cache for url

callers of this will get two responses, like a stream of data where the first response is the cached response and the second response is the network response

perhaps using this as a custom hook similar to https://tanstack.com/query/latest

@aashish-g03
Copy link

.take

Copy link

github-actions bot commented Oct 5, 2024

Thanks for taking this issue! Let us know if you have any questions!

@aashish-g03
Copy link

@ethan-tbd,

I have implemented a solution that closely matches your requirements. You can find the example code here:

Flutter Caching Hook GitHub Repository

Please review it and let me know if it meets your needs. Additionally, I've provided a recording of the implementation for your reference:

caching.screen.record.mp4

Approach:

  1. Used SharedPreferences to store cache data persistently across sessions.
  2. Utilized streams to send multiple responses from the function, ensuring that the first response is the cached data and the subsequent one is the fresh network data.
  3. Updated the UI with StreamBuilder based on the data received from the stream, providing a seamless user experience.

@ethan-tbd
Copy link
Contributor Author

please create a pr to include this request caching service in the lib/shared folder!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants