Flutter 中两个容器之间不需要的空间

Posted

技术标签:

【中文标题】Flutter 中两个容器之间不需要的空间【英文标题】:Unwanted space between 2 containers in Flutter 【发布时间】:2021-02-22 10:39:07 【问题描述】:

Unwanted space between 2 containers 我想删除文本小部件和列表视图(轮播滑块)之间的额外空间。这两个小部件都嵌入在 Container Widget 中。我没有在这 2 个小部件之间添加任何 SizedBox 或 Spacer。我不知道为什么这个额外的空间来了! 这是示例代码-

 class _DashBoardState extends State<DashBoard> 
   @override
  Widget build(BuildContext context) 
  return Scaffold(
    body: Column(
     children: [
       SizedBox(
         height: 50,
       ),
        Container(
         child: Text(
           'First Text Box',
           style: TextStyle(
             fontSize: 22,
           ),
         ),
       ),
       Container(
         height: 220,
        child: ListView(
          children: <Widget>[
            CarouselSlider(
              height: 180.0,
              enlargeCenterPage: true,
              autoPlay: true,
              aspectRatio: 16 / 9,
              autoPlayCurve: Curves.fastOutSlowIn,
              enableInfiniteScroll: true,
              autoPlayAnimationDuration: Duration(milliseconds: 800),
              viewportFraction: 0.8,
              items: [
                Container(
                  margin: EdgeInsets.all(5.0),
                  decoration: BoxDecoration(
                    borderRadius: BorderRadius.circular(10.0),
                    image: DecorationImage(
                      image: NetworkImage(
                          "https://images.pexels.com/photos/2116475/pexels-photo-2116475.jpeg? 
     auto=compress&cs=tinysrgb&dpr=2&w=500"),
                      fit: BoxFit.cover,
                    ),
                  ),
                  child: Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    crossAxisAlignment: CrossAxisAlignment.center,
                    children: <Widget>[
                      Text(
                        'Usable Flower for Health',
                        style: TextStyle(
                          color: Colors.white,
                          fontWeight: FontWeight.bold,
                          fontSize: 18.0,
                        ),
                      ),
                      Padding(
                        padding: const EdgeInsets.all(15.0),
                        child: Text(
                          'Lorem Ipsum is simply dummy text use for printing and type script',
                          style: TextStyle(
                            color: Colors.white,
                            fontSize: 15.0,
                          ),
                          textAlign: TextAlign.center,
                                         ],
            ),
           ],
         ),
         )
         ] ,
        ),
       );
     
    

【问题讨论】:

你的 CarouselSlider 是什么?你在使用 carousel_slider 包吗?你说它是一个 ListView,但 ListView 并不具备所有这些属性。能否提供 CarouselSlider 的代码(至少最少的代码)能够复现? 我在 pubsec.yaml 文件中使用了这个版本的 Carousel Slider:carousel_slider: ^1.4.1 【参考方案1】:

我认为额外的空间来自 ListView 的默认填充。 来自文档here:

“默认情况下,ListView 将自动填充列表的可滚动末端以避免由 MediaQuery 的填充指示的部分障碍。为避免这种行为,请使用零填充属性覆盖。”

添加:

padding: EdgeInsets.all(0)

在您的 ListView 小部件中将其设置为 0。

我在您的代码示例中进行了尝试,它正确地删除了多余的空间。

【讨论】:

以上是关于Flutter 中两个容器之间不需要的空间的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中删除两个容器之间的空间?

在 Flutter 中,您如何制作动画以将容器从 0 高度扩展到其内容的高度?

Flutter Mobile 或 Web 应用程序之间有啥区别?

Flutter 列显示 Android 中小部件之间的额外空间

Android项目创建Flutter module后运行编译失败问题

Android项目创建Flutter module后运行编译失败问题