Search packages, repositories and app categories

Package detailsv0.10.0

normalize

Normalization and denormalization of GraphQL responses in Dart

AndroidiOSWebmacOSWindowsLinux
30-day downloads
486K
Likes
16
Pub points
130

Install package

flutter pub add normalize

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

The normalize package provides utilities for normalizing and denormalizing GraphQL responses in Dart, enabling efficient data management and cache coherence. It is designed to work seamlessly with the Ferry GraphQL client, transforming nested GraphQL data into a flat, normalized structure that avoids duplication and simplifies state updates. This improves performance and consistency when handling complex queries and mutations. The package supports all major platforms including Android, iOS, Web, macOS, Windows, and Linux.

Use cases

  • Caching GraphQL query results
  • Managing nested data structures
  • Improving state update efficiency
  • Synchronizing client-side state with server responses
  • Optimizing performance in large-scale apps

Key features

  • Flat data normalization
  • Automatic deduplication of entities
  • Support for GraphQL object relationships
  • Integration with Ferry client
  • Cross-platform compatibility

Suitable for

  • GraphQL clients using Ferry
  • Apps with complex nested data
  • Developers prioritizing cache performance
  • State management with normalized data
  • Full-stack Dart/Flutter applications

Considerations

  • Requires familiarity with GraphQL data structures
  • Best used with Ferry or similar clients
  • May increase initial setup complexity
  • Limited to GraphQL-specific use cases
  • Not suitable for non-GraphQL data formats

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

A simple, powerful GraphQL Client for Flutter and Dart

MIT License PRs Welcome Watch on GitHub Star on GitHub Watch on GitHub Discord

Documentation 📖

Features

  1. ✅ Fully Typed: work faster and safer with compile time checks and IDE autocomplete, including fully typed Cache reads and writes.
  2. 🔄 Built-In Code Generators: automatically generated immutable data classes for all your GraphQL Operations and Fragments, based on your schema.
  3. 🌐 Customizable Network Interface: highly customizable network interface using gql_link, allowing you to compose and extend Links.
  4. ✨ Normalized Optimistic Cache: keep data in sync with cache normalization and update your UI instantly with optimistic data.
  5. 💾 Multiple Data Stores: extensible Store interface with built-in MemoryStore and HiveStore (which uses hive for offline persistence).
  6. 📄 Refetch & Pagination: easily update responses with new data or combine multiple responses, allowing for seamless pagination.
  7. 📱 Flutter Widgets: Widgets for Queries, Mutations, and Subscriptions, available out of the box.
  8. 🧈 Smooth: Run queries in a separate Isolate to free up resources on the UI thread

Packages

This repo is a monorepo for ferry and related packages.

Pub Package Description
version package:ferry Stream-based GraphQL Client
version package:ferry_cache Normalized, strongly typed, optimistic cache
version package:ferry_exec Strongly typed GraphQL execution interface
version package:ferry_flutter Flutter Widgets for GraphQL Operations
version package:ferry_generator Dart Type Generator for GraphQL Operations
version package:ferry_store Data Persistence for ferry's cache
version package:ferry_hive_store Hive implementation of ferry_store
version package:normalize Normalization / denormalization of GraphQL data

Categories

Dependencies

Dependency list 2 items

Source repository

Projects using this package