Flutter 把孩子们叠成一堆

Flutter 把孩子们叠成一堆,flutter,dart,Flutter,Dart,只是一个简单的问题,我一直对将两个不同的孩子一个叠在另一个上有意见,下面是测试代码。基本上 body: Stack( children: [ Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Container( width: 15

只是一个简单的问题,我一直对将两个不同的孩子一个叠在另一个上有意见,下面是测试代码。基本上

body: Stack(
          children: [
            
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                Container(
                  width: 150.0,
                  height: 150.0,
                  decoration: BoxDecoration(
                    image: DecorationImage(
                        image: AssetImage('assets/testlogo.png')),
                  ),
                )
              ],
            ),
            
            TabBarView(
              children: [
                _One(),
                _Two(),
                
                
              ],
            ),
          ],
        ),
但我遇到的问题是,选项卡将行与容器重叠,如下所示:

基本上,我需要的是让容器(行)的图像位于TabBarView的顶部,然后是下面的1()和2()选项卡栏,而不让它们与图像重叠。我希望我对这个问题很清楚,而且答案很简单,但我无法让它正常工作

编辑

您需要使用定位(…)小部件定位子部件。

您需要使用定位(…)小部件定位子部件。

尝试使用小部件作为
堆栈的子部件

这来自
堆栈
小部件(emphasis添加):

堆栈小部件的每个子部件都是定位的或非定位的。定位子项是封装在至少具有一个非null属性的定位小部件中的子项堆栈自身的大小将包含所有未定位的子对象,这些子对象根据对齐方式进行定位(在从左到右的环境中默认为左上角,在从右到左的环境中默认为右上角)。然后,根据其顶部、右侧、底部和左侧属性,相对于堆栈放置定位的子对象

由于您仅在一个子项(行
中使用对齐,其他子项仅基于
堆栈
小部件的默认行为进行放置。因此,您可以将子项包装在定位的小部件中:

body:Stack(
儿童:[
划船(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
容器(
宽度:150.0,
高度:150.0,
装饰:盒子装饰(
图像:装饰图像(
图片:AssetImage('assets/testlogo.png'),
),
)
],
),
//此处更新:使用已定位的
定位(
左:24.0,
子项:选项卡视图(
儿童:[
_一(,
_二(),
],
),
),
],
),
或者,您可以将您的孩子包装在
Align
小部件中:

body:Stack(
儿童:[
划船(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
容器(
宽度:150.0,
高度:150.0,
装饰:盒子装饰(
图像:装饰图像(
图片:AssetImage('assets/testlogo.png'),
),
)
],
),
//此处更新:用Align包装
对齐(
对齐:alignment.topRight,
子项:选项卡视图(
儿童:[
_一(,
_二(),
],
),
),
],
),
尝试将小部件用作
堆栈的子部件

这来自
堆栈
小部件(emphasis添加):

堆栈小部件的每个子部件都是定位的或非定位的。定位子项是封装在至少具有一个非null属性的定位小部件中的子项堆栈自身的大小将包含所有未定位的子对象,这些子对象根据对齐方式进行定位(在从左到右的环境中默认为左上角,在从右到左的环境中默认为右上角)。然后,根据其顶部、右侧、底部和左侧属性,相对于堆栈放置定位的子对象

由于您仅在一个子项(行
中使用对齐,其他子项仅基于
堆栈
小部件的默认行为进行放置。因此,您可以将子项包装在定位的小部件中:

body:Stack(
儿童:[
划船(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
容器(
宽度:150.0,
高度:150.0,
装饰:盒子装饰(
图像:装饰图像(
图片:AssetImage('assets/testlogo.png'),
),
)
],
),
//此处更新:使用已定位的
定位(
左:24.0,
子项:选项卡视图(
儿童:[
_一(,
_二(),
],
),
),
],
),
或者,您可以将您的孩子包装在
Align
小部件中:

body:Stack(
儿童:[
划船(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
容器(
宽度:150.0,
高度:150.0,
装饰:盒子装饰(
图像:装饰图像(
图片:AssetImage('assets/testlogo.png'),
),
)
],
),
//此处更新:用Align包装
对齐(
对齐:alignment.topRight,
子项:选项卡视图(
儿童:[
_一(,
_二(),
],
),
),
],
),

不确定我问的问题是否正确,我更新了主要帖子,只是想告诉你们我需要什么。positioned()无法正常工作。然后在伪代码中,
列(堆栈(行(容器)),TabBarView)
,尽管我不明白,您的行有什么好处,因为我只看到一个子行,即容器。你需要一个堆栈做什么?如果还有另一个原因(此处没有明显的原因),您可以将TabBarView堆叠在容器顶部,并将其包装在一列中,以一个大小的框作为上边距,因此
堆叠(行(容器)、列(大小的框(容器的高度)、TabBarView))
。但我想你还是需要定位。你可能是对的,我会试试看,我想那会管用的。谢谢。我不确定我问的问题是否正确,我更新了主要帖子只是为了告诉你们我需要什么。定位()无法正常工作。然后在伪代码中,
列(堆栈(行)(续