Flutter:在 SizedBox 之前添加图标。为什么 Row 在 AppBar 之后消失了?

Flutter: Adding icon before SizedBox. Why Row dissappears after AppBar?

我想在类别左侧放置一个菜单按钮。

 @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.symmetric(vertical: kDefaultPaddin),
      child: SizedBox(
        height: 25,
        child: ListView.builder(
            scrollDirection: Axis.horizontal,
            itemCount: categories.length,
            itemBuilder: (context, index) => buildCategory(index)),
      ),
    );
  }

How it looks right now

这是应用栏之后的类别代码。我想把菜单按钮放在类别的开头。

 @override
    Widget build(BuildContext context) {
        return Padding(
          padding: const EdgeInsets.symmetric(vertical: kDefaultPaddin),
          child: SizedBox(
              height: 25,
              child: Row(
                children: <Widget>[
                  IconButton(icon: Icon(Icons.menu), onPressed: () {}),
                  ListView.builder(
                      scrollDirection: Axis.horizontal,
                      itemCount: categories.length,
                      itemBuilder: (context, index) => buildCategory(index))
                ],
              )),
        );
      }

And then this happened

我的代码有什么问题?

您需要用 Expanded 小部件包装 ListView

我以您的代码为例添加了一个演示:

 @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.symmetric(vertical: kDefaultPaddin),
      child: SizedBox(
        height: 25,
        child: Row(
          children: <Widget>[
            IconButton(icon: Icon(Icons.menu), onPressed: () {}),
            // wrap with expanded widget
            Expanded( // new line
              child: ListView.builder(
                  scrollDirection: Axis.horizontal,
                  itemCount: categories.length,
                  itemBuilder: (context, index) => buildCategory(index)),
            )
          ],
        ),
      ),
    );
  }