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で開発)

 

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

おすすめの学習教材

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

 

 \キャンペーン時を狙えば安価で網羅的な内容が学べる(日本語訳あり)/

 

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

 

おすすめの学習書籍

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

 

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


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

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