Flutterで有向グラフを作りたいときに使えそうなの

これはただの自分用のメモ書き

まず、僕が想定しているようなグラフ?ネットワーク図?はforce directed layoutみたいな名前が付けられてたりするっぽい。パッケージは無かったけど自分でウィジェット作る時とか参考になるかも。

そしてFlutterで使えそうなのは以下

dart - Flutter directed graph. Can I use CustomPainter Class with custom widgets? - Stack Overflow

flutter_echarts | Flutter Package (pub.dev)

graphview | Flutter Package (pub.dev)

一応graphview作った人の記事も載せておく

Things I learned while developing Flutter GraphView widget with MultiChildRenderObject | by Nabil Mosharraf Hossain | Medium 

Prefer using '??=' over testing for nullについて(Null-aware Operatorsまとめ)

if (database == null) {
                  database = openDatabase(
                    join(await getDatabasesPath(), 'track_data.db'),
                  );
                }

というコードを書いたらPrefer using '??=' over testing for nullと注意されました。
'??='とはDartのNull-aware Operatorsというものだそうです。
以下、Null-aware Operatorsを紹介します。

??

exp ?? otherExp

とすると、これはexpがnullでない場合expを、expがnullである場合otherExpを返します。

??=

obj ??= value

とすると、objがnullの時objにvalueを代入し、objがnullでない時は代入操作を行いません。

?.
?.はオブジェクトがnullでない時にメソッドやゲッターを呼び出したい時に使用します。

obj?.method()

とすると、objがnullの時はnullを、nullでない時はobj.method()を返します。

obj?.child1?.child2?.getter

とすると、obj,child1,child2のいずれもnullでない時にゲッターを返します。

?...

List lowerNumbers = [1, 2, 3, 4, 5];
List upperNumbers = [6, 7, 8, 9, 10];

この時、

[…lowerNumbers…upperNumbers]==[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

が成り立ちます。
この...をspread operatorといい、collectionリテラル(リストやマップなど)の中でspread operatorを使うとcollectionリテラルの中身を展開し、挿入します。
?...を使うと、対象がnullでないときにのみ挿入を行います。
つまり、

List lowerNumbers = [1, 2, 3, 4, 5];
List upperNumbers = [6, 7, 8, 9, 10];
List numbers = […lowerNumbers?…upperNumbers];

List numbers = [];
numbers.addAll(lowerNumbers);
if(upperNumbers != null){
 numbers.addAll(upperNumbers);
}

は等しいです。

if (database == null) {
                  database = openDatabase(
                    join(await getDatabasesPath(), 'track_data.db'),
                  );
                }

と書くよりも

database = openDatabase(join(await getDatabasesPath(), 'track_data.db'),);

と書く方がいいという話でした。

Android StudioでAlt+Enterが使えなくなったら(Flutter)

前の記事でFlutter updateを行ったのですが、先ほどQuick Fixesを開くショートカットであるAlt+Enterが使えなくなっていることに気がつきました。

 

解決策

File> Settings> Editor> Intentions にあるQuick assist powered by the Dart Analysis Serverにチェックが入っているか確認しましょう。

次にFileにあるInvalid Caches / restart をすれば解決するはずです。(restartのみで大丈夫)

FlutterのDart SDKをアップグレードするには

geolocatorをPub getしようとしたらDart SDKのバージョンが足りていないと言われました。

"Dart SDK upgrade"などと検索するとGet the Dart SDK | Dartが一番上に出てきて、"choko upgrade dart-sdk"を実行するといいと書かれてありますがその必要はありません。

何故ならDart SDKはFlutter SDKの中にあるからです(フォルダで言うとFlutterSDKのbin/cache/dart-sdk)にあります。

よってDart SDKではなくFlutter SDKのバージョンを更新してあげれば良く、ターミナルで”Flutter upgrade”を実行してあげればDart SDKのバージョンも更新されます。

それでも希望するバージョンにならない場合は"Flutter channel"でchannelを適切に変更してあげましょう。