Saya mencoba membuat halaman login sederhana untuk aplikasi Flutter saya. Saya telah berhasil membuat tombol TextFields dan Login / Signin. Saya ingin menambahkan ListView horizontal. Ketika saya menjalankan kode, elemen saya hilang, jika saya melakukannya tanpa ListView, tidak masalah lagi. Bagaimana saya bisa melakukan ini dengan benar?
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),
),
),
);
sumber
Saya punya masalah ini juga. Solusi saya adalah menggunakan
Expanded
widget untuk memperluas ruang sisa.sumber
Alasan terjadinya kesalahan:
Column
meluas ke ukuran maksimum dalam arah sumbu utama (sumbu vertikal), dan begitu juga denganListView
.Solusi
Jadi, Anda perlu membatasi ketinggian
ListView
. Ada banyak cara untuk melakukannya, Anda bisa memilih yang paling sesuai dengan kebutuhan Anda.Jika Anda ingin mengizinkan
ListView
untuk mengambil semua ruang yang tersisa di dalamColumn
digunakanExpanded
.Jika Anda ingin membatasi Anda
ListView
untuk tertentuheight
, Anda dapat menggunakanSizedBox
.Jika Anda
ListView
kecil, Anda dapat mencobashrinkWrap
properti di atasnya.sumber
Saya memiliki
SingleChildScrollView
sebagai orang tua, dan satuColumn
Widget dan kemudian Widget Tampilan Daftar sebagai anak terakhir.Menambahkan properti ini di Tampilan Daftar Berhasil untuk saya.
sumber
Widget yang Diperluas meningkatkan ukurannya sebanyak mungkin dengan ruang yang tersedia Karena ListView pada dasarnya memiliki ketinggian yang tak terbatas, ini akan menyebabkan kesalahan.
Di sini kita harus menggunakan widget Fleksibel karena hanya akan mengambil ruang yang diperlukan karena Diperluas mengambil layar penuh meskipun tidak ada cukup widget untuk ditampilkan di layar penuh.
sumber
Sebenarnya, ketika Anda membaca dokumen, ListView harus berada di dalam Widget yang Diperluas agar dapat berfungsi.
}
sumber
Seperti yang telah disebutkan oleh orang lain di atas, Bungkus listview dengan Expanded adalah solusinya.
Tetapi ketika Anda berurusan dengan Kolom bersarang, Anda juga perlu membatasi ListView Anda ke ketinggian tertentu (sering menghadapi masalah ini).
Jika ada yang punya solusi lain, sebutkan di komentar atau tambahkan jawaban.
Contoh
sumber
Anda dapat menggunakan
Flex
danFlexible
widget. sebagai contoh:);
sumber
sumber
Coba gunakan Slivers:
sumber