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

Posted

技术标签:

【中文标题】是否可以为 Text 小部件提供默认值?【英文标题】:Is it possible to supply a default value to a Text widget? 【发布时间】:2021-10-26 20:46:55 【问题描述】:

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

以下是目前的情况。

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

【问题讨论】:

【参考方案1】:

你可以试试这样的: '\$$quarter['data'][0].funds ?? 0'

【讨论】:

【参考方案2】:

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

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

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

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,
  ),
)

【讨论】:

我试图解决的问题是,当它遇到数据不存在的文本小部件时,它会立即引发范围错误,因为可能没有四分之一['数据'][1].基金。可能只有一个 Quarter['data'][0].funds 等等。我想它会是空的,但我想不是。 从您所说的我了解到quarter['data'] 返回一个对象列表并引发范围错误,因为您提供的索引在列表中不存在。请查看编辑后的答案。【参考方案3】:

你可以试试这些:

如果值可以为空,那么你可以试试这个:

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

?? 运算符使用您的值(如果它不为空)。如果是,它将使用您想要的默认值。

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

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

【讨论】:

以上是关于是否可以为 Text 小部件提供默认值?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法为 sfWidgetFormFilterDate 小部件设置默认值?

更改默认小部件大小

Django Admin ForeignKey字段小部件选项和不一致的默认值

更新中带有小部件的 Django Form DateInput:丢失初始值

使用 RiverPod 状态管理 Flutter 更改 Text 值

qt 部件设置默认值