如何在Flutter的列内使用带有ListView的扩展图块

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

我正在尝试创建自定义抽屉。

我想固定DrawerHeader。但是,我希望ExpansionTileListView可以滚动。

https://imgur.com/a/lWeDWOO

https://imgur.com/a/tR68ECK

 class _NavigationDrawerState extends State<NavigationDrawer> {


  @override
  Widget build(BuildContext context) {
    return Drawer(
      child: Column(
        children: <Widget>[
          DrawerHeader(
            child: Column(....),
          ExpansionTile(
            title: Text('Roles'),
            children: [
              ListView.builder(
                itemBuilder: _buildRolesList,
                itemCount: roles.length,
                shrinkWrap: true,
              )
            ],
          ),
          ListView.builder(
            shrinkWrap: true,
            itemBuilder: _buildList,
            itemCount: myList.length,
          ),
        ],
      ),
    );
  }

  Widget _buildList(BuildContext context, int index) {
    return ListTile(
      leading: Icon(icons[myList[index].toLowerCase()]),
      title: Text(myList[index]),
    );
  }

  Widget _buildRolesList(BuildContext context, int index) {
    return ListTile(
      dense: true,
      title: Text(roles[index]),
      onTap: () {},
    );
  }


}
flutter flutter-layout
1个回答
0
投票

尝试一下:

class _NavigationDrawerState extends State<NavigationDrawer> {
  @override
  Widget build(BuildContext context) {
    return Drawer(
      child: Column(
        children: <Widget>[
          ExpansionTile(
            title: Text('Roles'),
            children: [
              SizedBox(
                height: MediaQuery.of(context).size.height - 100,
                child: ListView.builder(
                  itemBuilder: _buildRolesList,
                  itemCount: roles.length,
                  shrinkWrap: true,
                ),
              )
            ],
          ),
          Expanded(
            child: ListView.builder(
              shrinkWrap: true,
              itemBuilder: _buildList,
              itemCount: myList.length,
            ),
          ),
        ],
      ),
    );
  }

  Widget _buildList(BuildContext context, int index) {
    return ListTile(
      leading: Icon(icons[myList[index].toLowerCase()]),
      title: Text(myList[index]),
    );
  }

  Widget _buildRolesList(BuildContext context, int index) {
    return ListTile(
      dense: true,
      title: Text(roles[index]),
      onTap: () {},
    );
}
© www.soinside.com 2019 - 2024. All rights reserved.