ar.falsy.cat/content/note/info-tech/flutter.md
2023-06-29 08:28:18 +09:00

1.6 KiB
Raw Blame History

title tags
flutter
note
info-tech
development
library

概要

  • flutterはマルチプラットフォーム GUIアプリケーション フレームワーク
    • iOS/AndroidWebWindows/Linux/Mac組み込み
  • Google製
  • 使用言語はDart

環境構築

  • dart + flutterをインストール
  • VSCodeにflutter用の拡張機能を追加

豆知識

ウィジェットツリー

  • main関数からrunAppにウィジェットツリーを渡すことでメインループが始まる
  • ウィジェットはStatelessなものとStatefullなものに大別できる
  • Statefullなウィジェットが更新setState)されると,そのウィジェットとその子孫のツリーが全て再構成(build)される
    • パフォーマンス悪そうに見えるけれど,ウィジェットツリーの変更部分のみをシステム内部のエレメントツリーに反映することで画面更新を行なっているので,最適化はされている
    • HTMLレンダラみたいな感じ

画面遷移

  • Navigatorが現在の画面の状態スタックを持つ
    • pushで画面遷移
      • コルーチンのawaitで遷移先がpopされた時の値を受け取れる
    • popで前の画面に戻る
      • ユーザーからの戻るボタン押下でも勝手にpopされ得る
      • 呼び出し元へ返す値を引数に設定できる
// push (遷移後の画面がpopされるまでyield)
final ret = await Navigator.of(context).push(
  MaterialPageRoute(
    builder: (context) => Widget(),
  ),
);

// pop
Navigator.of(context).pop("hello");