Verschachtelte ScrollView im verschiebbaren Bedienfeld-Widget

9

Ich habe ein Bedienfeld-Widget, das vertikal in den unteren Bildschirmbereich hinein- und herausgezogen werden kann. In diesem Bedienfeld-Widget gibt es ein ListViewBildlauf, das gescrollt werden kann.

Ich versuche zu erreichen, dass das Bedienfeld das Ziehen zum Öffnen und Schließen übernimmt, ohne dass die verschachtelte Listenansicht stört. Sobald das Bedienfeld geöffnet ist, kann die Listenansicht gescrollt werden. Wenn die Listenansicht bereits oben nach unten gescrollt wird, übernimmt das Bedienfeld stattdessen die Geste und schließt sie.

Wie so:

Geben Sie hier die Bildbeschreibung ein

Ich habe versucht, die Bildlaufphysik in der ListView basierend auf der Panel-Position zu aktivieren / deaktivieren, aber es stellte sich heraus, dass dies nicht möglich ist.

Irgendwelche Ideen ? :) :)

Théo Champion
quelle
Haben Sie die Lösung ausprobiert, die ich Ihnen gegeben habe? Ich hoffe, es hilft.
Pablo Barrera
@PabloBarrera Endete und kodierte das Verhalten in DraggableScrollableSheetmir selbst, aber ich werde Ihre Antwort akzeptieren;)
Théo Champion

Antworten:

5

Das können Sie mit erreichen DraggableScrollableSheet.

Hier ist ein kurzes Beispiel, wie Sie es verwenden können:

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: Stack(
      children: <Widget>[
        Center(child: Text('Some content')),
        DraggableScrollableSheet(
          minChildSize: 0.2,
          initialChildSize: 0.2,
          builder: (context, scrollController) => Container(
            color: Colors.lightBlueAccent,
            child: ListView.builder(
              controller: scrollController,
              itemCount: 20,
              itemBuilder: (context, index) => SizedBox(
                height: 200,
                child: Text('Item $index'),
              ),
            ),
          ),
        ),
      ],
    ),
  );
}
Pablo Barrera
quelle