No busques más en otras páginas porque has llegado al sitio correcto, contamos con la respuesta que quieres encontrar pero sin liarte.
Solución:
Solo quita el Expanded
Widget para evitar llenar el espacio disponible y usar un Contenedor padre con una altura fija, igual que el itemExtent
valor:
Column(
children: [
Container(
height: 100.0,
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemExtent: 100.0,
itemCount: temp.length,
itemBuilder: (BuildContext context, int index)
return ListTile(
title: Text(temp[index]),
onTap: ()
print(temp[index]);
);
),
),
Container(
child: Text('data'),
)
],
),
agrega este itemExtent
en tus ListView
Propiedades, itemExtent
define el tamaño de cada niño. así ⬇️
ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: 5,
itemExtent: 50,
itemBuilder: (context, index)
return TistTile()
)
Y la implementación de este dense:true
en tus ListTile
Propiedades, Las dense
El parámetro hace que el texto sea más pequeño y empaqueta todo junto. así ⬇️
ListTile(
title: Text("Tony Stark"),
subtitle: Text("list[index].name",
style: TextStyle(fontSize: 14.0),),
contentPadding: EdgeInsets.symmetric(vertical: 0.0, horizontal:
16.0),
dense:true,
);
Puede cambiar la cantidad de contenido que se inserta a la izquierda y a la derecha (pero no en la parte superior o inferior) configurando el contentPadding
. El valor predeterminado es 16.0
pero aquí nos pondremos a 0.0
:
Debe usar un Contenedor o Padding en lugar de ListTile si necesita más personalización.
No puede establecer la altura, pero puede reducirla configurando el denso propiedad a true:
ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: list.length,
itemBuilder: (context, index)
return ListTile(
title: Text(list[index].name,style: TextStyle(fontSize: 20.0),),
contentPadding: EdgeInsets.symmetric(vertical: 0.0, horizontal: 16.0),
dense:true,
);
,
);
ListTile:
Una única fila de altura fija que normalmente contiene algo de texto, así como un icono inicial o final.
Para ser accesibles, los widgets iniciales y finales que se pueden tocar deben tener un tamaño mínimo de 48×48. Sin embargo, para adherirse a la especificación Material, los widgets finales y principales en ListTiles de una línea deben ser visualmente como máximo 32 (densos: true) o 40 (denso: false) de altura, lo que puede entrar en conflicto con el requisito de accesibilidad.
Por esta razón, un ListTile de una línea permite que la altura de los widgets iniciales y finales se restrinja por la altura del ListTile. Esto permite la creación de widgets iniciales y finales que se pueden tocar y que son lo suficientemente grandes, pero depende del desarrollador asegurarse de que sus widgets sigan las especificaciones del material.
https://api.flutter.dev/flutter/material/ListTile-class.html
No se te olvide comunicar este post si lograste el éxito.