Pakete, Repositories und App-Kategorien suchen

Paketdetailsv0.0.5+1

overlay_container

Ein Flutter-Widget, das sein Kind außerhalb der ursprünglichen Widget-Hierarchie rendert.

30-Tage-Downloads
3
Likes
50
Pub-Punkte
40

Paket installieren

flutter pub add overlay_container

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

OverlayContainer ist ein Flutter-Widget, das sein Kind außerhalb der ursprünglichen Widget-Hierarchie rendert und es ermöglicht, Elemente unabhängig von der Layoutstruktur des Elternteils zu positionieren. Dies ist besonders nützlich für die Erstellung von Überlagerungen, Tooltips oder schwebenden UI-Komponenten, die über anderen Widgets erscheinen sollen, ohne durch die Grenzen ihres Containers eingeschränkt zu werden. Es nutzt den Overlay-Mechanismus von Flutter, um dieses Verhalten zu erreichen, und bietet eine saubere und effiziente Möglichkeit, geschichtete UI-Elemente zu verwalten. Das Paket ist leichtgewichtig und auf Einfachheit ausgelegt, wodurch es ideal für Entwickler ist, die präzise Kontrolle über die Positionierung von Widgets in komplexen Layouts suchen.

Anwendungsfälle

  • Fließende Aktionsschaltflächen erstellen
  • Tooltips oder Popovers anzeigen
  • Benutzerdefinierte Modaldialogfelder implementieren
  • Overlay-Menüs erstellen
  • UI-Elemente außerhalb der Elterneinschränkungen positionieren

Hauptmerkmale

  • Rendert Kinder außerhalb der Elternhierarchie
  • Verwendet Flutter's Overlay für effizientes Rendern
  • Einfache API mit minimalem Setup
  • Unterstützt absolute Positionierung
  • Arbeitet nahtlos mit bestehenden Widget-Bäumen zusammen

Geeignet für

  • Entwickler, die erweiterte Overlay-Funktionen benötigen
  • UI-Designer, die geschichtete Schnittstellen umsetzen
  • Projekte, die dynamische Schwimmobjekte erfordern
  • Apps mit komplexen interaktiven Überlagerungen
  • Teams, die sauberen, wartbaren Code priorisieren

Hinweise

  • Kann eine sorgfältige Behandlung von Fokus und Gesten erfordern
  • Nicht geeignet für statische Layoutstrukturen
  • Möglicher Leistungseinbruch bei vielen Overlays
  • Erforderliche ordnungsgemäße Beseitigung von Overlay-Einträgen
  • Eingeschränkte plattformspezifische Optimierungen

Original-README

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

overlay_container

Pub Package License

A flutter widget which renders its child outside the original widget hierarchy.

Demo.

Demo

This demo is present as an example here. You can also checkout the examples folder.

Description.

The child passed to this widget is rendered outside the widget hierarchy as an overlay to the exisiting widget tree. As a result this widget is highly suitable for building custom dropdown options, autocomplete suggestions, dialogs, etc. Think of it as widget placed absolutely and having a positive z-index over the rest of the widget tree. It is actually a friendly wrapper over the Flutter's Overlay and OverlayEntry APIs.

If you've ever used react, this tries to do what React Portal does, in a way.

Example.

import 'package:flutter/material.dart';
import 'package:overlay_container/overlay_container.dart';

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Overlay Container Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  // Need to maintain a "show" state either locally or inside
  // a bloc.
  bool _dropdownShown = false;

  void _toggleDropdown() {
    setState(() {
      _dropdownShown = !_dropdownShown;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Overlay Container Demo Page'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(20),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            RaisedButton(
              onPressed: _toggleDropdown,
              child: Column(
                children: <Widget>[
                  Text("Dropdown button"),
                ],
              ),
            ),
            // By default the overlay (since this is a Column) will
            // be added right below the raised button
            // but outside the widget tree.
            // We can change that by supplying a "position".
            OverlayContainer(
              show: _dropdownShown,
              // Let's position this overlay to the right of the button.
              position: OverlayContainerPosition(
                // Left position.
                150,
                // Bottom position.
                45,
              ),
              // The content inside the overlay.
              child: Container(
                height: 70,
                padding: const EdgeInsets.all(20),
                margin: const EdgeInsets.only(top: 5),
                decoration: BoxDecoration(
                  color: Colors.white,
                  boxShadow: <BoxShadow>[
                    BoxShadow(
                      color: Colors.grey[300],
                      blurRadius: 3,
                      spreadRadius: 6,
                    )
                  ],
                ),
                child: Text("I render outside the \nwidget hierarchy."),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

A more elaborate example is found here.

Installation.

  • Instructions are here.

Inspiration

License.

Kategorien

Quell-Repository

Projekte, die dieses Paket verwenden

Noch keine Daten verfügbar.