Flutter 抽屉布局:如何在Flatter中创建此自定义布局

Flutter 抽屉布局:如何在Flatter中创建此自定义布局,flutter,Flutter,我有一个抽屉,我想实现布局张贴在下面的屏幕截图 所有任务,今天,完整和不完整的和编号都是固定的。用户无法添加这些。我已经加了创建列表和设置 MyList由用户添加,用户可以添加更多内容,如食物、运动、阅读等 分隔符也可以在1行或3行之后显示为组 我应该使用列表视图吗?。有什么建议吗 您有两种方法可以做到这一点,第一种方法使用ListView,如下所示: drawer: new Drawer( child: new Column( children: <Widg

我有一个抽屉,我想实现布局张贴在下面的屏幕截图

所有任务,今天,完整和不完整的
和编号都是固定的。用户无法添加这些。我已经加了<代码>创建列表和设置

MyList
由用户添加,用户可以添加更多内容,如食物、运动、阅读等

分隔符
也可以在1行或3行之后显示为组

我应该使用
列表视图吗?。有什么建议吗


您有两种方法可以做到这一点,第一种方法使用ListView,如下所示:

drawer: new Drawer(
      child: new Column(
        children: <Widget>[
          new UserAccountsDrawerHeader(
            accountName: const Text('Test Widget'),
            accountEmail: const Text('test.widget@example.com'),
            margin: EdgeInsets.zero,
            onDetailsPressed: () {},
          ),
          new Expanded(
            child: new ListView(
              padding: const EdgeInsets.only(top: 8.0),
              children: <Widget>[
                new Column(
                  mainAxisSize: MainAxisSize.min,
                  crossAxisAlignment: CrossAxisAlignment.stretch,
                  children: _drawerContents.map((String id) {
                    return new ListTile(
                      leading: new CircleAvatar(child: new Text(id)),
                      title: new Text('Drawer item $id'),
                    );
                  }).toList(),
                ),
                // The drawer's "details" view.
                new Column(
                  mainAxisSize: MainAxisSize.min,
                  crossAxisAlignment: CrossAxisAlignment.stretch,
                  children: <Widget>[
                    new ListTile(
                      leading: const Icon(Icons.add),
                      title: const Text('Add account'),
                    ),
                    new ListTile(
                      leading: const Icon(Icons.settings),
                      title: const Text('Manage accounts'),
                    ),
                  ],
                ),
              ],
            ),
          ),
        ],
      ),
    )
drawer: new Drawer(
      child: new Column(
        children: <Widget>[
          new UserAccountsDrawerHeader(
            accountName: const Text('Test Test'),
            accountEmail: const Text('test@example.com'),
            margin: EdgeInsets.zero,
            onDetailsPressed: () {},
          ),
          new Expanded(
            child: new ListView.builder(
              itemBuilder: (BuildContext context, int index) =>
                  new EntryItem(data[index]),
              itemCount: data.length,
            ),
          ),
        ],
      ),
    ),

有两种方法可以做到这一点,第一种方法使用ListView,如下所示:

drawer: new Drawer(
      child: new Column(
        children: <Widget>[
          new UserAccountsDrawerHeader(
            accountName: const Text('Test Widget'),
            accountEmail: const Text('test.widget@example.com'),
            margin: EdgeInsets.zero,
            onDetailsPressed: () {},
          ),
          new Expanded(
            child: new ListView(
              padding: const EdgeInsets.only(top: 8.0),
              children: <Widget>[
                new Column(
                  mainAxisSize: MainAxisSize.min,
                  crossAxisAlignment: CrossAxisAlignment.stretch,
                  children: _drawerContents.map((String id) {
                    return new ListTile(
                      leading: new CircleAvatar(child: new Text(id)),
                      title: new Text('Drawer item $id'),
                    );
                  }).toList(),
                ),
                // The drawer's "details" view.
                new Column(
                  mainAxisSize: MainAxisSize.min,
                  crossAxisAlignment: CrossAxisAlignment.stretch,
                  children: <Widget>[
                    new ListTile(
                      leading: const Icon(Icons.add),
                      title: const Text('Add account'),
                    ),
                    new ListTile(
                      leading: const Icon(Icons.settings),
                      title: const Text('Manage accounts'),
                    ),
                  ],
                ),
              ],
            ),
          ),
        ],
      ),
    )
drawer: new Drawer(
      child: new Column(
        children: <Widget>[
          new UserAccountsDrawerHeader(
            accountName: const Text('Test Test'),
            accountEmail: const Text('test@example.com'),
            margin: EdgeInsets.zero,
            onDetailsPressed: () {},
          ),
          new Expanded(
            child: new ListView.builder(
              itemBuilder: (BuildContext context, int index) =>
                  new EntryItem(data[index]),
              itemCount: data.length,
            ),
          ),
        ],
      ),
    ),

谢谢你的详细答复。让我测试一下,然后再给你回复。EntryItem(数据[索引])是什么。你能发布示例代码吗?我在答案中添加了一个EntryItem示例。很抱歉再次询问。您可以粘贴带有虚拟数据的条目类结构来填充作为示例。我会接受答案。谢谢你的帮助。谢谢你的详细回复。让我测试一下,然后再给你回复。EntryItem(数据[索引])是什么。你能发布示例代码吗?我在答案中添加了一个EntryItem示例。很抱歉再次询问。您可以粘贴带有虚拟数据的条目类结构来填充作为示例。我会接受答案。谢谢你的帮助。