我在使用 Flutter 时遇到 CachedNetworkImageProvider 问题

Ind*_*igo 4 dart flutter

我已经研究了几个小时,并且研究了一堆似乎与我的问题相似的问题。我发现很多“修复”都有点过时,并且对于新版本的 flutter 无效。我目前使用的是 1.17.2,并且正在使用cached_network_image ^2.2.0+1。

\n\n

因此,如果还没有照片,我会尝试使用通用占位符显示用户个人资料照片,或者我正在从 Firebase 中提取保存的照片(如果他们有的话)。

\n\n

这是代码片段

\n\n
_buildUserTile(User user) {\n    return ListTile(\n      leading: CircleAvatar(\n        radius: 20.0,\n        backgroundImage: user.profileImageUrl == null\n            ? AssetImage(\'assets/images/user_placeholder.png\')\n            : CachedNetworkImageProvider(user.profileImageUrl),\n      ),\n      title: Text(user.name),\n      onTap: () => Navigator.push(\n        context,\n        MaterialPageRoute(\n          builder: (_) => ProfileScreen(\n            currentUserId: Provider.of<UserData>(context).currentUserId,\n            userId: user.id,\n          ),\n        ),\n      ),\n    );\n  }\n
Run Code Online (Sandbox Code Playgroud)\n\n

因此,当我运行该程序时,它会将圆形头像显示为蓝色圆圈,这就是我遇到的错误...

\n\n

\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90 捕获异常通过图片资源服务\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95 \x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90 \xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2 \x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\n解析图像编解码器时引发以下 ArgumentError:\n无效参数: URI 中未指定主机

\n\n

当异常抛出时,这是堆栈

\n\n
  _HttpClient._openUrl  (dart:_http/http_impl.dart:2282:9)\n  _HttpClient.openUrl  (dart:_http/http_impl.dart:2200:7)\n  IOClient.send \n  package:http/src/io_client.dart:33\n  HttpFileService.get \n  package:flutter_cache_manager/\xe2\x80\xa6/web/file_service.dart:32\n  WebHelper._download \n  package:flutter_cache_manager/\xe2\x80\xa6/web/web_helper.dart:76\n\n  Image provider: CachedNetworkImageProvider("", scale: 1.0) \n  Image key: CachedNetworkImageProvider("", scale: 1.0): CachedNetworkImageProvider("", scale: 1.0)\n
Run Code Online (Sandbox Code Playgroud)\n\n

- 抱歉格式丑陋

\n\n

所以它说 URI 中未指定主机。我不确定我做错了什么,也不知道如何解决这个问题。我对扑动很陌生。帮助将不胜感激。谢谢!如果需要更多详细信息,请告诉我。

\n

Jid*_*uru 5

您似乎收到该错误,因为您的链接为空。如果您想在链接为空时显示资产图片user.profileImageUrl.isEmpty。代码如下:

_buildUserTile(User user) {
    return ListTile(
      leading: CircleAvatar(
        radius: 20.0,
        backgroundImage: user.profileImageUrl == null || user.profileImageUrl.isEmpty
            ? AssetImage('assets/images/user_placeholder.png')
            : CachedNetworkImageProvider(user.profileImageUrl),
      ),
      title: Text(user.name),
      onTap: () => Navigator.push(
        context,
        MaterialPageRoute(
          builder: (_) => ProfileScreen(
            currentUserId: Provider.of<UserData>(context).currentUserId,
            userId: user.id,
          ),
        ),
      ),
    );
  }
Run Code Online (Sandbox Code Playgroud)