Pakete, Repositories und App-Kategorien suchen

Cover von draggable_float_widget
Paketdetailsv0.1.0

draggable_float_widget

Dies ist ein draggable und schwebendes Flutter-Widget, dessen Sichtbarkeit über das Scrollereignis von ScrollView gesteuert werden kann.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
177.000
Likes
116
Pub-Punkte
150

Paket installieren

flutter pub add draggable_float_widget

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

Ein Flutter-Paket, das ein ziehbares, schwebendes Widget bereitstellt, das auf Scrollereignisse reagieren und automatisch anzeigen oder ausblenden kann. Ideal für die Erstellung interaktiver Benutzeroberflächenelemente wie schwebende Aktionsschaltflächen oder benutzerdefinierte Überlagerungen, die sich an das Scrollverhalten des Benutzers anpassen. Das Widget kann frei auf dem Bildschirm bewegt werden und passt seine Sichtbarkeit basierend auf der Scrollrichtung und Position innerhalb eines ScrollView an. Unterstützt alle wichtigen Plattformen einschließlich Android, iOS, Web, macOS, Windows und Linux.

Anwendungsfälle

  • Fließende Aktionen in scrollbaren Listen
  • interaktive Überlagerungen, die auf Scrollen reagieren
  • Benutzerdefinierte drag-and-drop-UI-Komponenten
  • Verbesserung der Navigation in mobilen Apps
  • Dynamische Benutzeroberflächenelemente in Webanwendungen

Hauptmerkmale

  • Draggable Positionierung
  • Scrollauslöste Sichtbarkeitssteuerung
  • Plattformübergreifende Kompatibilität
  • Glatte Animation während des Ziehens
  • Konfigurierbare Anzeige-/Versteckschwellen
  • Unterstützt mehrere Plattformziele

Geeignet für

  • Entwickler, die scrollbewusste Benutzeroberflächen erstellen
  • Mobile- und Web-Anwendungen, die dynamische schwebende Elemente benötigen
  • Designer, die gestenbasierte Interaktionen umsetzen
  • Apps mit komplexen Overlay-Anforderungen
  • Teams, die eine Multiplattform-Deployment-Zielsetzung verfolgen

Hinweise

  • Kann bei großen Listen eine Leistungsoptimierung erfordern
  • Die Sichtbarkeitslogik könnte für komplexe Scrollverhalten Anpassungen benötigen
  • Eingeschränkte integrierte Stiloptionen
  • Nicht ideal für statische floatende Elemente
  • Erfordert sorgfältige Behandlung in verschachtelten Scrollansichten

Original-README

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

draggable_float_widget

This is a draggable and floating Flutter widget, which can control its visibility through the scrolling event of ScrollView.

Usage

To use this plugin, add draggable_float_widget as a dependency in your pubspec.yaml file.

constructor
  • the constructor of component

    DraggableFloatWidget({
      Key? key,
      this.width = defaultWidgetWidth,
      this.height = defaultWidgetHeight,
      this.eventStreamController,
      this.config = const DraggableFloatWidgetBaseConfig(),
      required this.child,
      this.onTap,
    }) : super(key: key);
    
  • special field instructions

    property description default
    eventStreamController The [StreamController] of [OperateEvent] null
    config the base config of [DraggableFloatWidget] DraggableFloatWidgetBaseConfig()
  • the base config of component

    DraggableFloatWidgetBaseConfig({
      this.isFullScreen = true,
      this.appBarHeight = kToolbarHeight,
      this.initPositionXInLeft = true,
      this.initPositionYInTop = true,
      this.initPositionYMarginBorder = 0,
      this.borderLeft = defaultBorderWidth,
      this.borderRight = defaultBorderWidth,
      this.borderTop = defaultBorderWidth,
      this.borderTopContainTopBar = false,
      this.borderBottom = defaultBorderWidth,
      this.exposedPartWidthWhenHidden = defaultExposedPartWidthWhenHidden,
      this.animDuration = const Duration(milliseconds: 300),
      this.delayShowDuration = const Duration(milliseconds: 500),
      this.debug = false,
    });
    
example
  • the first, add scroll listener

    ⚠️Ignore this step if the component is not affected by ScrollView scrolling, and you don't need to pass an StreamController instance into the instance.

    NotificationListener(
      onNotification: (notification) {
        if (notification is ScrollStartNotification) {
          eventStreamController.add(OperateEvent.OPERATE_HIDE);
        } else if (notification is ScrollEndNotification) {
          eventStreamController.add(OperateEvent.OPERATE_SHOW);
        }
        return true;
      },
      child: ListView(...),
    )
    
  • the first way: stack mode

    Stack(
      children: [
        listView,
        DraggableFloatWidget(
          child: child,
          eventStreamController: eventStreamController,
          config: DraggableFloatWidgetBaseConfig(
            isFullScreen: false,
            initPositionYInTop: false,
            initPositionYMarginBorder: 50,
            borderBottom: navigatorBarHeight + defaultBorderWidth,
          ),
          onTap: () => print("Drag onTap!"),
        )
      ],
    )
    

    stack mode

  • the second way: overlay mode

    _overlayEntry = OverlayEntry(builder: (context) {
      return DraggableFloatWidget(
        child: widget.child,
        eventStreamController: widget.eventStreamController,
        config: DraggableFloatWidgetBaseConfig(
          initPositionYInTop: false,
          initPositionYMarginBorder: 50,
          borderTopContainTopBar: true,
          borderBottom: widget.navigatorBarHeight + defaultBorderWidth,
        ),
        onTap: () => print("Drag onTap!"),
      );
    });
    
    /// Warning: context cannot be the context of MaterialApp
    Overlay.of(context)?.insert(_overlayEntry!);
    

    overlay mode

Contributions

If you encounter any problem or the library is missing a feature feel free to open an issue. Feel free to fork, improve the package and make pull request.

License

MIT

Kategorien

Quell-Repository

Projekte, die dieses Paket verwenden