使用Provider.of <ProvoiderName>(context)时,必须将非null字符串提供给Text小部件。

我有一个问题。使用此行代码时

final String email = Provider.of<Auth>(context).email;

在我的build中的StatelessWidget方法内部,当我尝试执行它/像这样调用它时:

child: Text(email),

我遇到以下错误

  

构建InitDrawer(dirty,依赖项时,引发以下断言:   I / flutter(17778):[InheritedProvider,MediaQuery]):   I / flutter(17778):必须为Text小部件提供非null的字符串。

但是当我这样使用它

child: Text("${email}"),

您能告诉我有什么区别,为什么用花括号调用它时没有出现错误?这是在Flutter中进行编码的正确方法吗?我正在使用异步方法获取电子邮件,所以我想这就是为什么在首次加载应用程序时会得到null的原因,但是在应用程序本身中,我可以看到电子邮件而没有任何错误,我只能在Android Studio中的控制台中看到错误

lisheng1987 回答:使用Provider.of <ProvoiderName>(context)时,必须将非null字符串提供给Text小部件。

所以花括号用于在双引号中的字符串中使用参数的值。因此,当“电子邮件”参数没有任何价值时,您猜猜双引号中包含什么?仅空双引号,这是有效的字符串。但是,当您给出不带花括号和双引号的param值时,如果param为null(即开头),则Text(null)将为null。对于Text小部件,一个参数-字符串是必需的。不能为空。 正确的方法?您想在Text()中显示一个占位符吗?然后在Text()中-电子邮件??“占位符”。 想要保持空白吗?文字(“ $ email”)

本文链接:https://www.f2er.com/3125639.html

大家都在问