在 Flutter 中使用 Expansion Tile 和 ListView

Using Expansion Tile with ListView in Flutter

我正在尝试通过此 image 构建应用程序,但是当我将 ListView 与此扩展磁贴放在同一页面时,屏幕变空了。

我添加了shrinkwrap: true并成功了,但是现在我遇到了一个新问题,当我open the ExpansionTile or when I have many option on ListView

时底部溢出了

下面是试过的代码:

之后我会做一个ListBuilder
    class HomeState extends State<Teste>{
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text (""),
      ),
        body: Container(
          padding: EdgeInsets.all(15.0),
          child: Column(
            children: <Widget>[
              CardList(),
              MyList()
            ],
          ),
        ),
    );
  }
}

Widget CardList(){
  return new Flexible(
      child: Card(
        child: ExpansionTile(
          title: Text("Periodo",
            style: new TextStyle(
            ),textAlign: TextAlign.center,
          ),
          children: <Widget>[
            ListTile(
              title: Text("Periodo 1",textAlign: TextAlign.center,),
            ),
            ListTile(
              title: Text("Periodo 2",textAlign: TextAlign.center,),
            ),
            ListTile(
              title: Text("Periodo 3",textAlign: TextAlign.center,),
            ),
            ListTile(
              title: Text("Periodo 4",textAlign: TextAlign.center,),
            ),
            ListTile(
              title: Text("Periodo 5",textAlign: TextAlign.center,),
            ),ListTile(
              title: Text("Periodo 6",textAlign: TextAlign.center,),
            ),ListTile(
              title: Text("Periodo 7",textAlign: TextAlign.center,),
            ),ListTile(
              title: Text("Periodo 8",textAlign: TextAlign.center,),
            ),
          ],
        ),
      )
  );
}

Widget MyList(){
  return new ListView(
    scrollDirection: Axis.vertical,
    shrinkWrap: true,
    children: <Widget>[
      ListTile(title: Text("Teste",textAlign: TextAlign.center,),),
      Divider(),
      ListTile(title: Text("Teste",textAlign: TextAlign.center,),),
      Divider(),
      ListTile(title: Text("Teste",textAlign: TextAlign.center,),),
      Divider(),
      ListTile(title: Text("Teste",textAlign: TextAlign.center,),),
      Divider(),
      ListTile(title: Text("Teste",textAlign: TextAlign.center,),),
      Divider(),
      ListTile(title: Text("Teste",textAlign: TextAlign.center,),),
      Divider(),
      ListTile(title: Text("Teste",textAlign: TextAlign.center,),),
      Divider(),
      ListTile(title: Text("Teste",textAlign: TextAlign.center,),),
      Divider(),
      ListTile(title: Text("Teste",textAlign: TextAlign.center,),),
    ],
  );
}

更新后的代码没有错误 -

@override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(""),
      ),
      body: Container(
        padding: EdgeInsets.all(15.0),
        child: Column(
          children: <Widget>[Flexible(child: CardList()), Flexible(child: MyList())],
        ),
      ),
    );
  }
}

Widget CardList() {
  return SingleChildScrollView(
    child: Card(
      child: ExpansionTile(
        title: Text(
          "Periodo",
          style: new TextStyle(),
          textAlign: TextAlign.center,
        ),
        children: <Widget>[
          ListTile(
            title: Text(
              "Periodo 1",
              textAlign: TextAlign.center,
            ),
          ),
          ListTile(
            title: Text(
              "Periodo 2",
              textAlign: TextAlign.center,
            ),
          ),
          ListTile(
            title: Text(
              "Periodo 3",
              textAlign: TextAlign.center,
            ),
          ),
          ListTile(
            title: Text(
              "Periodo 4",
              textAlign: TextAlign.center,
            ),
          ),
          ListTile(
            title: Text(
              "Periodo 5",
              textAlign: TextAlign.center,
            ),
          ),
          ListTile(
            title: Text(
              "Periodo 6",
              textAlign: TextAlign.center,
            ),
          ),
          ListTile(
            title: Text(
              "Periodo 7",
              textAlign: TextAlign.center,
            ),
          ),
          ListTile(
            title: Text(
              "Periodo 8",
              textAlign: TextAlign.center,
            ),
          ),
          ListTile(
            title: Text(
              "Periodo 9",
              textAlign: TextAlign.center,
            ),
          ),
          ListTile(
            title: Text(
              "Periodo 10",
              textAlign: TextAlign.center,
            ),
          ),
          ListTile(
            title: Text(
              "Periodo 11",
              textAlign: TextAlign.center,
            ),
          ),
        ],
      ),
    ),
  );
}

Widget MyList() {
  return new ListView(
    shrinkWrap: true,
    children: <Widget>[
      ListTile(
        title: Text(
          "Teste",
          textAlign: TextAlign.center,
        ),
      ),
      Divider(),
      ListTile(
        title: Text(
          "Teste",
          textAlign: TextAlign.center,
        ),
      ),
      Divider(),
      ListTile(
        title: Text(
          "Teste",
          textAlign: TextAlign.center,
        ),
      ),
      Divider(),
      ListTile(
        title: Text(
          "Teste",
          textAlign: TextAlign.center,
        ),
      ),
      Divider(),
      ListTile(
        title: Text(
          "Teste",
          textAlign: TextAlign.center,
        ),
      ),
      Divider(),
      ListTile(
        title: Text(
          "Teste",
          textAlign: TextAlign.center,
        ),
      ),
      Divider(),
      ListTile(
        title: Text(
          "Teste",
          textAlign: TextAlign.center,
        ),
      ),
      Divider(),
      ListTile(
        title: Text(
          "Teste",
          textAlign: TextAlign.center,
        ),
      ),
      Divider(),
      ListTile(
        title: Text(
          "Teste",
          textAlign: TextAlign.center,
        ),
      ),
    ],
  );
}