AngularからFlutterに入る時の勘所(随時更新)


AngularユーザーがFlutterを覚える際、Angularでいうところの〇〇。みたいな思考でスピードラーニングできる箇所があるので詰まりどころと合わせて勘所を随時更新していきます。TSとDartの連想がメインになりそうです。

随時更新していきます。間違った理解があればご指摘いただければと思います。

Interfaceはない

形はすべてClassとして定義。

anyはdynamic

any同様基本使うべきでないという認識

JSON(オブジェクト)をそのまま扱うことはできない

TSの場合Firestoreからの値はオブジェクトとして使えるが、Dartの場合一度Classにマッピング(デシリアライズ?)する必要がある。
デシリアライズは自動化パッケージがたくさんあるが、Fireshipでは手動が信頼性高いとのこと。僕もパッケージを使いましたがうまくいかないシーンがあったので手動を採用しています。エディタの複数カーソルを利用して効率的に行いましょう。

Nullチェックがめんどい

こういう書き方はできない。

Bad.dart
if (users?.length) {
  print('$users.length人います');
}

if (users && users.length) {
  print('$users.length人います');
}

こうやって書いたら通る(もっといいやり方ありそう・・)

Good.dart
if (users != null && users.length) {
  print('${users.length}人います');
}

型の位置

型は変数や関数の前にくる

TSの場合

cosnt demo = (index: number): number => {
  return number;
};

Dartの場合

Number demo(int index) {
  return number;
}

letとかない

Dartの変数定義時の修飾static/final/const、そしてconst constructorについて

final と constの違い

両方定数。オブジェクトの値を書き換えられるか否かの違い

final demo = [1, 2, 3];
demo[0] = 4; // OK

const memo = [1, 2, 3];
memo[0] = 4; // NG

private / public

頭に_をつけるとprivate的に振舞う(Classの外から使えない)