Listview ';约束。hasBoundedWidth';:事实并非如此
下面是我的代码Listview ';约束。hasBoundedWidth';:事实并非如此,listview,flutter,Listview,Flutter,下面是我的代码 main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: "Student Info", debugShowCheckedModeBanner: false, home: SafeArea(
main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Student Info",
debugShowCheckedModeBanner: false,
home: SafeArea(
child: HomePage(),
),
);
}
}
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: ListView(
children: <Widget>[StudentScreenAppBar(), StudentGraduateList()],
),
);
}
}
class StudentScreenAppBar extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
AppBar(
leading: IconButton(
icon: Icon(
Icons.arrow_back_ios,
color: Colors.black,
size: 20.0,
),
onPressed: () {}),
centerTitle: true,
title: Text(
"Student Info",
style: TextStyle(color: Colors.black),
),
actions: <Widget>[
IconButton(
icon: Icon(
Icons.settings,
size: 20.0,
color: Colors.black,
),
onPressed: () {}),
// SizedBox(width: 10.0,),
IconButton(
icon: Icon(
Icons.settings_ethernet,
color: Colors.black,
size: 20.0,
),
onPressed: () {})
],
elevation: 0.0,
backgroundColor: Colors.white,
),
Container(
decoration: BoxDecoration(border: Border.all(color: Colors.black)),
padding: const EdgeInsets.fromLTRB(8.0, 2.0, 8.0, 2.0),
child: Image.asset(
"images/isdi_school.png",
width: 40.0,
height: 15.0,
fit: BoxFit.contain,
))
],
);
}
}
class StudentGraduateList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.fromLTRB(0.0, 20.0, 0.0, 0.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
yearListForUgPg("Under Graduate"),
yearListForUgPg("Post Graduate")
],
),
);
}
Widget yearListForUgPg(String graduationName) {
return Column(
children: <Widget>[
Container(
padding: const EdgeInsets.fromLTRB(25.0, 4.0, 25.0, 4.0),
child: Text(
graduationName,
style:
TextStyle(color: Colors.white, fontFamily: "suisseintlMedium"),
),
decoration: BoxDecoration(color: Colors.black),
),
ListView.builder(
shrinkWrap: true,
itemBuilder: (context, index) {
return Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
"2018",
style: TextStyle(
fontFamily: "okomitoBold", color: Colors.black),
),
Icon(Icons.arrow_forward)
],
);
},
itemCount: 10,
)
],
);
}
}
main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“学生信息”,
debugShowCheckedModeBanner:false,
家:安全区(
子:主页(),
),
);
}
}
类主页扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回脚手架(
背景颜色:Colors.white,
正文:ListView(
儿童:[StudentScreenAppBar(),StudentGraduateList()],
),
);
}
}
类StudentScreenAppBar扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回列(
mainAxisSize:mainAxisSize.min,
mainAxisAlignment:mainAxisAlignment.start,
儿童:[
AppBar(
领先:IconButton(
图标:图标(
Icons.arrow\u back\u ios,
颜色:颜色,黑色,
尺寸:20.0,
),
onPressed:(){}),
标题:对,
标题:正文(
“学生信息”,
样式:TextStyle(颜色:Colors.black),
),
行动:[
图标按钮(
图标:图标(
图标。设置,
尺寸:20.0,
颜色:颜色,黑色,
),
onPressed:(){}),
//尺寸标注框(宽度:10.0,),
图标按钮(
图标:图标(
图标。设置\u以太网,
颜色:颜色,黑色,
尺寸:20.0,
),
onPressed:(){})
],
标高:0.0,
背景颜色:Colors.white,
),
容器(
装饰:框装饰(边框:border.all(颜色:Colors.black)),
填充:LTRB(8.0,2.0,8.0,2.0)中的常量边集,
子:Image.asset(
“images/isdi_school.png”,
宽度:40.0,
身高:15.0,
适合:BoxFit.contain,
))
],
);
}
}
类StudentGraduateList扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回填充(
填充:从LTRB(0.0,20.0,0.0,0.0)开始的常数边设置,
孩子:排(
mainAxisAlignment:mainAxisAlignment.space,
儿童:[
UGPG(“研究生以下”),
UGPG(研究生)年度名单
],
),
);
}
Widget yearListForUgPg(字符串刻度名称){
返回列(
儿童:[
容器(
填充:LTRB(25.0,4.0,25.0,4.0)中的常数边集,
子:文本(
毕业名称,
风格:
TextStyle(颜色:Colors.white,fontFamily:“Suisseintmedium”),
),
装饰:盒子装饰(颜色:颜色。黑色),
),
ListView.builder(
收缩膜:对,
itemBuilder:(上下文,索引){
返回行(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
正文(
"2018",
样式:TextStyle(
fontFamily:“okomitoBold”,颜色:颜色。黑色),
),
图标(图标。向前箭头)
],
);
},
物品计数:10,
)
],
);
}
}
ListView
小部件不显示。如果我对ListView
进行注释,那么代码工作正常,我可以看到UI
。我尝试将列表视图
包装在扩展且灵活的小部件中,但它不起作用
如果我取消注释列表视图
,则会出现错误,指出'constraints.hasbundedwidth'
:不正确。我正试图在我的UI中实现以下目标:
!![Image][1]只需将您的-
列
包装在扩展的
小部件中:这样您的列
将尝试占用父行
中的可用空间
更新代码:
class StudentGraduateList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.fromLTRB(0.0, 20.0, 0.0, 0.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Expanded(child: yearListForUgPg("Under Graduate")),
Expanded(child: yearListForUgPg("Post Graduate"))
],
),
);
}
class StudentGraduateList扩展了一个小部件{
@凌驾
小部件构建(构建上下文){
返回填充(
填充:从LTRB(0.0,20.0,0.0,0.0)开始的常数边设置,
孩子:排(
mainAxisAlignment:mainAxisAlignment.space,
儿童:[
扩展(儿童:UGPG(“未毕业”)的年表),
扩展(儿童:年表FORUGPG(“研究生”))
],
),
);
}