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

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

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

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

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

Q&A

解決済

1回答

3955閲覧

flutter 「Null check operator used on a null value」と出る

rn383

総合スコア2

Flutter

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

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

0グッド

0クリップ

投稿2022/06/27 08:09

firebaseよりデータ取得し、そのデータを変数に格納して処理をしたいのですが、
「Null check operator used on a null value」とエラーが出てしまいます。

以下のコードで実行すると、「Null check operator used on a null value」とエラーが出る。

Future<int> future() async { String uid = FirebaseAuth.instance.currentUser!.uid; int day = 0; await FirebaseFirestore.instance .collection('users') .doc(uid) .get() .then((DocumentSnapshot document) { Map<String, dynamic> data = document.data()! as Map<String, dynamic>; day = data['day_count']; }); return day; } Widget _buildChild(BuildContext context, AsyncSnapshot<Object?> snapshot) { int? day2 = snapshot.data as int?; String day3 = (day2! + 1).toString();

試しに以下のコードで実行すると、「type 'Null' is not a subtype of type 'int' in type cast」とエラーが出ました。

Future<int> future() async { String uid = FirebaseAuth.instance.currentUser!.uid; int day = 0; await FirebaseFirestore.instance .collection('users') .doc(uid) .get() .then((DocumentSnapshot document) { Map<String, dynamic> data = document.data()! as Map<String, dynamic>; day = data['day_count']; }); return day; } Widget _buildChild(BuildContext context, AsyncSnapshot<Object?> snapshot) { int day2 = 0; day2 = snapshot.data as int; String day3 = (day2 + 1).toString();

改善方法ありましたら、ご教示いただきたく。
宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

今回のケースだとAsyncSnapshot.hasDataでデータが確定しているかどうかをまず確認をする必要があります。
AsyncSnapshot.hasDatafalseの場合snapshot.datanullです。

データが確定していないのでsnapshot.datanullで、そのため、day2!でnullチェックにひっかかってます。

FutureBuilderのヘルプのBuilder contractを見ると、データがいつ確定するのとか、エラーがあった場合どういった情報が来るのか、などの情報が得らえると思います。

投稿2022/06/27 09:53

ta.fu

総合スコア1667

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問