AngularユーザーがFlutterを覚える際、Angularでいうところの〇〇。みたいな思考でスピードラーニングできる箇所があるので詰まりどころと合わせて勘所を随時更新していきます。TSとDartの連想がメインになりそうです。
随時更新していきます。間違った理解があればご指摘いただければと思います。
Interfaceはない
形はすべてClassとして定義。
anyはdynamic
any同様基本使うべきでないという認識
JSON(オブジェクト)をそのまま扱うことはできない
TSの場合Firestoreからの値はオブジェクトとして使えるが、Dartの場合一度Classにマッピング(デシリアライズ?)する必要がある。
デシリアライズは自動化パッケージがたくさんあるが、Fireshipでは手動が信頼性高いとのこと。僕もパッケージを使いましたがうまくいかないシーンがあったので手動を採用しています。エディタの複数カーソルを利用して効率的に行いましょう。
Nullチェックがめんどい
こういう書き方はできない。
if (users?.length) {
print('$users.length人います');
}
if (users && users.length) {
print('$users.length人います');
}
こうやって書いたら通る(もっといいやり方ありそう・・)
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の外から使えない)