【问题标题】:A non-null String must be provided to a Text widget when using a Provider.of<ProvoiderName>(context)使用 Provider.of<ProvoiderName>(context) 时,必须向 Text 小部件提供非空字符串
【发布时间】:2019-11-11 08:32:30
【问题描述】:

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

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

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

child: Text(email),

我收到以下错误

在构建 InitDrawer(dirty, dependencies: 我/颤振(17778):[InheritedProvider,MediaQuery]): I/flutter (17778):必须向 Text 小部件提供非空字符串。

但是当我这样使用它时

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

你能告诉我有什么区别吗?为什么我在用大括号调用它时没有出错?这是在颤振中编码的正确方法吗?我正在使用异步方法收到我的电子邮件,所以我想这就是为什么我在第一次加载应用程序时得到 null 的原因,但是在应用程序本身中我可以看到没有任何错误的电子邮件我只在 Android Studio 的控制台中看到错误.

【问题讨论】:

    标签: android-studio flutter dart


    【解决方案1】:

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

    【讨论】:

    • 是的,有道理
    • 很酷吧?以上描述可接受的答案? :)
    猜你喜欢
    • 2021-07-19
    • 2020-04-14
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 2020-11-18
    相关资源
    最近更新 更多