首页 > 解决方案 > 如何将额外的参数传递给 Flutter 中 ListView.builder Widget 的 itemBuilder 函数?

问题描述

除了 content 和 index 之外,我想将额外的参数传递给我的 itemBuilder 函数。我该怎么做呢 ?

body: new ListView.builder
  (
    itemCount: litems.length,
    itemBuilder: (BuildContext ctxt, int index) {
     return new Text(litems[index]);
    }
  )

我想要这样做的东西:

int k = "HI";
body: new ListView.builder
  (
    itemCount: litems.length,
    itemBuilder: (BuildContext ctxt, int index, String k) {
     return new Text(litems[index] + k);
    }
  )

标签: listviewdartflutter

解决方案


没有必要这样做。

您可以k从构建器函数体内访问,而无需将其作为参数传递。
您传递一个内联函数,该函数可以访问定义它的范围。

如果您没有内联构建器函数并且您想要/需要传递其他参数,您可以使用

String k = "HI";    
child: new ListView.builder(
  itemCount: litems.length,
  itemBuilder: (ctxt, Index) => _listItemBuilder(ctxt, Index, k)
)

...

Widget _listItemBuilder(BuildContext ctxt, int Index, String k) {
    return new Text(litems[Index] + k);
  }

推荐阅读