有条件的条件渲染列表

时间:2020-11-12 09:10:08

标签: flutter

我有一个“合同”模型,参数之一是合同是否有效。我在contractModel文件中使用布尔true / false来实现此条件。 现在,我正在渲染包含所有合同的ListView.Builder,但是我已经在屏幕顶部创建了一个过滤器,以选择有效/无效的合同。我要实现的是在“活动” ListView.Builder中呈现活动合同,在“非活动” ListView.Builder中呈现非活动合同。

这是ListView.Builder的代码:

  return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: <Widget>[
        Padding(
          padding: const EdgeInsets.all(8.0),
          child: Categories(),
        ),
        Expanded(
          child: Padding(
            padding: const EdgeInsets.all(8.0),
            child: ListView.builder(
              itemCount: contracts.length,
              itemBuilder: (context, index) => ContractCard(
                contract: contracts[index],
                press: () => Navigator.push(
                  context,
                  MaterialPageRoute(
                    builder: (context) => DetailsScreen(
                      contract: contracts[index],
                    ),
                  ),
                ),
              ),
            ),
          ),
        ),
      ],
    );
  }
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

参考包(flutter package),作者的解释(medium post)。这是通常有条件地渲染小部件的方式

return Column(
      children: <Widget>[
        someCondition == true ?
          Text('The condition is true!'):
          Text('The condition is false!'),
      ],
    );

使用上述软件包,尽管您可以这样做

return Column(
      children: <Widget>[
        Conditional.single(
          context: context,
          conditionBuilder: (BuildContext context) => someCondition == true,
          widgetBuilder: (BuildContext context) => Text('The condition is true!'),
          fallbackBuilder: (BuildContext context) => Text('The condition is false!'),
        ),
      ],
    );
相关问题