質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.49%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Flutter

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

Cloud Firestore

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

Dart

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

Q&A

1回答

2327閲覧

flutter nullチェックエラーが解決されない

eren1

総合スコア0

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Flutter

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

Cloud Firestore

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

Dart

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

0グッド

0クリップ

投稿2022/01/14 09:50

前提・実現したいこと

flutterで下記の該当ソースコードの5行目などの
if (doc.data()...
のdataがnullチェックのエラーが出ているので解決したい。

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

error: The method 'data' can't be unconditionally invoked because the receiver can be 'null'.

該当のソースコード

Dart

1ソースコードstatic Future<List<TalkRoom>?> getRooms(String myUid) async { 2 final snapshot = await _firestoreInstance.collection('room').get(); 3 List<TalkRoom> roomList = []; 4 // 自分のUidの選別 5 await Future.forEach(snapshot.docs, (doc) async { 6 // 自分のUidかどうかのチェック 7 if (doc.data()['joined_user_ids'].contains(myUid)) { 8 String? yourUid; 9 doc.data()['joined_user_ids'].forEach((id) { 10 if (id != myUid) { 11 yourUid = id; 12 return; 13 } 14 }); 15 // 相手のプロフィール情報の取得 16 User? yourProfile = await getProfile(yourUid!); 17 TalkRoom room = 18 TalkRoom(doc.id, yourProfile!, doc.data()['lastMessage'] ?? ''); 19 roomList.add(room); 20 } 21 }); 22 print(roomList.length); 23 24 return roomList; 25 }

試したこと

下記の通り?をつけnullチェックをしました。
if (doc?.data()...

しかし今度は下記エラーが出てしまったので
error: The method 'data' isn't defined for the type 'Object'.

5行目の下記の通りdocの前にDocumentSnapshotを付けたのですが解決できていない状況です。

await Future.forEach(snapshot.docs, (DocumentSnapshot doc) async {...

恐縮ですが、上記の解決方法が分からずにいるのでご教示いただきたいです。
よろしくお願いいたします。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

nullチェックは"?"じゃなくて"!"です
"?"はこのような場合に使います。

dart

1String? value="teratail";//データ型+?+変数名 でnullを入れられる変数 2... 3print(value??"abc");//もしvalueがnullなら、abcをprintする

投稿2022/01/16 12:10

編集2022/01/30 08:48
children

総合スコア89

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問