Flutterを使用してアプリ開発を行っている際に以下のエラーが発生しました。
flutter: The getter 'length' was called on null.
flutter: Receiver: null
flutter: Tried calling: length
flutter: Receiver: null
flutter: Tried calling: length
今回は上記のエラーの解消法を記載します。
開発環境
- MacBook Pro (macOS Catalina バージョン10.15.1)
- Flutter 1.12.13+hotfix.5 channel stable
- Dart 2.7.0
ListViewを使用した際に「The getter 'length' was called on null.」エラーが発生
以下のコードがあるとします。(他ファイルは省略)
※契約しているサブスクリプションサービスを一覧表示するアプリです。
DBから取得したレコードをListViewを用いて、リストで表示します。
このままでは画面上にリスト表示することはできますが、flutter runでアプリを実行した際に
このようなエラーが発生しました。
【解消法】値がNullの場合の分岐処理を記載しておく
結論から言うと、取得した値(この場合subscriptions)がNullの場合の処理を記載することで解消できます。
return subscriptions == null
? Container()
: ListView.builder(
itemCount: subscriptions.length,
itemBuilder: (context, index) {
returnSubscriptionTile(subscription: subscriptions[index]);
},
);
ファイル全体は以下のようになります。
エラーの発生原因
アプリをビルドした後、DBからデータを取得するまでにラグがあるため最初のsubscriptionsの値はNullになります。
そのため「The getter 'length' was called on null.」エラーが発生していたようです。
subscriptionsがNullの場合、lengthを使用しないようにすることでエラーを回避できます。
日本語でFlutterの概要を知るなら以下の書籍がオススメです。
コメント