質問するログイン新規登録

Q&A

0回答

227閲覧

The following ArgumentError was thrown resolving an image codec:

ituking

総合スコア80

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

0グッド

0クリップ

投稿2023/08/31 09:41

編集2023/09/06 10:55

0

0

実現したいこと

  • The following ArgumentError was thrown resolving an image codec:
    Invalid argument(s): No host specified in URI file:///null
    を解決させて動作がうまくいくようにする。
    有識者の方々がどうデバッグしているかを知り、自分のものにしたい。

前提

Flutterで自作SNSの開発をしています。
どうやら画像がnullなことによって発生していると考えられるのですが、ここから行き詰まってしまい、長時間化してしまっているので質問させていただくことにしました。

発生している問題・エラーメッセージ

══╡ EXCEPTION CAUGHT BY IMAGE RESOURCE SERVICE ╞════════════════════════════════════════════════════ The following ArgumentError was thrown resolving an image codec: Invalid argument(s): No host specified in URI file:///null When the exception was thrown, this was the stack: #0 _HttpClient._openUrl (dart:_http/http_impl.dart:2751:9) #1 _HttpClient.getUrl (dart:_http/http_impl.dart:2627:48) #2 NetworkImage._loadAsync (package:flutter/src/painting/_network_image_io.dart:124:59) #3 NetworkImage.loadImage (package:flutter/src/painting/_network_image_io.dart:84:14) #4 ImageProvider.resolveStreamForKey.<anonymous closure> (package:flutter/src/painting/image_provider.dart:529:39) #5 ImageCache.putIfAbsent (package:flutter/src/painting/image_cache.dart:382:22) #6 ImageProvider.resolveStreamForKey (package:flutter/src/painting/image_provider.dart:526:81) #7 ImageProvider.resolve.<anonymous closure> (package:flutter/src/painting/image_provider.dart:374:9) 以下省略 Image provider: NetworkImage("null", scale: 1.0) Image key: NetworkImage("null", scale: 1.0) ════════════════════════════════════════════════════════════════════════════════════════════════════ Another exception was thrown: Invalid argument(s): No host specified in URI file:///null Another exception was thrown: Invalid argument(s): No host specified in URI file:///null

該当のソースコード

コードが長くなってしまったので、コメント欄に記載させていただきます。

試したこと

1、エラーメッセージとしてはpostImagePathの値がnullではないはずがnullになってしまっていることが問題だと考えられるので、postImagePathをnull許容にし、nullの場合、エラーがプリント及びシミュレータに表示されるような実装にした。
2、エラーメッセージで検索したものの解決に至らず。
3、有識者の方のアドバイスで、networkImageに入れているurlはprintしたところ、nullが返ってきました。firestoreにはデータは存在。
4、getPostUserMapの関数内の確認中。

補足情報(FW/ツールのバージョンなど)

[✓] Flutter (Channel stable, 3.10.5, on macOS 13.4 22F66 darwin-x64,
locale ja-JP)
[✓] Android toolchain - develop for Android devices (Android SDK version
32.1.0-rc1)
[✓] Xcode - develop for iOS and macOS (Xcode 14.3.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2021.2)
[✓] VS Code (version 1.79.2)
[✓] Connected device (3 available)
[✓] Network resources

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ituking

2023/08/31 09:41

