Estou tentando construir uma página de login simples para meu aplicativo Flutter. Criei com sucesso os botões TextFields e Login / Signin. Eu quero adicionar um ListView horizontal. Quando eu executo o código, meus elementos desaparecem, se eu fizer isso sem o ListView, tudo bem novamente. Como posso fazer isso corretamente?
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),
),
),
);
fonte
Eu também tenho esse problema. Minha solução é usar o
Expanded
widget para expandir o espaço restante.fonte
Motivo do erro:
Column
se expande para o tamanho máximo na direção do eixo principal (eixo vertical), e o mesmo acontece com oListView
.Soluções
Portanto, você precisa restringir a altura do
ListView
. Existem muitas maneiras de fazer isso, você pode escolher a que melhor se adapta às suas necessidades.Se você quiser permitir
ListView
que ocupe todo o espaço restante dentro,Column
useExpanded
.Se quiser limitar o seu
ListView
a certosheight
, você pode usarSizedBox
.Se o seu
ListView
for pequeno, você pode tentarshrinkWrap
propriedades nele.fonte
Eu tenho
SingleChildScrollView
como pai, umColumn
widget e o widget de visualização de lista como último filho.Adicionando essas propriedades na exibição de lista funcionou para mim.
fonte
O widget expandido aumenta seu tamanho o máximo que pode com o espaço disponível. Como ListView tem essencialmente uma altura infinita, ele causará um erro.
Aqui, devemos usar o widget Flexível, pois ele ocupará apenas o espaço necessário, já que o Expandido ocupa a tela inteira, mesmo que não haja widgets suficientes para renderizar na tela inteira.
fonte
Na verdade, quando você lê documentos, o ListView deve estar dentro do widget expandido para que possa funcionar.
}
fonte
Como foi mencionado por outros acima, Wrap listview with Expanded é a solução.
Mas quando você lida com colunas aninhadas, você também precisará limitar seu ListView a uma certa altura (enfrentou muito esse problema).
Se alguém tiver outra solução por favor, mencione em comentário ou adicione resposta.
Exemplo
fonte
Você pode usar
Flex
eFlexible
widgets. por exemplo:);
fonte
Tente usar Slivers:
fonte