如何在基于飞镖的firstWhere中的orElse中返回其他基于条件的结果



对于相同类型的问题,我已经在堆栈上完成了一些基于条件的线程,但输出不是我想要的。

以下是我目前对我的代码所做的操作,它正在工作,但从我的角度来看,这是一种糟糕的做法,尽管我可能错了,这是需要做的事情!

方法1:

transData = data.translations.firstWhere(
(element) => element.langCode == langCode,
orElse: () => null);
transData = (transData == null)
? data.translations.firstWhere(
(element) => element.langCode == 'en-IN',
orElse: () => null)
: transData;

方法2:

transData = data.translations.firstWhere(
(element) => element.langCode == langCode,
orElse: () => data.translations.firstWhere(
(element) => element.langCode == 'en-IN',
orElse: () => null));

您可以清楚地看到,我想要的是检查给定条件是否为真,然后基于其他条件返回基于默认langCode的结果。对于这个orElse是最好的地方,但如果代码如下,则会出现错误:

代码:

transData = data.translations.firstWhere(
(element) => element.langCode == langCode,
orElse: (element) => element.langCode == 'en-IN');

错误:

The argument type 'ModelName Function(dynamic)' can't be assigned to the parameter type 'ModelName Function()'.

我不想要null结果,因为如果存在父记录的条目,则默认的基于langCode的记录总是存在的。

orElse应返回默认值,而不是布尔值。

transData = data.translations.firstWhere(
(element) => element.langCode == langCode,
orElse: () => aDefaultTranslation);

相关内容

  • 没有找到相关文章

最新更新