Pakete, Repositories und App-Kategorien suchen

Paketdetailsv0.0.6

cubit_base

Eine leichte Flutter-Bibliothek zur Vereinfachung des Datenabrufs und der Paginierung mit Bloc/Cubit. Sie bietet standardisierte Zustände und ein Fetcher-Tool, um Boilerplate zu reduzieren.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
49
Likes
1
Pub-Punkte
155

Paket installieren

flutter pub add cubit_base

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

cubit_base ist eine leichte Flutter-Bibliothek, die die Datenabfrage und Paginierung innerhalb von Bloc/Cubit-Mustern vereinfacht. Sie bietet standardisierte Zustandsverwaltung und eine integrierte Fetcher-Utility, die wiederholten Code minimiert und die Handhabung von Lade-, Erfolgs- und Fehlerzuständen erleichtert. Durch die Reduzierung von Boilerplate beschleunigt sie die Entwicklung und gewährleistet saubere, vorhersehbare Zustandsübergänge über Plattformen hinweg.

Anwendungsfälle

  • API-Datenabruf vereinfachen
  • Paginierte Listen implementieren
  • Reduzierung von State-Management-Boilerplate
  • Wiederverwendbare Datenanbieter erstellen
  • Verwaltung von Lade- und Fehlerzuständen
  • Vereinfachung von CRUD-Operationen

Hauptmerkmale

  • Standardisierte Zustände für konsistente UI-Behandlung
  • Eingebautes Fetcher-Tool für asynchrone Vorgänge
  • Pagination-Unterstützung out of the box
  • Minimaler Aufbau mit klarer Struktur
  • Plattformübergreifende Kompatibilität
  • Klare Trennung von Anliegen

Geeignet für

  • Entwickler, die Bloc/Cubit-Muster verwenden
  • Projekte, die häufige Datenabrufe erfordern
  • Teams, die darauf abzielen, Boilerplate zu reduzieren
  • Apps mit paginiertem Inhalt
  • Anfänger lernen den Zustandsmanagement
  • Schnelle Prototypenerstellung und MVP-Entwicklung

Hinweise

  • Kenntnisse von Bloc/Cubit erforderlich
  • Begrenzte Anpassungsmöglichkeiten für komplexe Zustandslogik
  • Nicht ideal für hochdynamische Zustandsflüsse
  • Am besten geeignet für einfache Datenoperationen
  • Möglicherweise sind zusätzliche Ebenen für fortgeschrittene Caching erforderlich
  • Benötigt externe Abhängigkeiten für vollständige Funktionalität

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

cubit_base

A lightweight Flutter library to simplify data fetching and pagination using Bloc/Cubit. It provides standardized states and a Fetcher utility to reduce boilerplate in your Clean Architecture features.

Features

  • 🚀 Standardized States: BaseState and BasePaginationState for consistent UI handling.
  • 🔄 Simplified Fetching: Fetcher.fetchWithBase handles loading, success, and error states automatically.
  • 📑 Built-in Pagination: Fetcher.fetchWithPaginate manages page increments and "reached max" logic.
  • 🏗️ Clean Architecture Friendly: Designed to work seamlessly with UseCases and DataStates.

Installation

Add cubit_base to your pubspec.yaml:

dependencies:
  cubit_base: ^0.0.5

Usage

1. Simple Data Fetching

Define your state using BaseState:

class UserState {
  final BaseState<User> user;
  
  UserState({required this.user});
  
  UserState copyWith({BaseState<User>? user}) => UserState(user: user ?? this.user);
}

Use the Fetcher in your Cubit:

Future<void> getUser() async {
  await Fetcher.fetchWithBase<User>(
    fetcher: () => _getUserUseCase.call(),
    state: state.user,
    emitter: (newState) => emit(state.copyWith(user: newState)),
  );
}
2. Pagination

Define your state using BasePaginationState:

class ProductState {
  final BasePaginationState<Product> products;

  ProductState({required this.products});

  ProductState copyWith({BasePaginationState<Product>? products}) =>
      ProductState(products: products ?? this.products);
}

Implement pagination in your Cubit:

Future<void> getProducts({bool isRefresh = false}) async {
  await Fetcher.fetchWithPaginate<Product>(
    fetcher: () => _getProductsUseCase.call(
      params: ProductParams(
        page: isRefresh ? 1 : state.products.query.page,
        size: state.products.query.size,
      ),
    ),
    state: state.products,
    isRefresh: isRefresh,
    emitter: (newState) => emit(state.copyWith(products: newState)),
  );
}

State Components

BaseState<T>

Manages a single object of type T.

  • status: initial, loading, success, error.
  • data: The fetched object.
  • error: Error message if any.
BasePaginationState<T>

Manages a list of type T.

  • list: List of items.
  • status: initial, loading, paging, success, error.
  • query: Contains page and size.
  • reachedMax: Boolean indicating if all data is loaded.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Kategorien

Quell-Repository

Projekte, die dieses Paket verwenden

Noch keine Daten verfügbar.