展开并连续展开时,如何在不更改布局的情况下包装小部件列表?

How to wrap a List of Widgets without changing the layout when unwrapped and spread in a Row?

目前,以下结构给出了预期的布局:

Consumer<State>(
  builder(context, state, child) => Row(
    children: [
      Widget1(...), // fixed width
      ...List.generate(state.length, (index) => Expanded(child: Widget2(index, state))),
    ]
  )
)

Widget1 不需要连接到状态,所以我不希望它在更改时重新呈现。如果 List.generate 可以连接到 Consumer 就好了,但是 builder 需要 return 一个单独的 Widget,而不是 Widget 列表。

我试过在列表周围使用 Wrap 小部件,并将其连接到 Consumer。这实现了我不重新渲染 Widget1 的目标,但它改变了布局 - Widget2 不再扩展以填充剩余的 space。

这是一个例子:

Row(
  children: [
    Widget1(...), // fixed width
      Consumer<State>(
       builder: (context, state, child) {
          return Expanded(
                   child: Row(
                     children: List.generate(
                       state.length,
                       (index) {
                         return Expanded(
                           child: Widget2(index, state),
                         );
                       },
                     ),
                   ),
                 );
               },
             ),
           ],
         ),