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作った人の記事も載せておく
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を適切に変更してあげましょう。