flutterの勉強

get
abstract class DashboardApi {
CategoryApi get categories;
EntryApi get entries;
}
こんな感じでget
が出てきた。
どうやらこれはgetterを意味している見たい。
公式ドキュメントはこちら。

アロー演算子
double get right => left + width;
という実装に遭遇した。

assert
assert(hoge == 3);
的な使い方が出来る。

Future
非同期処理をするための型

クラスのコンストラクタの書き方がちょっと特殊。
Named constructorsという実装の仕方があるみたい。
{クラス名}.fromJson()
みたいな書き方ができるらしい。
pythonでいうところの@classmethod的なやつか

状態管理にStateクラスといいうものが使用される

Dartのmixinは多重継承みたいなことをしたい時に便利らしい。
Dartの言語しようとして多重継承は許されておらず、Flutterを使う時とかに便利になるシチュエーションがあるみたい。

throwとかExceptionとかの処理について説明されているドキュメント。
めっちゃ勉強になる。https://dart.dev/language/error-handling#exceptions

メソッド名や変数名が_で始まった場合はprivateなものとみなされるらしい

dartのスタイルガイドを見つけた

キーワード一覧が用意されてている。

flutterのテスト実行

アプリ起動
vscodeの右下で使用するデバイスを設定して
main.dartを開き、F5で実行する。
コマンドラインから
以下のコマンドでchromeで起動することができる。
flutter run --device-id chrome

マテリアルデザインってなんだ?

Widgetのchildがよくわからない。
childで指定する時とchildrenで指定する時にどんな違いがあるのかがわからない。

縦方向に並べたい時はColumn,横方向に並べたい時はRow
わかりやすい

UIの勉強をする必要がありそう。
ボタンにはどんな種類のものがあるのかとか。

finalとconstの違い
final
は実行時に値が代入され、それ以降変更ができない。
const
はコンパイル時に値が代入され、それ以降変更ができない。

状態を更新したい時はsetState関数を呼ぶようにする。
デモアプリの場合は以下のような実装になっている。
void _incrementCounter() {
setState(() {
_counter++;
});
}
実装するWIdget側でStateを継承する必要がある。
class _MyHomePageState extends State<MyHomePage>

contextの中にはページ移動の遷移情報とかが含まれてくるイメージか?

Navigator.of(context).pop();
この1行で前のページに戻ることができる👀

firebaseが便利らしい。
FireStoreを使うと複数のデバイスの状態を管理できるっぽい。

firebaseのパッケージ周りでエラーが出たのでこの記事を参考に修正。

-
ChangeNotifier
ってどんなクラスなんだろう?

アプリ内の状態管理はChangeNotifierクラスなど様々な機能が提供されている。

dartの<>
ってどんな意味があるんだろう?

CenterっていうクラスもWidgetの一つとして考えるのか。レイアウトの要素もWidgetの一つって感じだな。

StatefullWidget
とState
の実装が分離されているのは2つのオブジェクトのライフサイクルが別れているから。
widgetは一時的なオブジェクトで、Stateは永続的なオブジェクト。

State関連についてキャアッチアップが甘いかもしれない。

flutterのパッケージ管理周りはどうなってるんだ?

flutterのロードマップを誰かが作ってくれているぞ

なんの勉強をすればいいのかわからなくなってきた。
まずは感覚が掴めるまで色々触ってみてある程度わかるようになるまで続けてみるか。

状態管理の方法はStatefulWidget以外にもたくさんある?
-> ありそう。

Stateクラスは自身のメンバー変数が更新されたタイミングで再ビルド(buildメソッドを呼ぶ)を実行する仕様になっている。
setState
メソッド経由で変数を更新しないと再描画はされない点に注意。

更新対象のWidgetツリー以下の部分が再ビルドの対象になる。
適切にWidgetを切り分けておかないと更新の負荷が大きくなってしまうので注意が必要。

webview_flutterのライブラリを使ってweb-view機能を実装しようとしたらエラーが出て解消することができなかった。

このチャットアプリは少し複雑だけど参考になるかもしれない。

flutterのsamplesを読めるくらいにはなってきたっぽいからsamplesのコードを動かしながら、写経して勉強していこう。