```home_page.dart import 'package:chat_app/firestore/account_firestore.dart'; import 'package:chat_app/firestore/post_firestore.dart'; import 'package:chat_app/model/account.dart'; import 'package:chat_app/model/post.dart'; import 'package:chat_app/pages/image_zoom_page.dart'; import 'package:chat_app/pages/post_comment_page.dart'; import 'package:chat_app/pages/post_page.dart'; import 'package:chat_app/utils/authentication.dart'; import 'package:chat_app/utils/like_button.dart'; import 'package:chat_app/utils/share_button.dart'; import 'package:chat_app/utils/timeago.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; class HomePage extends StatefulWidget { const HomePage({super.key}); @override State<HomePage> createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { final double padValue = 0; final Account myAccount = Authentication.myAccount!; List<String> postAccountIds = []; late Future<Map<String, Account>?> getPostUserMap; late Map<String, dynamic> data; @override void initState() { super.initState(); getPostUserMap = AccountFirestore.getPostUserMap(postAccountIds); } @override Widget build(BuildContext context) { return Scaffold( body: StreamBuilder<QuerySnapshot>( stream: PostFirestore.posts .orderBy('post_time', descending: true) .snapshots(), builder: (context, postSnapshot) { if (postSnapshot.hasData) { List<String> postAccountIds = []; for (var doc in postSnapshot.data!.docs) { Map<String, dynamic> data = doc.data() as Map<String, dynamic>; if (!postAccountIds.contains(data['post_account_id'])) { postAccountIds.add(data['post_account_id']); } } return FutureBuilder<Map<String, Account>?>( future: getPostUserMap, builder: (context, userSnapshot) { if (userSnapshot.connectionState == ConnectionState.waiting) { return const CupertinoActivityIndicator(); } else if (userSnapshot.hasError) { if (kDebugMode) { print("Error: ${userSnapshot.error}"); } return Text("Error: ${userSnapshot.error}"); } else if (!userSnapshot.hasData) { if (kDebugMode) { print("No data available."); } return const Text("No data available."); } if (userSnapshot.hasData && userSnapshot.connectionState == ConnectionState.done) { if (kDebugMode) { print("userSnapshot.hasData: ${userSnapshot.hasData}"); print( "userSnapshot.connectionState: ${userSnapshot.connectionState}"); } return ListView.builder( itemCount: postSnapshot.data!.docs.length, itemBuilder: (context, index) { Map<String, dynamic> data = postSnapshot.data!.docs[index].data() as Map<String, dynamic>; Post post = Post( id: postSnapshot.data!.docs[index].id, postImagePath: data['image_path'], postContent: data['content'], postAccountId: data['post_account_id'], postAccount: userSnapshot.data![data['post_account_id']], postTime: data['post_time'], likedCount: data['liked_count'], likedUserIds: List<String>.from(data['liked_user_ids'] ?? []), ); if (kDebugMode) { print("post.likedUserIds: ${post.likedUserIds}"); print("myAccount.id: ${myAccount.id}"); } bool isLiked = post.likedUserIds.contains(myAccount.id); if (kDebugMode) { print( "When retrieved from the stream, isLiked => $isLiked"); print(post.postImagePath); print(post.postContent); print(post.postTime); print(post.likedCount); print("Debug: Checking post and post.likedUserIds"); print("post: $post"); print("post.likedUserIds: ${post.likedUserIds}"); } return Card( child: SizedBox( height: MediaQuery.of(context).size.height * 0.75, child: Column( children: [ ListTile( leading: CircleAvatar( backgroundImage: NetworkImage( post.postAccount?.profileImagePath ?? "null", ), ), title: Text( post.postAccount?.name ?? "Unknown", style: const TextStyle( fontWeight: FontWeight.bold, color: CupertinoColors.black, ), ), subtitle: Text( post.postTime == null ? "" : createTimeAgoString( post.postTime!.toDate(), ), style: const TextStyle( fontWeight: FontWeight.normal, color: CupertinoColors.systemGrey, ), ), ), Expanded( child: post.postImagePath != null ? GestureDetector( onTap: () { Navigator.push( context, PageRouteBuilder( pageBuilder: ( context, animation, secondaryAnimation, ) => ImageZoomPage( imagePath: post.postImagePath!, ), transitionsBuilder: ( context, animation, secondaryAnimation, child, ) { return const FadeUpwardsPageTransitionsBuilder() .buildTransitions( MaterialPageRoute( builder: (context) => ImageZoomPage( imagePath: post .postImagePath!, ), ), context, animation, secondaryAnimation, child, ); }, ), ); }, child: Padding( padding: const EdgeInsets.symmetric( horizontal: 5.0, ), child: Container( decoration: BoxDecoration( borderRadius: ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問