错误:参数类型“字符串?”不能分配给参数类型 'String',因为 'String?'可空且“字符串”不是“电子邮件”+user.email

时间:2021-06-27 20:28:35

标签: flutter dart

2 个答案:

答案 0 :(得分:1)

您必须处理 1) 用户没有个人资料图片和 2) 用户没有显示名称的情况。您可以使用三元运算符处理此问题:

@override
Widget build(BuildContext context) {
  final user = FirebaseAuth.instance.currentUser;
  final String? url = user.photoURL;
  final String? name = user.displayName;

  return Container(
    // ...

    // Handling the profile picture
    url == null 
      ? SizedBox.shrink()    // If it's missing, display an empty box
      : CircleAvatar(radius: 25, backgroundImage: NetworkImage(url))
    
    // ...

    // Handling the display name
    name == null
      ? Text("")    // If it's missing, display an empty text
      ? Text("Name: ${name}", style: TextStyle(color: Colors.white))
  );
}

答案 1 :(得分:0)

您面临的错误来自空安全,您发送到 NetworkImage 小部件的参数可以是 nullString,因此您可能需要更新代码到这个例子:

NetworkImage(user.photoURL!),


Text("Name ${user.displayedName!}", style: TextStyle(color: Colors.white)),

您可以在官方文档中了解有关 null 安全的更多信息:

https://flutter.dev/docs/null-safety