如何将 ListView.builder 放入抽屉?

Hot*_*art 3 flutter

我正在尝试制作动态菜单(通过 json 文件)。当我将代码放入正文时,它工作正常。但是当我把它放在我的抽屉里时,抽屉是空白的,甚至我的 DrawerHeader 也消失了。

我的代码:

  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('My App'),
        backgroundColor: Colors.green,
      ),
      body: ListView.builder(                       // <----------  WORKING
          itemCount: data == null ? 0 : data.length,
          itemBuilder: (BuildContext context, i) {
            return new ListTile(
              title: new Text(data[i]["title"]),
            );
          }),
      drawer: Drawer(
        child: ListView(
          // Important: Remove any padding from the ListView.
          padding: EdgeInsets.zero,
          children: <Widget>[
            Container(
              height: 85.0,
              child: DrawerHeader(
                child: Text(
                  'Categories',
                  style: new TextStyle(fontSize: 18.0, color: Colors.white),
                ),
                decoration: BoxDecoration(
                  color: Colors.green,
                ),
              ),
            ),
            ListView.builder(                       // <---------- NOT WORKING
                itemCount: data == null ? 0 : data.length,
                itemBuilder: (BuildContext context, i) {
                  return new ListTile(
                    title: new Text(data[i]["title"]),
                  );
                })
          ],
        ),
      ),
    );
  }
Run Code Online (Sandbox Code Playgroud)

完整代码

Zro*_*roq 5

您的ListView.builder小部件需要位于具有固定高度的小部件内。

您可以将其设置在 a 中Container

Container(
            height: double.maxFinite,
            child: ListView.builder(
                itemCount: data == null ? 0 : data.length,
                itemBuilder: (BuildContext context, i) {
                  return new ListTile(
                    title: new Text(data[i]["title"]),
                  );
                }))
Run Code Online (Sandbox Code Playgroud)