为什么 Sliver App Bar 的 flexibleSpace 参数必须带一个 const 构造函数的 Widget?

Why does Sliver App Bar's flexibleSpace parameter have to take a Widget with a const constructor?

我正在尝试构建一个包含条形应用栏的自定义滚动视图,以实现类似于此处显示的内容:

https://medium.com/@diegoveloper/flutter-collapsing-toolbar-sliver-app-bar-14b858e87abe

但是我想要搜索这个词,在它下面我想要 3 个 IconButtons 均匀间隔,当页面 (CustomScrollView) 滚动时,我想要将 3 个 IconButtons 固定到 SliverAppBar 和搜索文本的顶部消失...

我试图通过以下代码实现上述目标:

 class SearchPage extends StatelessWidget {

      const SearchPage();

      @override
      Widget build(BuildContext context) {
        return CustomScrollView(slivers: <Widget>[
        const SliverAppBar(
        pinned: true,
            expandedHeight: 250.0,
            flexibleSpace: _buildSliverAppBarFlex(),
            );
      }


       Widget _buildSliverAppBarFlex() {
        return Container(
            child: Column(
              children: <Widget>[
                Text("Search", style: TextStyle(fontSize: 24.0,
                    color: Colors.white,
                    fontWeight: FontWeight.bold)),
                Row(children: <Widget>[
                  IconButton(icon: Icon(Icons.flight)),
                  IconButton(icon: Icon(Icons.hotel)),
                  IconButton(icon: Icon(Icons.drive_eta))
                ])
              ],
            )
        );
      }
    }

但是我收到一条警告,说 flexibleSpace 必须采用 const 构造函数小部件,而我制作的 _buildSilverAppBarFlex 小部件不是 - 我也不能向它添加 const 或 final ......关于如何实现我的想法的任何想法想要?

出现警告是因为您在 SliverAppBar 之前使用 const,删除它,警告就会消失。

所以,而不是这个

const SliverAppBar(...)

用这个。

SliverAppBar(...)

如果您想在那里使用 const,请确保您的 FlexibleSpaceBar 也是 const