簡體   English   中英

我在使用 Flutter 時遇到 CachedNetworkImageProvider 問題

[英]I'm having an issue with CachedNetworkImageProvider using Flutter

我已經為此工作了幾個小時,並且查看了一堆似乎與我相似的問題。 我發現很多“修復”都有些過時,並且對較新版本的 flutter 無效。 我目前使用的是 1.17.2,並且正在使用 cached_network_image ^2.2.0+1。

因此,如果還沒有照片,我會嘗試使用通用占位符顯示用戶個人資料照片,或者我正在從 Firebase 中提取保存照片,如果他們有的話。

這是代碼片段

_buildUserTile(User user) {
    return ListTile(
      leading: CircleAvatar(
        radius: 20.0,
        backgroundImage: user.profileImageUrl == null
            ? 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,
          ),
        ),
      ),
    );
  }

因此,當我運行程序時,它會將圓圈頭像顯示為藍色圓圈,這是我遇到的錯誤...

════════ 圖像資源服務捕獲的異常════════════════════════════ 解析圖像時拋出以下ArgumentError編解碼器:無效參數:URI 中未指定主機

拋出異常時,這是堆棧

  _HttpClient._openUrl  (dart:_http/http_impl.dart:2282:9)
  _HttpClient.openUrl  (dart:_http/http_impl.dart:2200:7)
  IOClient.send 
  package:http/src/io_client.dart:33
  HttpFileService.get 
  package:flutter_cache_manager/…/web/file_service.dart:32
  WebHelper._download 
  package:flutter_cache_manager/…/web/web_helper.dart:76

  Image provider: CachedNetworkImageProvider("", scale: 1.0) 
  Image key: CachedNetworkImageProvider("", scale: 1.0): CachedNetworkImageProvider("", scale: 1.0)

- 對不起丑陋的格式

所以它說在URI中沒有指定主機。 我不確定我做錯了什么,我不確定如何解決這個問題。 我對 flutter 很陌生。 幫助將不勝感激。 謝謝。 如果需要更多細節,請告訴我。

您似乎收到了該錯誤,因為您的鏈接是空白的。 如果要在鏈接為空白時顯示資產圖像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,
          ),
        ),
      ),
    );
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM