🫠

今日の学び

2023/11/16に公開

今日学んだことをメモします。

名前付き引数と(位置)引数

名前付き引数:その名の通り名前をつけて関数に渡す引数。

void greet({String name, int age}) {
    print("Hello, $name! Age: $age");
}
greet(name: 'Alice', age: 25); // 名前で引数を指定

(位置)引数:名前がついていない引数。指定した順番通りに渡していくらしい。

void add(int first, int second) {
    print(first + second);
}
add(3, 5); // first = 3, second = 5

使い分け方

*名前付き引数
*単純に引数が多いとき
*同じ型の引数が多いとき
に使うといいっぽい。
こっちのほうが読みやすいし好み。

*引数
*引数の順番が前後してもいいとき?
*引数が1つのとき?
くらいしか積極的に使う例が思いつかなかった。
例のたし算とかは3+5でも5+3でもまぁいい気はするけど、複数引数がある場合は名前付き引数を選びたい。

AsyncNotifier,StreamNotifierについて

AsyncNotifier:非同期のデータを提供する。初期化するとき非同期処理。Futureを返す処理の結果などを管理するのに適しているらしい。

StreamNotifier:非同期のデータを提供する。初期化するときストリーム。リアルタイムでのデータの変更を監視するために使用。

…ここらへん怪しそう。

TextFieldControllerのdispose

disposeしないとウィジェットが消えたあともずっと残ってなんかめちゃくちゃメモリ食っちゃうらしい。

viewModelのファイルで

 ref.onDispose(() {
      state.textFieldController.dispose();
    });

的な感じでdispose。
すると画面遷移でちゃんとdisposeされる。

めちゃくちゃ余談だけど、TextField関係で知らなかったことがあったので一緒にメモ。

onChangedはユーザーの値変更しか受け付けないけど、textFieldControllerだったらコードで値を変更できるっぽい。(一括削除など)

https://minpro.net/handle-changes-to-a-text-field

いざ書くってなると難しい。

Discussion