|
| 1 | +<p align="center"> |
| 2 | + <img src="https://raw.githubusercontent.com/jezsung/query/main/assets/logo.svg" alt="flutter_query logo" width="80"> |
| 3 | +</p> |
| 4 | + |
| 5 | +<h1 align="center"><samp>Flutter Query</samp></h1> |
| 6 | + |
| 7 | +<p align="center"> |
| 8 | + <a href="https://github.com/jezsung/query/actions/workflows/ci.yaml"><img src="https://img.shields.io/github/actions/workflow/status/jezsung/query/ci.yaml?label=CI" alt="CI"></a> |
| 9 | + <a href="https://github.com/jezsung/query/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-MIT-purple.svg" alt="License"></a> |
| 10 | + <a href="https://github.com/jezsung/query"><img src="https://img.shields.io/github/stars/jezsung/query?style=flat&logo=github&colorB=F6F8FA&label=Github Stars" alt="GitHub Stars"></a> |
| 11 | +</p> |
| 12 | + |
| 13 | +Powerful asynchronous state management for Flutter, inspired by [TanStack Query](https://tanstack.com/query/latest). Simplifies data fetching, caching, and updates with minimal boilerplate. |
| 14 | + |
| 15 | +> **Coming from TanStack Query?** Check out the [differences](https://flutterquery.com/docs/coming-from-tanstack-query) to get started quickly. |
| 16 | +
|
| 17 | +## Why Flutter Query? |
| 18 | + |
| 19 | +Working with server data is hard. You need caching, request deduplication, background refetching, stale data handling, and more. Flutter Query handles all of this out of the box: |
| 20 | + |
| 21 | +- **Automatic Caching:** Cache management with configurable stale times |
| 22 | +- **Request Deduplication:** Multiple widgets share a single network request |
| 23 | +- **Background Refetching:** Keep data fresh with automatic background updates |
| 24 | +- **Stale-While-Revalidate:** Show cached data instantly while fetching updates |
| 25 | +- **Optimistic Updates:** Responsive UI with rollback on failure |
| 26 | +- **Infinite Queries:** Built-in pagination for infinite scrolling view |
| 27 | +- **Automatic Retries:** Configurable retry logic with exponential backoff |
| 28 | +- **Lifecycle Aware:** Automatic refetch on app resume |
| 29 | + |
| 30 | +## Documentation |
| 31 | + |
| 32 | +Visit **[flutterquery.com](https://flutterquery.com)** for comprehensive documentation: |
| 33 | + |
| 34 | +- [Quick Start](https://flutterquery.com/docs/quick-start) |
| 35 | +- [Queries](https://flutterquery.com/docs/concepts/queries) |
| 36 | +- [Mutations](https://flutterquery.com/docs/concepts/mutations) |
| 37 | +- [Infinite Queries](https://flutterquery.com/docs/reference/use-infinite-query) |
| 38 | +- [Staleness](https://flutterquery.com/docs/concepts/staleness) |
| 39 | +- [Query Lifecycle](https://flutterquery.com/docs/concepts/query-lifecycle) |
| 40 | + |
| 41 | +## Versioning |
| 42 | + |
| 43 | +This project strictly follows [Semantic Versioning](https://semver.org/). Given a version number `MAJOR.MINOR.PATCH`: |
| 44 | + |
| 45 | +- **MAJOR** version increments indicate breaking changes |
| 46 | +- **MINOR** version increments add functionality in a backward-compatible manner |
| 47 | +- **PATCH** version increments include backward-compatible bug fixes |
| 48 | + |
| 49 | +Before version 1.0.0, MINOR version increments may include breaking changes. |
0 commit comments