Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 如何将ListView居中?_Dart_Flutter_Flutter Layout - Fatal编程技术网

Dart 如何将ListView居中?

Dart 如何将ListView居中?,dart,flutter,flutter-layout,Dart,Flutter,Flutter Layout,我有一个专栏,但问题是如果屏幕高度很小,就会出现错误: 底部溢出5.0像素 列( mainAxisAlignment:mainAxisAlignment.center, 儿童:[ CenterBoxText(), 尺寸箱(高度:1), 升起的按钮( child:Text('Example'), ), ], ), 我已尝试将列替换为列表视图,此停止错误。但现在大屏幕上的小部件是从顶部显示的,而不是在中间。因为ListView没有mainAxisAlignment:mainAxisAlignmen

我有一个专栏,但问题是如果屏幕高度很小,就会出现错误:

底部溢出5.0像素

列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
CenterBoxText(),
尺寸箱(高度:1),
升起的按钮(
child:Text('Example'),
),
],
),
我已尝试将
替换为
列表视图
,此停止错误。但现在大屏幕上的小部件是从顶部显示的,而不是在中间。因为
ListView
没有
mainAxisAlignment:mainAxisAlignment.center

如何解决


谢谢

如果列在创建溢出时遇到问题,则可能是纵轴溢出。ListView允许在垂直轴上滚动,并允许溢出像素位于查看屏幕下方。这就是为什么ListView适合您而Column不适合您的原因。因为您需要列,所以只需要将列包装在可展开的容器中,以便列适合可用空间

下面是一个完整的示例:

import 'package:flutter/material.dart';

class ColumnTest extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: <Widget>[
          Expanded(
              child: Center(
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
                //CenterBoxText(),
                SizedBox(height: 1),
                RaisedButton(
                  child: Text('example'),
                ),
            ],
          ),
              ))
        ],
      ),
    );
  }
}
导入“包装:颤振/材料.省道”;
类ColumnTest扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:专栏(
儿童:[
扩大(
儿童:中心(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
//CenterBoxText(),
尺寸箱(高度:1),
升起的按钮(
child:Text('example'),
),
],
),
))
],
),
);
}
}

尝试使用
SingleChildScrollView
小部件包装您的
小部件,它将提供滚动功能。 像这样:

 SingleChildScrollView(
              child: Column(
                       mainAxisAlignment: MainAxisAlignment.center,
                       children: <Widget>[
                         CenterBoxText(),
                         SizedBox(height: 1),
                         RaisedButton(
                           child: Text(‘Example’),
                         ),
                       ],
                     ),
                    ),
SingleChildScrollView(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
CenterBoxText(),
尺寸箱(高度:1),
升起的按钮(
child:Text('Example'),
),
],
),
),

替换为
列表视图


在您的
ListView
-添加-
shrinkWrap:true,
然后用
Center
小部件包装您的
ListView

您到底想实现什么?是否将ListView始终放在屏幕的中心?还是以所有元素为中心的ListView?@Escobar感谢您的回复!我希望
ListView
位于屏幕中央感谢您的回复!我不能使用
,因为小屏幕尺寸上的像素溢出可以用ListView代码更新您的问题吗?我可以为您提供一个答案。只需将
Column
替换为
ListView
并删除
mainAxisAlignment:mainAxisAlignment.center
 SingleChildScrollView(
              child: Column(
                       mainAxisAlignment: MainAxisAlignment.center,
                       children: <Widget>[
                         CenterBoxText(),
                         SizedBox(height: 1),
                         RaisedButton(
                           child: Text(‘Example’),
                         ),
                       ],
                     ),
                    ),