Ich versuche, eine einfache Anmeldeseite für meine Flutter-App zu erstellen. Ich habe die Schaltflächen TextFields und Login / Signin erfolgreich erstellt. Ich möchte eine horizontale ListView hinzufügen. Wenn ich den Code ausführe, verschwinden meine Elemente. Wenn ich es ohne ListView mache, ist es wieder in Ordnung. Wie kann ich das richtig machen?
return new MaterialApp(
home: new Scaffold(
appBar: new AppBar(
title: new Text("Login / Signup"),
),
body: new Container(
child: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new TextField(
decoration: new InputDecoration(
hintText: "E M A I L A D D R E S S"
),
),
new Padding(padding: new EdgeInsets.all(15.00)),
new TextField(obscureText: true,
decoration: new InputDecoration(
hintText: "P A S S W O R D"
),
),
new Padding(padding: new EdgeInsets.all(15.00)),
new TextField(decoration: new InputDecoration(
hintText: "U S E R N A M E"
),),
new RaisedButton(onPressed: null,
child: new Text("SIGNUP"),),
new Padding(padding: new EdgeInsets.all(15.00)),
new RaisedButton(onPressed: null,
child: new Text("LOGIN"),),
new Padding(padding: new EdgeInsets.all(15.00)),
new ListView(scrollDirection: Axis.horizontal,
children: <Widget>[
new RaisedButton(onPressed: null,
child: new Text("Facebook"),),
new Padding(padding: new EdgeInsets.all(5.00)),
new RaisedButton(onPressed: null,
child: new Text("Google"),)
],)
],
),
),
margin: new EdgeInsets.all(15.00),
),
),
);
quelle
Ich habe auch dieses Problem. Meine Lösung ist
Expanded
Widget verwenden, um den verbleibenden Speicherplatz zu erweitern.quelle
Grund für den Fehler:
Column
erweitert sich auf die maximale Größe in Richtung der Hauptachse (vertikale Achse), ebenso wie dieListView
.Lösungen
Sie müssen also die Höhe des
ListView
. Es gibt viele Möglichkeiten, dies zu tun. Sie können wählen, welche Ihren Anforderungen am besten entspricht.Wenn Sie zulassen möchten, dass
ListView
der gesamte verbleibende Platz im Inneren belegtColumn
wirdExpanded
.Wenn Sie Ihre
ListView
auf bestimmte beschränken möchtenheight
, können Sie verwendenSizedBox
.Wenn Sie
ListView
klein sind, können Sie versuchen,shrinkWrap
Eigentum darauf.quelle
Ich habe
SingleChildScrollView
als Eltern und eineColumn
Widget und dann List View Widget als letztes Kind.Hinzufügen dieser Eigenschaften in der Listenansicht Hat bei mir funktioniert.
quelle
Das erweiterte Widget vergrößert es so weit wie möglich mit dem verfügbaren Speicherplatz. Da ListView im Wesentlichen eine unendliche Höhe hat, verursacht es einen Fehler.
Hier sollten wir das flexible Widget verwenden, da es nur den Platz beansprucht, den es als erweitertes Vollbild benötigt, auch wenn nicht genügend Widgets zum Rendern im Vollbildmodus vorhanden sind.
quelle
Wenn Sie Dokumente lesen, sollte sich ListView im erweiterten Widget befinden, damit es funktioniert.
}}
quelle
Wie bereits von anderen erwähnt, ist Wrap listview with Expanded die Lösung.
Wenn Sie sich jedoch mit verschachtelten Spalten befassen, müssen Sie Ihre ListView auch auf eine bestimmte Höhe beschränken (dieses Problem trat häufig auf).
Wenn jemand eine andere Lösung hat, bitte im Kommentar erwähnen oder Antwort hinzufügen.
Beispiel
quelle
Sie können
Flex
undFlexible
Widgets verwenden. beispielsweise:);
quelle
Versuchen Sie es mit Splittern:
quelle