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(“研究生”))
],
),
);
}