22

I'm trying to add the option for the quantity to be adjusted but I get an error saying "A non-null String must be provided to a Text widget" How do I provide this, to this code? img

 trailing: Container(
        height: 60,
        width: 60,
        padding: EdgeInsets.only(left: 10),
        child: Column(
          children: <Widget>[
            new GestureDetector(child: Icon(Icons.arrow_drop_up), onTap: () {}),
            new Text(cart_prod_qty),
            new GestureDetector(child: Icon(Icons.arrow_drop_down), onTap: () {})
          ],
        ),
4

12 回答 12

39

你应该检查 null 安全

Text(cart_prod_qty??'default value'),
于 2019-05-29T04:52:14.117 回答
8

只需检查 null 并给出默认值

Text(cart_prod_qty!=null?cart_prod_qty:'default value'),

如果你愿意,你可以把它留空

Text(cart_prod_qty!=null?cart_prod_qty:''),

否则,您可以将文本小部件设为可选

cart_prod_qty!=null? Text(cart_prod_qty): Container()
于 2019-05-29T04:45:09.070 回答
5

错误本身显示了代码中的错误,Text 小部件仅适用于字符串,而对于 null,它们故意引发了异常。检查他们添加抛出异常的 text.dart 文件实现。

assert(
         data != null,
         'A non-null String must be provided to a Text widget.',
       ),

要解决上述错误,您必须提供一些默认文本。

new Text(cart_prod_qty!=null?cart_prod_qty:'Default Value'),
于 2019-08-06T18:43:56.213 回答
4

在这种情况下为您和所有正在阅读本文的人提供建议。

当您向 Text() 添加非直接 String 值时,不要像在此示例中那样直接插入它:

Text(cart_prod_qty)

因为您可以像我一样获得“必须向文本小部件提供非空字符串”。

所以我建议你以后练习这个更安全:

Text('${cart_prod_qty}')
于 2021-03-21T23:41:36.223 回答
3

该值可能为空,因此如果它是可选字段,您会收到空错误尝试此操作:

new Text(cart_prod_qty == null ? '' : cart_prod_qty),
于 2019-11-08T06:51:08.667 回答
2

如果您确定它不为空,那么您可以安全地执行此操作:

Text(cart_prod_qty!),

对我来说,当它在用例中绝对不为空时,它比这样做更干净:

Text(cart_prod_qty ?? ''),
于 2021-05-28T18:31:42.027 回答
2

这看起来像是null价值问题。在 Text(cart_prod_qty)中,您将 null 提供给 Text 小部件,这是不允许的。在 Text 小部件中的 data 参数不能为空。

解决方案不要传递nullText小部件。为避免它设置默认值或检查您收到的值不为空。调用Text()小部件时

您可以分配一个默认值,并可以将其更改为:

 

Text(cart_prod_qty  ?? 'default value').

如果您有 dart 模型或集合类型,请检查 null 值并像这样传递默认值

ListTile(
    title: Text(User[‘user_name’] ?? 'default'),
    subtitle: Text(User[‘user’_info] ?? 'default'),
);
于 2020-10-06T12:57:25.137 回答
0

只需设置文本小部件值可选,如

Text(value ?? ""),
于 2020-03-04T17:25:24.653 回答
0

问题是可见的。您将 null 传递给 Text 小部件。new Text(cart_prod_qty)这可能是由于 api 的响应延迟(如果您正在使用它)。或者变量“cart_prod_qty”中没有值。你可以这样处理:new Text(cart_prod_qty != null ? cart_prod_qty.toString : '')

于 2020-10-21T18:13:58.927 回答
0

如果你知道你的字符串可以为空,你可以做这样的事情。虽然我使用了可见性小部件,因为我不希望我的小部件在它为空时显示。

class NullableTextWidget extends StatelessWidget {
      final String? text;
      final TextStyle? textStyle;
      const NullableTextWidget({Key? key, this.text,this.textStyle}) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        return Visibility(
          visible: text != null,
          child: Text(
            text ?? "",
            style: textStyle,),
        );
      }
    }
于 2021-03-15T05:02:48.677 回答
-1

我也遇到过同样的问题....我已经通过在文本之前使用 “新”关键字解决了它...

孩子:新文本(mydata [1] [“2”] [k]),

于 2020-12-21T06:04:45.833 回答
-2

由于这个,我遇到了同样的错误

之前

title:  Text(widget.title)

后:

title:  Text('ram')

这解决了我的错误

要解决此错误添加双引号或单引号 title: Text('ram')

于 2019-11-08T05:19:08.080 回答