1年間のKotlinを経て、今月からFlutter。
ドキュメント充実しててすごい。
「package:flutter/material.dart」をインポート。
showDialog()が用意されているので、それを使ってみる。
ベタ書きするならこんな感じ。
enum _DialogActionType {
cancel,
ok,
}
void showBasicDialog(BuildContext context) {
showDialog(
context: context,
builder: (BuildContext context) => new AlertDialog(
title: new Text("タイトル"),
content: new Text("本文"),
// ボタンの配置
actions: <Widget>[
new FlatButton(
child: const Text('キャンセル'),
onPressed: () {
Navigator.pop(context, _DialogActionType.cancel);
}),
new FlatButton(
child: const Text('OK'),
onPressed: () {
Navigator.pop(context, _DialogActionType.ok);
})
],
),
).then<void>((value) {
// ボタンタップ時の処理
switch (value) {
case _DialogActionType.cancel:
print("cancel...");
break;
case _DialogActionType.ok:
print("OK!!");
break;
default:
print("default");
}
});
}
ここだけ関数にしとくとか、
Future showMyDialog(BuildContext context, Widget dialog) {
return showDialog(context: context, builder: (BuildContext context) => dialog);
}
キャンセル処理が要らない場合の共通ボタン作っとくとか、
FlatButton cancelDialogButton(BuildContext context) {
return new FlatButton(
child: const Text('キャンセル'),
onPressed: () {
Navigator.pop(context);
});
}
各newは無しでオッケー。
iOSっぽい見た目にするのは、
・「package:flutter/cupertino.dart」をインポート
・「AlertDialog」を「CupertinoAlertDialog」に変更
・「FlatButton」を「CupertinoDialogAction」に変更
で、いけた。
いい感じにあれしたいところ。
他のパターンのダイアログは追々。

