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

Posted

技术标签:

【中文标题】展开并在行中展开时,如何在不更改布局的情况下包装小部件列表?【英文标题】:How to wrap a List of Widgets without changing the layout when unwrapped and spread in a Row? 【发布时间】:2022-01-24 00:46:44 【问题描述】:

目前,以下结构为我提供了预期的布局:

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 需要返回单个小部件,而不是小部件列表。

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

【问题讨论】:

【参考方案1】:

这是一个例子:

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),
                         );
                       ,
                     ),
                   ),
                 );
               ,
             ),
           ],
         ),

【讨论】:

以上是关于展开并在行中展开时,如何在不更改布局的情况下包装小部件列表?的主要内容,如果未能解决你的问题,请参考以下文章