Ich möchte eine endliche Anzahl von Elementen anzeigen und umbrechen, wenn der Benutzer in beide Richtungen scrollt. Wie mache ich das?Wie kann ich mit Flattern eine scrollbare Wrapping-Ansicht erstellen?
1
A
Antwort
0
Sie können dies nicht mit einer unendlichen Länge ListView.builder
lösen, weil es nur in einer Richtung geht. Wenn Sie in beide Richtungen umbrechen möchten, ist es möglich, bidirektionales Wrapping mit einer Stack
von zwei in entgegengesetzte Richtungen verlaufenden Ansichtsfenstern zu simulieren.
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(
home: new HomePage(),
));
}
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Wrapping List View'),
),
body: new WrappingListView.builder(
itemCount: 10,
itemBuilder: (BuildContext context, int index) {
return new Card(
child: new Container(
height: 50.0,
color: Colors.blue.withOpacity(index/10),
child: new Center(
child: new Text('Card $index')
),
),
);
},
),
);
}
}
class WrappingListView extends StatefulWidget {
factory WrappingListView({ Key key, List<Widget> children }) {
return new WrappingListView.builder(
itemCount: children.length,
itemBuilder: (BuildContext context, int index) {
return children[index % children.length];
},
);
}
WrappingListView.builder({ Key key, this.itemBuilder, this.itemCount })
: super(key: key);
final int itemCount;
final IndexedWidgetBuilder itemBuilder;
WrappingListViewState createState() => new WrappingListViewState();
}
class UnboundedScrollPosition extends ScrollPositionWithSingleContext {
UnboundedScrollPosition({
ScrollPhysics physics,
ScrollContext context,
ScrollPosition oldPosition,
}) : super(physics: physics, context: context, oldPosition: oldPosition);
@override
double get minScrollExtent => double.NEGATIVE_INFINITY;
}
class UnboundedScrollController extends ScrollController {
@override
UnboundedScrollPosition createScrollPosition(
ScrollPhysics physics,
ScrollContext context,
ScrollPosition oldPosition,
) {
return new UnboundedScrollPosition(
physics: physics,
context: context,
oldPosition: oldPosition,
);
}
}
class WrappingListViewState extends State<WrappingListView> {
UnboundedScrollController _controller = new UnboundedScrollController();
UnboundedScrollController _negativeController = new UnboundedScrollController();
@override
void initState() {
_controller.addListener(() {
_negativeController.jumpTo(
-_negativeController.position.extentInside -
_controller.position.pixels,
);
});
}
@override
Widget build(BuildContext context) {
return new Stack(
children: <Widget>[
new CustomScrollView(
physics: new AlwaysScrollableScrollPhysics(),
controller: _negativeController,
reverse: true,
slivers: <Widget>[
new SliverList(
delegate: new SliverChildBuilderDelegate(
(BuildContext context, int index) {
return widget.itemBuilder(
context,
(widget.itemCount - 1 - index) % widget.itemCount,
);
}
),
),
],
),
new ListView.builder(
controller: _controller,
itemBuilder: (BuildContext context, int index) {
return widget.itemBuilder(context, index % widget.itemCount);
},
),
],
);
}
}
Verwandte Themen
- 1. Wie kann ich scrollbare Spalten in Bootstrap erstellen?
- 2. Wie erstelle ich eine scrollbare Textbox?
- 3. Wie kann ich eine finger scrollbare Textbox in WM 6.5 erstellen?
- 4. Wie mache ich eine scrollbare Tabelle mit CSS
- 5. Wie kann ich eine TabView mit variabler Höhe Inhalt in einer scrollbaren Ansicht mit Flattern?
- 6. Flexbox - eine scrollbare, eine feste?
- 7. Erstellen Sie eine scrollbare Schaltflächenliste in Windows Form C# -Anwendung
- 8. effizienteste Möglichkeit, eine benutzerdefinierte horizontal scrollbare Rasterliste zu erstellen?
- 9. Wie mache ich eine Scrollbare TextView in CollapsingToolbar?
- 10. Problem mit flattern JS Menü
- 11. Scrollbare Seite mit Listview
- 12. Wie kann ich mit einer Liste von Checkboxen umgehen, die dynamisch im Flattern erzeugt werden?
- 13. Scrollbare Panelcontrol mit Groupboxes
- 14. Scrollbare ImageView mit ListView
- 15. Flattern TextField Autocomplete Overlay
- 16. Kann ich eine Konsolenanwendung mit Xamarin.Mac erstellen?
- 17. Wie kann ich nur eine Einladung erstellen?
- 18. Wie kann ich eine komplexe Buttonform erstellen?
- 19. Wie kann ich eine gewichtete Zufallsliste erstellen?
- 20. Ich möchte eine scrollbare ListView oder TableView für eine QT/QML Touchscreen-Anwendung erstellen
- 21. Bild flattern Pixelliste
- 22. Flattern: Facebook und Google-Authentifizierung
- 23. Scrollbare Fortschrittsbalken
- 24. Wie kann ich eine hierarchische Suche erstellen?
- 25. Wie kann ich eine vertikale UIToolbar erstellen?
- 26. Wie kann ich eine Treppenstufe/Kurve erstellen?
- 27. Wie kann ich eine neue Farbe erstellen?
- 28. Wie kann ich eine neue Anmerkung erstellen?
- 29. Wie kann ich eine Kartenansicht erstellen?
- 30. Wie kann ich eine benutzerspezifische SharedPreference erstellen?