当前位置: 首页 > 知识库问答 >
问题:

发生异常_TypeError(类型“Container”不是类型“String”的子类型)

傅越
2023-03-14

我试图显示用户图像URL在CircleAvatar();它显示一个空错误,即使我已经提供了它。还是我做错了?

首先,我调用Auth方法和设置图像字符串img,

  AuthMethods _auth = AuthMethods();
  String img;

然后在initstate中实例化

    _auth.getCurrentUser().then((user) async {
      setState(() {
        user.uid;

        img = user.photoUrl

      });
    });
  }

然后把它放在抽屉里()

  DrawerHeader(
    child: CircleAvatar(
      backgroundColor: Colors.deepOrange,
      radius: 100,
      child: Image(
        fit: BoxFit.cover,
        image: NetworkImage(
              img != null ? img : Container(),  // <== here
            ) ??
            CircularProgressIndicator(),
      ),
    ),
    decoration: BoxDecoration(
      color: Colors.orange,
    ),
  ),

共有2个答案

祁建业
2023-03-14

NetworkImage在其字符串参数中获取图像URL,在本例中,您将图像URL或小部件传递到此参数中,而小部件显然不是字符串。您的空检查应位于NetworkImage上方,如下所示:

...

image: 
   img != null ? NetworkImage(img) 
               :
            CircularProgressIndicator(),
 //Or container or different desired widget in case image path is null
...

西门飞翮
2023-03-14

NetworkImage将字符串作为周界,而不是小部件。就你而言:

NetworkImage(
              img != null ? img : Container(),  // <== here
            )

如果img即String为null,则返回Container(),但应该返回一个字符串(也许可以给出一个空字符串)

 类似资料: