我有一个问题。使用此行代码时
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中的控制台中看到错误
答案 0 :(得分:0)
所以花括号用于在双引号中的字符串中使用参数的值。因此,当“电子邮件”参数没有任何价值时,您猜猜双引号中包含什么?仅空双引号,这是有效的字符串。但是,当您给出不带花括号和双引号的param值时,如果param为null(即开头),则Text(null)将为null。对于Text小部件,一个参数-字符串是必需的。不能为空。 正确的方法?您想在Text()中显示一个占位符吗?然后在Text()中-电子邮件??“占位符”。 想要保持空白吗?文字(“ $ email”)