Pakete, Repositories und App-Kategorien suchen

Paketdetailsv1.2.1

lazy_load_indexed_stack

Ein Paket, das IndexedStack erweitert, um Lazy Loading zu ermöglichen.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
13.400
Likes
101
Pub-Punkte
160

Paket installieren

flutter pub add lazy_load_indexed_stack

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

Ein Flutter-Paket, das IndexedStack erweitert, um die Lazy-Loading seiner Kinder zu ermöglichen. Es stellt sicher, dass nur das aktuell sichtbare Widget erstellt und gerendert wird, was die Leistung bei Apps mit mehreren Seiten oder schweren Widgets verbessert. Ideal für tabbasierte Schnittstellen oder Navigation, bei denen jede Registerkarte komplexen Inhalt enthält. Das Paket verwaltet den Speicher effizient, indem es die Erstellung von Widgets bis zum Bedarf hinausschiebt, wodurch die Ladezeit und der Ressourcenverbrauch verringert werden.

Anwendungsfälle

  • Tab-basierte Oberflächen mit umfangreichen Inhalten
  • Leistungsoptimierung in Multi-Page-Layouts
  • Verringern der initialen App-Ladezeit
  • Dynamische Inhaltsumschaltung
  • Speicher-effizientes Navigieren
  • Lazy Rendering komplexer Widgets

Hauptmerkmale

  • Erweitert IndexedStack
  • Lazy Loading von Kindern
  • On-Demand-Widget-Erstellung
  • Leistungsverbesserung
  • Speichereffizienz
  • Einfache Integration

Geeignet für

  • Entwickler, die die App-Leistung optimieren
  • Apps mit mehreren Tabs oder Bildschirmen
  • Komplexe Benutzeroberflächen, die eine effiziente Darstellung erfordern
  • Projekte, die IndexedStack verwenden
  • Teams, die sich auf Ressourcenmanagement konzentrieren

Hinweise

  • Beschränkt auf Kind-Widgets innerhalb von IndexedStack
  • Kann eine sorgfältige Zustandsverwaltung erfordern
  • Nicht geeignet für sofortige Rendering-Anforderungen
  • Am besten mit vorhersehbaren Navigationsmustern verwendet
  • Erfordert Verständnis des Widget-Lebenszyklus

Original-README

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

CI Pub

lazy_load_indexed_stack

A package that extends IndexedStack to allow for lazy loading and provides enhanced control for reloading specific child widgets.

Motivation

If you use the IndexedStack with bottom navigation, all the widgets specified in the children of the IndexedStack will be built.

Moreover, if the widget requires API requests or database access, or has a complex UI, the IndexedStack build time will be significant.

Therefore, we created an extended IndexedStack that builds the required widget only when it is needed and returns the pre-built widget when it is needed again.

Features

  • Lazy Loading: The main feature of LazyLoadIndexedStack is to build children widgets only when they are needed, reducing initial load time.
  • Preloading: With the preloadIndexes parameter, you can specify indexes of children that should be built in advance, even if they are not currently visible. This is useful for preloading widgets that are likely to be needed soon.
  • Auto Disposal: The autoDisposeIndexes parameter allows specific children to be automatically disposed of when they are no longer visible. When these children are accessed again, they will be rebuilt from scratch. This is useful for cases where widgets hold significant state or require resetting when revisited.

Usage

You can use LazyLoadIndexedStack in the same way as IndexedStack, with additional options for preloading and auto dispose. If an index is included in both preloadIndexes and autoDisposeIndexes, it will be preloaded initially but disposed when it becomes invisible and rebuilt when accessed again.

Basic Example
class MainPage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => _MainPageState();
}

class _MainPageState extends State<MainPage> {
  int _index = 0;

  @override
  Widget build(final BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: LazyLoadIndexedStack(
          index: _index,
          preloadIndexes: [1, 2],
          autoDisposeIndexes: [2, 3],
          children: [
            Page1(), // Load by initial index
            Page2(), // Preloaded initially
            Page3(), // Preloaded initially but disposed when other index is selected
            Page4(), // Not preloaded and disposed when other index is selected
          ],
        ),
        bottomNavigationBar: BottomNavigationBar(
          onTap: (index) {
            setState(() => _index = index);
          },
          currentIndex: _index,
          items: [
            BottomNavigationBarItem1(),
            BottomNavigationBarItem2(),
            BottomNavigationBarItem3(),
            BottomNavigationBarItem4(),
          ],
        ),
      ),
    );
  }
}

See more details in Example or API reference!

Kategorien

Quell-Repository

Projekte, die dieses Paket verwenden