为什么ListView必须由MaterialApp包装?

为什么ListView必须由MaterialApp包装?,listview,flutter,Listview,Flutter,我想知道为什么在Flatter中,Listview不同于不能直接返回到runApp()的文本 void main()=>runApp(MyApp()); 类MyApp扩展了无状态小部件{ @凌驾 小部件构建(构建上下文){ 返回材料PP( 主页:ListView( 填充:常量边集。全部(8), 儿童:[ 容器( 身高:50, 颜色:颜色。琥珀色[600], 子项:常量中心(子项:文本(‘条目A’), ), ], ), ); } } 如果ListView包装在MaterialApp中,它就工作了

我想知道为什么在Flatter中,Listview不同于不能直接返回到runApp()的文本

void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
主页:ListView(
填充:常量边集。全部(8),
儿童:[
容器(
身高:50,
颜色:颜色。琥珀色[600],
子项:常量中心(子项:文本(‘条目A’),
),
],
),
);
}
}
如果ListView包装在MaterialApp中,它就工作了。但是,如果直接返回或在容器中返回,如下所示:

void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回容器(
子:ListView(
填充:常量边集。全部(8),
儿童:[
容器(
身高:50,
颜色:颜色。琥珀色[600],
子项:常量中心(子项:文本(‘条目A’),
),
],
),
);
}
}
我有错误。
我已经读了很多关于颤振的文章,包括官方文档的Listview api,但是没有人解释原因。尽管有人在github()中提交了一个问题,但解算器只告诉他如何修复该问题,而没有说明原因。

ListView希望定义文本方向。MaterialApp是为您定义的,但如果您不想使用它,您可以使用自己的

ListView需要该属性来计算滚动的方式

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Directionality(textDirection: TextDirection.ltr, child: ListView(
      children: <Widget>[
        Text('Row One'),
        Text('Row Two'),
        Text('Row Three'),
        Text('Row Four'),
      ],
    ));
  }
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回方向性(textDirection:textDirection.ltr,子项:ListView(
儿童:[
文本(“第一行”),
文本(“第二行”),
文本(“第三行”),
文本(“第四行”),
],
));
}
}

ListView要求定义文本方向。MaterialApp是为您定义的,但如果您不想使用它,您可以使用自己的

ListView需要该属性来计算滚动的方式

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Directionality(textDirection: TextDirection.ltr, child: ListView(
      children: <Widget>[
        Text('Row One'),
        Text('Row Two'),
        Text('Row Three'),
        Text('Row Four'),
      ],
    ));
  }
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回方向性(textDirection:textDirection.ltr,子项:ListView(
儿童:[
文本(“第一行”),
文本(“第二行”),
文本(“第三行”),
文本(“第四行”),
],
));
}
}