Flutter-如何将(widget)孙子部件与子部件对齐

问题描述 投票:0回答:2

我一直在google和s.o上寻找答案,但找不到我喜欢的答案。

我正在使用Stack小部件作为页面布局。在该堆栈内部,我将所有子窗口小部件都与Align窗口小部件一起放置。我试图在Align子项下创建一个ListView小部件,但是其卡片(子项)忽略了将我设置为List的对齐值的ListView对齐方式。

    Align(
      alignment: Alignment(0, -0.28),
      child: Divider(
        color: Color.fromARGB(50, 255, 255, 255),
      ),
    ),
    Align(
      alignment: Alignment(0, -0.20),
      child: ListView(
        children: <Widget>[
          Card(
            child: ListTile(
            leading: Icon(some_icon),
            title: Text("blabla"),
          )),
        ],
      ),
    ),

我希望ListView项目在我的Divider下开始,因为垂直倾斜度设置的值为-0.20,低于Divider对齐(-0.28)。但是,这是它的外观:

enter image description here

如果我删除ListView并将Card小部件设置为Align直接子级,则定位很好。现在,正如我在文档中所读到的,Align小部件的对齐方式值受only child的尊重,所以如何为ListView子级(行/ ListTiles / Card等)实现相同的效果?

flutter flutter-layout
2个回答
0
投票

这只是一个示例!根据需要进行修改。 (编辑

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Stack(children: [
      //Your behind widgets here...
      Stack(children: [
        Card(
            color: Colors.white,
            child:
                ListTile(title: Text('1st card', textAlign: TextAlign.center))),
        Align(
          alignment:Alignment(0, -0.20),
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: <Widget>[
              Container(
                height: 2,
                width: double.infinity,
                color: Colors.black,
                margin: EdgeInsets.only(right: 25, left: 25),
              ),
              SizedBox(
                height: 10,
                width: double.infinity,
              ),
              Card(
                  color: Colors.white,
                  child: ListView(shrinkWrap: true, children: [
                    ListTile(
                        title: Text('List card', textAlign: TextAlign.center))
                  ])),
            ],
          ),
        )
      ])
    ]));
  }

Screenshot


0
投票

请尝试这个...

      body: Container(
        child: Center(
          child: Padding(
            padding: EdgeInsets.all(10),
            child: Column(
              mainAxisSize: MainAxisSize.min,
              children: <Widget>[
                Divider(
                  thickness: 20, // this is for example
                  height: 22, // this is for example
                  color: Colors.red, // this is for example
                ),
                Card (
                    child: ListTile(
                  leading: Icon(Icons.print),
                  title: Text("blabla"),
                )),
              ],
            ),
          ),
        ),
      ),
© www.soinside.com 2019 - 2024. All rights reserved.