base on A GraphQL client for Flutter, bringing all the features from a modern GraphQL client to one easy to use package. <div align="center"> <h1>GraphQL Flutter</h1> <div align="center"> <img src="https://miro.medium.com/max/1400/1*bU9k3XzmNAQ9F9J0uCiFsQ.png" width="800"/> </div> <p> <strong>A collection of packages to work with graphql server in dart and flutter.</strong> </p> <h4> <a href="https://github.com/zino-hofmann/graphql-flutter">Project Homepage</a> </h4> <a href="https://github.com/laanwj/rust-clightning-rpc/actions"> <img alt="GitHub Workflow Status (branch)" src="https://img.shields.io/github/workflow/status/laanwj/rust-clightning-rpc/Integration%20testing/master?style=flat-square"/> </a> <a href="https://pub.dev/packages/graphql"> <img alt="Pub Popularity" src="https://img.shields.io/pub/popularity/graphql?style=flat-square"/> </a> <a href="https://discord.gg/YBFCTXNbwY"> <img alt="Discord" src="https://img.shields.io/discord/559455668810153989?style=flat-square"/> </a> </div> ## Introduction GraphQL brings many benefits, both to the client: devices will need fewer requests, and therefore reduce data usage. And to the programmer: requests are arguable, they have the same structure as the request. This project combines the benefits of GraphQL with the benefits of `Streams` in Dart to deliver a high-performance client. The project took inspiration from the [Apollo GraphQL client](https://github.com/apollographql/apollo-client), great work guys! ## We're Hiring! πŸš€ We're looking for a Flutter engineer to lead mobile development at [Expatfile.tax](https://expatfile.tax?utm_source=github&utm_medium=readme&utm_campaign=mobile_developer_role) πŸ‡ΊπŸ‡ΈβœˆοΈπŸŒ β†’ [Check out the full job description here](https://hire.toggl.com/c/kj88m/overview) ## Packages This is a Monorepo which contains the following packages: | Crate | Description | Version | |:----------|:-----------:|--:| | [graphql](./packages/graphql) | Client implementation to interact with any graphql server | ![Pub Version (including pre-releases)](https://img.shields.io/pub/v/graphql?include_prereleases&style=flat-square) | | [graphql_flutter](./packages/graphql_flutter) | Flutter Widgets wrapper around graphql API | ![Pub Version (including pre-releases)](https://img.shields.io/pub/v/graphql_flutter?include_prereleases&style=flat-square) | ## Utils Tools Around `graphql_flutter` are builds awesome tools like: 1. [graphql_flutter_bloc](https://github.com/artflutter/graphql_flutter_bloc) 2. [graphql_codegen](https://github.com/heftapp/graphql_codegen) 3. [graphql-cache-inspector](https://pub.dev/packages/graphql_cache_inspector) ## Features βœ… &nbsp; Queries, Mutations, and Subscriptions βœ… &nbsp; [Query polling and rebroadcasting](./packages/graphql/README.md#clientwatchquery-and-observablequery) βœ… &nbsp; [In memory and persistent caching](./packages/graphql/README.md#persistence) βœ… &nbsp; [GraphQL Upload](./packages/graphql/README.md#graphql-upload) βœ… &nbsp; [Optimistic results](./packages/graphql_flutter/README.md#optimism) βœ… &nbsp; [Modularity](./packages/graphql/README.md#links) βœ… &nbsp; [Client-state management](./packages/graphql/README.md#direct-cache-access-api) ⚠️ &nbsp; [Automatic Persisted Queries](./packages/graphql/README.md#persistedquerieslink-experimental-warning-out-of-service-warning) (out of service) ## Contributing Please see our [Hacking guide](./docs/dev/MAINTAINERS.md) ## Contributors This package was originally created and published by the engineers at [Zino App BV](https://zinoapp.com). Since then the community has helped to make it even more useful for even more developers. This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind are welcome! [build-status-badge]: https://img.shields.io/github/workflow/status/zino-hofmann/graphql-flutter/graphql-flutter%20Tests%20case?style=flat-square [build-status-link]: https://github.com/zino-hofmann/graphql-flutter/actions [coverage-badge]: https://img.shields.io/codecov/c/github/zino-hofmann/graphql-flutter/beta?style=flat-square [coverage-link]: https://app.codecov.io/gh/zino-hofmann/graphql-flutter [version-badge]: https://img.shields.io/pub/v/graphql_flutter.svg?style=flat-square [package-link]: https://pub.dartlang.org/packages/graphql_flutter [package-link-client]: https://pub.dartlang.org/packages/graphql [license-badge]: https://img.shields.io/github/license/zino-app/graphql-flutter.svg?style=flat-square [license-link]: https://github.com/zino-app/graphql-flutter/blob/master/LICENSE [prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square [prs-link]: http://makeapullrequest.com [github-watch-badge]: https://img.shields.io/github/watchers/zino-app/graphql-flutter.svg?style=flat-square&logo=github&logoColor=ffffff [github-watch-link]: https://github.com/zino-app/graphql-flutter/watchers [github-star-badge]: https://img.shields.io/github/stars/zino-app/graphql-flutter.svg?style=flat-square&logo=github&logoColor=ffffff [github-star-link]: https://github.com/zino-app/graphql-flutter/stargazers [discord-badge]: https://img.shields.io/discord/559455668810153989.svg?style=flat-square&logo=discord&logoColor=ffffff [discord-link]: https://discord.gg/tXTtBfC ### Financial Contributors Become a financial contributor and help us sustain our community. [[Contribute](https://opencollective.com/graphql-flutter/contribute)] #### Individuals <a href="https://opencollective.com/graphql-flutter"><img src="https://opencollective.com/graphql-flutter/individuals.svg?width=890"></a> #### Organizations Support this project with your organization. Your logo will show up here with a link to your website. [[Contribute](https://opencollective.com/graphql-flutter/contribute)] <a href="https://opencollective.com/graphql-flutter/organization/0/website"><img src="https://opencollective.com/graphql-flutter/organization/0/avatar.svg"></a> <a href="https://opencollective.com/graphql-flutter/organization/1/website"><img src="https://opencollective.com/graphql-flutter/organization/1/avatar.svg"></a> <a href="https://opencollective.com/graphql-flutter/organization/2/website"><img src="https://opencollective.com/graphql-flutter/organization/2/avatar.svg"></a> <a href="https://opencollective.com/graphql-flutter/organization/3/website"><img src="https://opencollective.com/graphql-flutter/organization/3/avatar.svg"></a> <a href="https://opencollective.com/graphql-flutter/organization/4/website"><img src="https://opencollective.com/graphql-flutter/organization/4/avatar.svg"></a> <a href="https://opencollective.com/graphql-flutter/organization/5/website"><img src="https://opencollective.com/graphql-flutter/organization/5/avatar.svg"></a> <a href="https://opencollective.com/graphql-flutter/organization/6/website"><img src="https://opencollective.com/graphql-flutter/organization/6/avatar.svg"></a> <a href="https://opencollective.com/graphql-flutter/organization/7/website"><img src="https://opencollective.com/graphql-flutter/organization/7/avatar.svg"></a> <a href="https://opencollective.com/graphql-flutter/organization/8/website"><img src="https://opencollective.com/graphql-flutter/organization/8/avatar.svg"></a> <a href="https://opencollective.com/graphql-flutter/organization/9/website"><img src="https://opencollective.com/graphql-flutter/organization/9/avatar.svg"></a> ## Articles and Videos External guides, tutorials, and other resources from the GraphQL Flutter community - [Ultimate toolchain to work with GraphQL in Flutter](https://medium.com/@v.ditsyak/ultimate-toolchain-to-work-with-graphql-in-flutter-13aef79c6484): An intro to using `graphql_flutter` with [`artemis`](https://pub.dev/packages/artemis) for code generation and [`graphql-faker`](https://github.com/APIs-guru/graphql-faker) for API prototyping ", Assign "at most 3 tags" to the expected json: {"id":"9606","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"