[英]How can I make it scrollable
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: PreferredSize(
preferredSize: const Size.fromHeight(50),
child: AppBar(
flexibleSpace: Container(
decoration: const BoxDecoration(
gradient: GlobalVariables.appBarGradient,
),
),
title: Text(
widget.category,
style: const TextStyle(
color: Colors.black,
),
),
),
),
body: productList == null
? const Loader()
: Column(
children: [
Container(
padding:
const EdgeInsets.symmetric(horizontal: 15, vertical: 10),
alignment: Alignment.topLeft,
child: Text(
'Keep shopping for ${widget.category}',
style: const TextStyle(
fontSize: 20,
),
),
),
SizedBox(
height: 170,
child: GridView.builder(
scrollDirection: Axis.horizontal,
padding: const EdgeInsets.only(left: 15),
itemCount: productList!.length,
gridDelegate:
const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 1,
childAspectRatio: 1.4,
mainAxisSpacing: 10,
),
itemBuilder: (context, index) {
final product = productList![index];
return GestureDetector(
onTap: () {
Navigator.pushNamed(
context,
ProductDetailScreen.routeName,
arguments: product,
);
},
child: Column(
children: [
SizedBox(
height: 130,
child: DecoratedBox(
decoration: BoxDecoration(
border: Border.all(
color: Colors.black12,
width: 0.5,
),
),
child: Padding(
padding: const EdgeInsets.all(10),
child: Image.network(
product.images[0],
),
),
),
),
Container(
alignment: Alignment.topLeft,
padding: const EdgeInsets.only(
left: 0,
top: 5,
right: 15,
),
child: Text(
product.name,
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
),
],
),
);
},
),
),
我在 child 中嘗試了 SingleChildScrollView 但它沒有幫助。
代碼圖像
您正在使用scrollDirection: Axis.horizontal
,因此它是水平滾動的。 您可以將其刪除或設置為scrollDirection: Axis.vertical,
on GridView。
child: GridView.builder(
scrollDirection: Axis.vertical, //this by default
padding: const EdgeInsets.only(left: 15),
無需提供固定高度,使用Expnaded
小部件獲取可用高度,遵循此代碼段
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
Container(
padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 10),
alignment: Alignment.topLeft,
child: Text(
'Keep shopping for',
style: const TextStyle(
fontSize: 20,
),
),
),
Expanded(
child: GridView.builder(
padding: const EdgeInsets.only(left: 15),
itemCount: 44,
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 1,
childAspectRatio: 1.4,
mainAxisSpacing: 10,
),
itemBuilder: (context, index) {
// final product = productList![index];
return GestureDetector(
onTap: () {},
child: Column(
children: [
SizedBox(
height: 130,
child: DecoratedBox(
decoration: BoxDecoration(
border: Border.all(
color: Colors.black12,
width: 0.5,
),
),
child: Padding(
padding: const EdgeInsets.all(10),
// child: Image.network(
// product.images[0],
// ),
),
),
),
Container(
alignment: Alignment.topLeft,
padding: const EdgeInsets.only(
left: 0,
top: 5,
right: 15,
),
child: Text(
"name",
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
),
],
),
);
},
),
)
],
),
);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.