Flutter 颤振可折叠/可扩展卡

Flutter 颤振可折叠/可扩展卡,flutter,flutter-layout,Flutter,Flutter Layout,我正在尝试匹配这个设计 点击时,卡应展开 我不能使用卡片包装扩展磁贴,因为扩展磁贴基本上只有一行,我尝试按照这个例子 我在谷歌上搜索了很多,没有找到一个我想要实现的例子,在stackoverflow上我能找到的最接近的东西是这不是一张折叠/扩展卡?你完全可以使用卡包装扩展文件。扩展文件有一个标题属性,该属性接受一个小部件,因此您可以将任何想要的小部件传递到该文件中 混乱的示例代码,但希望您能理解: class ExpandedTile extends StatelessWidget {

我正在尝试匹配这个设计

点击时,卡应展开

我不能使用卡片包装扩展磁贴,因为扩展磁贴基本上只有一行,我尝试按照这个例子


我在谷歌上搜索了很多,没有找到一个我想要实现的例子,在stackoverflow上我能找到的最接近的东西是这不是一张折叠/扩展卡?

你完全可以使用
包装
扩展文件
扩展文件
有一个
标题
属性,该属性接受一个
小部件
,因此您可以将任何想要的
小部件
传递到该文件中

混乱的示例代码,但希望您能理解:

class ExpandedTile extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Card(
      shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.all(Radius.circular(15.0))),
      elevation: 2,
      margin: EdgeInsets.all(12.0),
      child: Padding(
        padding: const EdgeInsets.all(8.0),
        child: ExpansionTile(
          backgroundColor: Colors.white,
          title: _buildTitle(),
          trailing: SizedBox(),
          children: <Widget>[
            Padding(
              padding: const EdgeInsets.all(8.0),
              child: Row(
                children: <Widget>[
                  Text("Herzlich Willkommen"),
                  Spacer(),
                  Icon(Icons.check),
                ],
              ),
            ),
            Padding(
              padding: const EdgeInsets.all(8.0),
              child: Row(
                children: <Widget>[
                  Text("Das Kursmenu"),
                  Spacer(),
                  Icon(Icons.check),
                ],
              ),
            )
          ],
        ),
      ),
    );
  }

  Widget _buildTitle() {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: <Widget>[
        Row(
          children: <Widget>[
            Text("MODUL 1"),
            Spacer(),
            Text("Mehr"),
          ],
        ),
        Text("Kursubersicht"),
        Row(
          children: <Widget>[
            Text("6 Aufgaben"),
            Spacer(),
            FlatButton.icon(
              shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.all(Radius.circular(15.0))),
              padding: EdgeInsets.symmetric(vertical: 4.0, horizontal: 8.0),
              color: Colors.blue,
              textColor: Colors.white,
              onPressed: () {},
              icon: Icon(Icons.play_arrow),
              label: Text("Fortsetzen"),
            ),
          ],
        ),
      ],
    );
  }
}
class ExpandedFile扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
回程卡(
形状:圆形矩形边框(
borderRadius:borderRadius.all(半径.圆形(15.0)),
标高:2,
边距:所有边缘集(12.0),
孩子:填充(
填充:常数边集全部(8.0),
子文件:扩展文件(
背景颜色:Colors.white,
标题:_buildTitle(),
尾随:SizedBox(),
儿童:[
填充物(
填充:常数边集全部(8.0),
孩子:排(
儿童:[
文本(“Herzlich Willkomen”),
垫片(),
图标(图标。检查),
],
),
),
填充物(
填充:常数边集全部(8.0),
孩子:排(
儿童:[
文本(“Das Kursmenu”),
垫片(),
图标(图标。检查),
],
),
)
],
),
),
);
}
小部件_buildTitle(){
返回列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
划船(
儿童:[
文本(“模块1”),
垫片(),
文本(“Mehr”),
],
),
文本(“Kursubersicht”),
划船(
儿童:[
文本(“6 Aufgaben”),
垫片(),
FlatButton.icon(
形状:圆形矩形边框(
borderRadius:borderRadius.all(半径.圆形(15.0)),
填充:边缘组。对称(垂直:4.0,水平:8.0),
颜色:颜色,蓝色,
textColor:Colors.white,
按下:(){},
图标:图标(图标。播放箭头),
标签:文本(“Fortsetzen”),
),
],
),
],
);
}
}
产生

当敲击时


您显然是颤振专家,谢谢您的回答