[flutter2^]新しくなったListについて

こんにちは。flutter個人開発者の皆さんはきっと私と同じく、flutter2への対応に右往左往していることでしょう。既にブログネタがかなり出来上がっているのですが、軽いやつを。

Listが新しくなった件

flutter2にアップデートすると、Listの初期化処理のところでエラーが出ていませんか?

NOTICE: This constructor cannot be used in null-safe code. Use [List.filled] to create a non-empty list. This requires a fill value to initialize the list elements with. To create an empty list, use [] for a growable list or List.empty for a fixed length list (or where growability is determined at run-time).

今までのListは、他言語と似たような使い方が可能でした。var list = List<int>()的な。

しかし今度からはこのように使えとのこと。以下公式より抜粋。

var fixedLengthList = List<int>.filled(5, 0);
fixedLengthList.length = 0;  // Error
fixedLengthList.add(499);    // Error
fixedLengthList[0] = 87;
var growableList = [1, 2];
growableList.length = 0;
growableList.add(499);
growableList[0] = 87;

https://api.flutter.dev/flutter/dart-core/List-class.html

簡単に言うと、初期化方法の違いによって固定長と可変長どちらにもなると言うこと。そして使い方を間違えるとエラーが出ると言うこと。C#とかの別言語に馴染みがある方は、きっとgrowableList的な使い方を想像しているはず。まだまだ情報が少なくて困りますが、この辺りしっかり理解しておきましょう。