Closed7
Flutter 開発覚え書き
状態管理は Riverpod というライブラリを使うのがよさそう
0.14 以降で API に変更が生じているので、古い記事に注意する
ディレクトリ構造の参考
AppBar の back ボタンを無効にする
Column を画面中央に配置する
TextFormField 使用時、FutureBuilder が snapshot の変更を検知しない → UniqueKey を指定する
ElevatedButton の theme を設定する
return MaterialApp(
theme: ThemeData.dark().copyWith(
elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
onPrimary: Colors.white,
primary: Colors.grey[900],
),
),
),
);
WillPopScene
で back ボタンの処理を上書きして、back ボタン押下時にアラートを出す
OK
タップで前の画面に遷移する。Cancel
タップ時は何もしない
Widget build(BuildContext context) {
final scaffold = Scaffold(
...
);
return WillPopScope(
onWillPop: () async {
final result = await showDialog<int>(
context: context,
barrierDismissible: false,
builder: (BuildContext context) {
return AlertDialog(
content: const Text('Are you sure you want to go back?'),
actions: <Widget>[
FlatButton(
onPressed: () => Navigator.of(context).pop(0),
child: const Text('Cancel'),
),
FlatButton(
onPressed: () => Navigator.of(context).pop(1),
child: const Text('OK'),
),
],
);
},
);
return result == 1;
},
child: scaffold,
);
}
このスクラップは2021/11/25にクローズされました