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

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

以下是目前的情况。

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

【问题讨论】:

    标签: flutter dart


    【解决方案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);
      

      【讨论】:

        猜你喜欢
        • 2014-11-03
        • 2012-06-24
        • 1970-01-01
        • 2015-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-04
        • 1970-01-01
        相关资源
        最近更新 更多