[英]ListView.builder throwing RedorBox error when setting scrollDirection to Axis.horizontal
I am using a ListView.builder
and a Gridview.builder
and need to make ListView
horizontal but when I set its scrollDirection
property it throws error (picture attached) [![enter image description here][1]][1]我正在使用ListView.builder
和Gridview.builder
并且需要使ListView
水平但是当我设置它的scrollDirection
属性时它会抛出错误(附图片)[![在此处输入图像描述][1]][1]
import 'package:flutter/material.dart';
class MenuPage extends StatefulWidget {
@override
_MenuPageState createState() => _MenuPageState();
}
class _MenuPageState extends State<MenuPage> {
List<String> litems = ["Hello", "how"];
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
physics: ScrollPhysics(),
child: Column(
children: <Widget>[
ListView.builder(
scrollDirection: Axis.horizontal,
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: EdgeInsets.all(8),
itemCount: 18,
itemBuilder: (context, index) {
return CategoryButton(title: "title");
}),
GridView.builder(
gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent: 200,
childAspectRatio: 3 / 2,
crossAxisSpacing: 20,
mainAxisSpacing: 20),
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: 18,
itemBuilder: (context, index) {
return Text('Some text more');
})
],
),
),
);
}
}
[1]: https://i.stack.imgur.com/D2knH.png
You have used ListView.builder
directly to the column widget.您已将ListView.builder
直接用于列小部件。 Column and its parent SingleChildScrollView widgets have infinity height and width. Column 及其父 SingleChildScrollView 小部件具有无限的高度和宽度。 You should set width and height for the ListView.builder widget or warp inside the Expanded
widget.您应该为 ListView.builder 小部件设置宽度和高度,或者在Expanded
小部件内设置扭曲。 I have resolved it by setting the height and widget.我通过设置高度和小部件解决了它。 Find the codes below.找到下面的代码。
class MenuPage extends StatefulWidget {
@override
_MenuPageState createState() => _MenuPageState();
}
class _MenuPageState extends State<MenuPage> {
final List<String> litems = ["Hello", "how"];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: SingleChildScrollView(
physics: ScrollPhysics(),
child: Column(
children: <Widget>[_buildListView(), _buildGridView()],
),
),
);
}
GridView _buildGridView() {
return GridView.builder(
gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent: 200,
childAspectRatio: 3 / 2,
crossAxisSpacing: 20,
mainAxisSpacing: 20),
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: 18,
itemBuilder: (context, index) {
return Text('Some text more');
},
);
}
Widget _buildListView() {
final deviceWidth = MediaQuery.of(context).size.width;
return Container(
width: deviceWidth,
height: 150.0,
child: ListView.builder(
scrollDirection: Axis.horizontal,
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: EdgeInsets.all(8),
itemCount: 18,
itemBuilder: (context, index) {
return Container(
width: 100,
height: 100,
child: TextButton(
onPressed: () {},
child: Text("title"),
),
);
},
),
);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.