Flutter:不定期にNull check operator used on a null valueが出る(getRootWidgetSummaryTree関連)

結論:Flutter PerformanceのTrack widget rebuildsのチェックを外す

2022/10/9 Flutter エラー・バグ日記

 

いつの間にか、デバッグモードでの実行中に、コンソール画面に以下のエラーが出るようになった。

 

The following _CastError was thrown during a service extension callback for "ext.flutter.inspector.getRootWidgetSummaryTree":
Null check operator used on a null value

When the exception was thrown, this was the stack: 
#0      WidgetInspectorService._registerObjectGroupServiceExtension.<anonymous closure> (package:flutter/src/widgets/widget_inspector.dart:796:84)
#1      WidgetInspectorService._registerObjectGroupServiceExtension.<anonymous closure> (package:flutter/src/widgets/widget_inspector.dart:795:17)
#2      BindingBase.registerServiceExtension.<anonymous closure> (package:flutter/src/foundation/binding.dart:602:32)
<asynchronous suspension>

 

本記事はライトな日記思考で書いているので、詳細説明はしておらず、基本、テキストのみで画像とかはあまり載せておりません。。m(_ _)m

解説記事ではないため、解決していない内容や、その時々の間違った解釈を述べてしまっている可能性が大いにありますので、何卒、ご了承ください。

 

「Null check operator used on a null value」とのこと。

 

どの変数がNullになったのか分からないため、いつも対処に苦労するエラー。

 

単純なnull safetyの対応漏れ・考慮漏れであれば良いのだが、今回実行していたアプリはシンプルな内容で、null safetyの対応に問題はないことを確認していた。。

 

発生が不定期で、アプリは落ちない

具体的な状況としては、アプリ内に設置したボタンを押すと、setStateで全体を再描画する仕様になっており、このボタンを押したときにエラーが発生するというもの。

 

厄介なのは、エラーが起きるときと起きないときがあり、発生が不定期である点。

 

何も条件が変わらないのに、ボタンを複数回押していると、突然エラーが発生するので、原因を特定しづらい。。

 

一方、エラーが発生してもアプリが落ちることはなく、引き続き動作できている。

 

リリースモードで実行すれば特段問題はないので、放置しても良い気はするが、やや気持ち悪い。。

 

Android Studioの設定が問題らしい

エラーメッセージを読んでも、ヒントになるキーワードが見つからず、意味がわからない。。

 

仕方なく、エラーの最初の1文でググってみると、ズバリのイシューが上がっていた。

 

 

自分と全く同じエラーが報告されており、まだオープン中(未解決)の模様。

 

TextFieldの入力中に発生することが報告されているが、Flutterの担当者の方が、再現できないと回答している。

 

しかし、最後の方のやり取りを見ると、Android Studioにおいて、動作中の負荷状況を確認できる「Flutter Performance」のタブで、「Track widget rebuilds」にチェックをしていると発生するので、チェックを外せば解消すると書かれていた。

 

思い出したが、つい最近、Widgetの再描画状況や、負荷状況を確認するために、「Flutter Performance」のタブの「Track widget rebuilds」にチェックを入れていた。

 

早速チェックを外してみると、確かにエラーが発生しなくなった!

 

 

どうやら再描画時の負荷状況をチェックする動作に、一部、不具合がある模様(なので、イシューがオープン中なのだろう)。。

 

推察ではあるが、上記イシューで報告されているTextField関連のエラーについても、TextEditingControllerが、ChangeNotifierの拡張クラスなので、テキスト入力すると再描画が起こることで、同様のエラーが発生したのではないかと思われる。

 

過去に、Breakpointの設定が原因でエラーが生じたことがあったので、コーディングの内容ではなく、Android Studioの設定関係が原因でエラーになる場合があることを改めて認識。

 

\一般的なエラー対処法をまとめた記事はこちら/

 

リリースしたアプリ(全てFlutterで開発)

暗記用マーカー – シンプル穴埋め問題作成

Google Play で手に入れよう
Download on the App Store

 

超即ToDo –最短2タップで通知登録できるタスク管理アプリ

Google Play で手に入れよう
Download on the App Store

 

かんたんプリント管理:アラート・OCR文字認識・検索機能を搭載

Google Play で手に入れよう
Download on the App Store

 

シンプルメモ帳「BasicMemo」 – 文字カウント、ワンタッチ入力、タグ管理等の機能を搭載

Macのデスクトップ版もリリースしました。

Google Play で手に入れよう
Download on the App Store

 

個人アプリ開発で役立ったもの

おすすめの学習教材

超初心者向けでオススメな元Udemyの講座/

 

\Gitの基礎について無料で学べる/

 

おすすめの学習書籍

実用的image_pickerに関してかなり助けられた/

 

Dartの基礎文法を素早くインプットできる/


Dart入門 – Dartの要点をつかむためのクイックツアー

 

おすすめのソフトウェア

安くて高機能。アプリの独自ドメイン・紹介サイト構築に最適/

 

\アイコン作成・画面設計・クラウド保存…何でもできて超必須

 

おすすめのハードウェア

\リーズナブルな価格で検証端末を確保できる/

 

\目線の高さを調節しやすく、疲れにくい

 

\キータッチが超静音で心地よい/

 

おすすめのサポートアイテム

\部屋の中を仕切って、集中できる開発環境を作れる/

 

\部屋の中でも大き過ぎず、長時間座っても疲れない

 

\バグと格闘した後の肩こりを解消してくれる/

タイトルとURLをコピーしました