mirror of
https://github.com/falsycat/ar.falsy.cat.git
synced 2024-10-30 01:14:52 +00:00
41 lines
1.6 KiB
Markdown
41 lines
1.6 KiB
Markdown
---
|
||
title: flutter
|
||
tags: [note, info-tech, development, library]
|
||
---
|
||
|
||
## 概要
|
||
- flutterはマルチプラットフォーム GUIアプリケーション フレームワーク
|
||
- iOS/Android,Web,Windows/Linux/Mac,組み込み
|
||
- Google製
|
||
- 使用言語は[Dart](note/info-tech/dart.md)
|
||
|
||
## 環境構築
|
||
- dart + flutterをインストール
|
||
- VSCodeにflutter用の拡張機能を追加
|
||
|
||
## 豆知識
|
||
### ウィジェットツリー
|
||
- `main`関数から`runApp`にウィジェットツリーを渡すことでメインループが始まる
|
||
- ウィジェットはStatelessなものとStatefullなものに大別できる
|
||
- Statefullなウィジェットが更新(`setState`)されると,そのウィジェットとその子孫のツリーが全て再構成(`build`)される
|
||
- パフォーマンス悪そうに見えるけれど,ウィジェットツリーの変更部分のみをシステム内部のエレメントツリーに反映することで画面更新を行なっているので,最適化はされている
|
||
- HTMLレンダラみたいな感じ
|
||
|
||
### 画面遷移
|
||
- Navigatorが現在の画面の状態スタックを持つ
|
||
- pushで画面遷移
|
||
- コルーチンのawaitで,遷移先がpopされた時の値を受け取れる
|
||
- popで前の画面に戻る
|
||
- ユーザーからの戻るボタン押下でも勝手にpopされ得る
|
||
- 呼び出し元へ返す値を引数に設定できる
|
||
```dart
|
||
// push (遷移後の画面がpopされるまでyield)
|
||
final ret = await Navigator.of(context).push(
|
||
MaterialPageRoute(
|
||
builder: (context) => Widget(),
|
||
),
|
||
);
|
||
|
||
// pop
|
||
Navigator.of(context).pop("hello");
|
||
``` |