【问题标题】:How to pass extra arguments to itemBuilder function of ListView.builder Widget in Flutter?如何将额外的参数传递给 Flutter 中 ListView.builder Widget 的 itemBuilder 函数?
【发布时间】:2019-02-27 06:47:20
【问题描述】:

除了 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);
    }
  )

【问题讨论】:

    标签: listview dart flutter


    【解决方案1】:

    没有必要。

    您可以从构建器函数体内访问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);
      }
    

    【讨论】:

    • 有没有办法将它作为参数显式传递?
    • 不,这没有意义。如果您提供更多上下文为什么您需要它,那么提出建议会更容易。我会在我的答案中添加一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2017-04-09
    • 2016-06-08
    相关资源
    最近更新 更多