Wenn ich eine PageView
habe, wie kann ich das Standard-Scroll-Verhalten (Wischen) deaktivieren und so machen, dass das nächste Element durch Antippen auf eine Schaltfläche gescrollt wird ?PageView: Deaktivieren Sie das Standard-Scrolling und ersetzen Sie es durch Tap-Ereignis
Antwort
klauen So deaktivieren Sie einstellen können:
PageView(physics:new NeverScrollableScrollPhysics())
Also ich habe versucht, dies herauszufinden, wie folgt, und wenn jemand eine bessere Lösung hat, teilen Sie es bitte mit uns.
eine Schaltfläche in den PageView
zum nächsten Punkt gehen Fabrikat:
ein PageController
zu Ihrem PageView
hinzufügen und den Methoden animateTo
oder jumpTo
auf den gewünschten Punkt zu gehen, wenn der Benutzer eine Taste drückt. Ich habe es so gemacht, dass die gesamte Breite der aktuellen Ansicht der Versatz ist, so dass der Übergang zum nächsten Gegenstand erfolgreich erfolgt.
onPressed:() {
c.animateTo(MediaQuery
.of(context)
.size
.width, duration: new Duration(seconds: 1),
curve: Curves.easeIn);
}
Deaktivieren Sie die Standard klauen Verhalten:
Alles, was ich tat, war meine PageView
innen IgnorePointer
einpacken jede Interaktion mit dem Benutzer zu ignorieren, ich diese Lösung nicht gefällt wirklich, kann es gut funktionieren in In diesem Beispiel möchte ich jedoch in anderen Situationen, dass der Benutzer mit einem einzelnen Widget auf der aktuell angezeigten Seite interagieren soll.
Das ist mein Beispielcode:
class FirstPage extends StatefulWidget {
@override
_FirstPageState createState() => new _FirstPageState();
}
class _FirstPageState extends State<FirstPage> {
ScrollController c;
@override
void initState() {
super.initState();
c = new PageController();
}
@override
Widget build(BuildContext context) {
return new Scaffold(
floatingActionButton: new Row(
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.end,
children: <Widget>[
new FloatingActionButton(
child: new Icon(Icons.navigate_before), onPressed:() {
//c.animateTo(MediaQuery.of(context).size.width, duration: new Duration(seconds: 1), curve: Curves.easeIn);
c.jumpTo(0.0);
}),
new Container(width: 15.0,),
new FloatingActionButton(
child: new Icon(Icons.navigate_next), onPressed:() {
c.animateTo(MediaQuery
.of(context)
.size
.width, duration: new Duration(seconds: 1),
curve: Curves.easeIn);
}),
],),
appBar: new AppBar(title: new Text("First Page")),
body: new IgnorePointer(child: new PageView(
controller: c,
children: <Widget>[
new Column (
children: <Widget>[new Container (child: new Text("First Item"))
]),
new Container (child: new Text("Second Item")),
],
),),
);
}
}
Irgendwelche Vorschläge oder Änderungen an dieser Lösung sind willkommen.
- 1. Ersetzen Sie das Zeichen durch die Anzahl
- 2. durch RegEx Looping Spiele und ersetzen Sie das aktuelle Spiel
- 3. Suchen Element und ersetzen Sie es
- 4. aktivieren und deaktivieren Sie das Kontrollkästchen, wenn Sie auf das Etikett durch jQuery
- 5. So ersetzen Sie das letzte Wort durch das aktuelle Wort
- 6. Ersetzen Sie inner_join durch semi_join
- 7. Ersetzen Sie "\" durch "\ /" in C#
- 8. Deaktivieren Sie das Optionsfeld
- 9. Bewegen Sie den Text und ersetzen Sie ihn durch image
- 10. Ersetzen Sie Sonderzeichen durch VBA
- 11. Ersetzen Sie hdf5 durch sqlite
- 12. Ersetzen Sie ein Element durch ein anderes, wenn es existiert
- 13. Wenn Formular senden, ersetzen Sie es durch Eingaben Wert.
- 14. Ersetzen Sie bedingt durch Polymorphie - wie es funktioniert?
- 15. Ersetzen Sie diese OpenGL-Funktionen durch OpenGL ES?
- 16. Excel VBA DoubleClick: Ersetzen Sie die Zahl durch das Symbol
- 17. Ersetzen Sie das letzte Vorkommen von Speicherplatz durch sed
- 18. Ersetzen Sie das aktuelle Bild in JPanel durch ein anderes
- 19. Suchen Sie ein Wort und ersetzen Sie es durch Wörter aus der Datei
- 20. Ersetzen Sie [StructLayout] durch etwas, das System.Runtime.InteropServices nicht verwendet?
- 21. Deaktivieren Sie das Streudiagramm, und drucken Sie nur die Regressionslinie
- 22. SQL Server - Ersetzen Sie das Datenfeld durch ein anderes Datum
- 23. Ersetzen Sie das letzte Komma in einer Zeichenfolge durch '&' - Ruby
- 24. Suchen Sie Text zwischen zwei Tags und ersetzen Sie es durch die Großbuchstabe desselben Textes
- 25. So ersetzen Sie das Element durch ng-transclude
- 26. Ersetzen Sie das Video durch ein fehlerhaftes Bild
- 27. Importieren Sie Csv-Dateien in Excel und ersetzen Sie Komma, das durch Spalten trennt
- 28. Tkinker Ersetzen Sie das untere Taskleistensymbol durch etwas anderes
- 29. Ersetzen Sie Komma durch das Dezimaltrennzeichen von TextField
- 30. ersetzen Sie das Menü und kleben Sie es oben auf Scroll