如何在行小部件中“垂直”扩展容器小部件

时间:2020-08-01 22:09:49

标签: flutter flutter-layout

我希望容器占据卡片的高度。

我尝试了许多Widget,但未能完成订单,

我尝试将Flexible用作容器的父级,但无济于事。

我有此代码:

                    Card(
                        color: Color(0xff8c6ac9),
                        shape: RoundedRectangleBorder(
                            borderRadius: BorderRadius.circular(10)),
                        child: Row(
                          children: <Widget>[
                            Expanded(
                              child: Column(
                                children: <Widget>[
                                  Padding(
                                    padding: const EdgeInsets.all(8.0),
                                    child: Text('Text2'),
                                  ),
                                  Padding(
                                    padding: const EdgeInsets.all(8.0),
                                    child: Text('Text3'),
                                  ),
                                  Padding(
                                    padding: const EdgeInsets.all(8.0),
                                    child: Text('Text4'),
                                  ),
                                  Padding(
                                    padding: const EdgeInsets.all(8.0),
                                    child: Text('Text5'),
                                  ),
                                  Padding(
                                    padding: const EdgeInsets.all(8.0),
                                    child: Text('Text6'),
                                  ),
                                ],
                              ),
                            ),
                            Container(
                              decoration: BoxDecoration(
                                  color: Color(0xff9778ce),
                                  borderRadius: BorderRadius.only(
                                      bottomRight: Radius.circular(10),
                                      topRight: Radius.circular(10))),
                              child: Column(
                                children: <Widget>[
                                  Icon(
                                    Icons.delete,
                                    color: Colors.white,
                                  ),
                                  Icon(
                                    Icons.edit,
                                    color: Colors.white,
                                  ),
                                ],
                                mainAxisAlignment:
                                    MainAxisAlignment.spaceAround,
                              ),
                              width: 40,
                            ),
                          ],
                        ),
                      )

此代码的输出是:

enter image description here

我想要的是:

enter image description here

编辑: Card小部件,它是 ListView 小部件中的一项。

谢谢...

2 个答案:

答案 0 :(得分:2)

您快到了...用public class Test { public volatile int global_variable = 42; public synchronized int getGlobal_variable() { return global_variable; } public synchronized void setGlobal_variable(int global_variable) { this.global_variable = global_variable; } public void update() { setGlobal_variable(getGlobal_variable() + 150); } public Test() { try { while (true) { System.out.println(getGlobal_variable()); update(); Thread.sleep(1000); } } catch (Exception e) { // TODO: handle exception } } public static void main(String[] args) { new Test(); } } 小部件包裹行

volatile

答案 1 :(得分:1)

由于IntrinsicHeight没有预定义的高度,因此可以使用Card小部件。

将其子级调整为子级固有高度的小部件。 此类非常有用,例如,当可用高度不受限制并且您希望孩子尝试以其他方式无限扩展以将其自身尺寸调整为更合理的高度时,该类会有用。

注意:此类相对昂贵,因为它在最终布局阶段之前添加了一个推测性布局遍历。避免在可能的地方使用它。在最坏的情况下,此小部件会导致树的深度为O(N²)。

ListView.builder(
        itemBuilder: (context, index) {
          // wrapped the card widget with an intrinsic height
          return IntrinsicHeight(
            child: Card(
              color: Color(0xff8c6ac9),
              shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.circular(10)),
              child: Row(
                children: <Widget>[
                  Expanded(
                    child: Column(
                      children: <Widget>[
                        Padding(
                          padding: const EdgeInsets.all(8.0),
                          child: Text('Text2'),
                        ),
                        Padding(
                          padding: const EdgeInsets.all(8.0),
                          child: Text('Text3'),
                        ),
                        Padding(
                          padding: const EdgeInsets.all(8.0),
                          child: Text('Text4'),
                        ),
                        Padding(
                          padding: const EdgeInsets.all(8.0),
                          child: Text('Text5'),
                        ),
                        Padding(
                          padding: const EdgeInsets.all(8.0),
                          child: Text('Text6'),
                        ),
                      ],
                    ),
                  ),
                  Container(
                    decoration: BoxDecoration(
                        color: Color(0xff9778ce),
                        borderRadius: BorderRadius.only(
                            bottomRight: Radius.circular(10),
                            topRight: Radius.circular(10))),
                    child: Column(
                      mainAxisSize: MainAxisSize.max,
                      children: <Widget>[
                        Icon(
                          Icons.delete,
                          color: Colors.white,
                        ),
                        Icon(
                          Icons.edit,
                          color: Colors.white,
                        ),
                      ],
                      mainAxisAlignment: MainAxisAlignment.spaceAround,
                    ),
                    width: 40,
                  ),
                ],
              ),
            ),
          );
        },
      ),

输出:

enter image description here