是否可以为Text小部件提供默认值?



正如问题所述,我想为Text Widget提供一个默认值。我有四个文本小部件。我在每个Text Widget中使用一个变量来显示数据。有一个机会,一些数据可能不存在,这取决于用户,我希望能够默认这些文本部件为0,如果值不存在,以防止错误。这可能吗?谢谢!

下面是当前的情况。

Text(
'$${quarter['data'][0].funds}',
style: TextStyle(
color: Colors.black,
fontWeight: FontWeight.bold),
),

您可以使用??操作符提供一个默认值,该操作符返回左侧的表达式,除非该表达式的值为空,在这种情况下,它计算并返回右侧的表达式(在quarter['data']quarter['data'][0]可为空的情况下,您可能需要为条件属性访问添加问号):

Text(
'$${quarter['data']?[0]?.funds ?? 0}',
style: TextStyle(
color: Colors.black,
fontWeight: FontWeight.bold,
),
)

要安全地访问quarter['data']列表索引处的资金,您可以创建一个helper方法:

int fundsAt(int index) {
// This will return 0 if no element exists at the given index
return index >= 0 && index < quarter['data'].length
? quarter['data'][index].funds
: 0;
}

下面是使用fundsAt()的例子:

Text(
'$${fundsAt(0)}',
style: TextStyle(
color: Colors.black,
fontWeight: FontWeight.bold,
),
)

你可以尝试这样做:'$${quarter['data'][0].funds ?? 0}'

你可以试试这些:

如果该值可以为空,那么你可以这样做:

Text(myNullableData ?? "Default value");
Text(myNullableData == null ? "" : "Default value");

??操作符使用你的值,如果它不是空的。如果是,它将使用您想要的默认值。

否则,如果some data may not exist depending意味着变量可以只是一个空字符串:'"',那么您可以使用?:操作符:

Text(myData == "" ? "Default value" : myData);

最新更新