Flutterは、アプリのポップアッププロンプトを終了するユーザーをキャプチャします
WillPopScopeコンポーネントを使用して、子コンポーネントのナビゲーションポップイベントを検出し、それをインターセプトします。ページが実際にポップされているかどうかを処理するために、onWillPopプロパティで新しいコンポーネント(通常はダイアログ)を返す必要があります。
import 'dart:async';
import 'package:flutter/material.dart';
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
Future<bool> _onBackPressed() {
return showDialog(
context: context,
builder: (context) =>
AlertDialog(
title: Text('确定退出程序吗?'),
actions: <Widget>[
FlatButton(
child: Text('暂不'),
onPressed: () => Navigator.pop(context, false),
),
FlatButton(
child: Text('确定'),
onPressed: () => Navigator.pop(context, true),
),
],
));
}
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: _onBackPressed,
child: Scaffold(
appBar: AppBar(
title: Text('title'),
),
body: Center(
child: Text('exit'),
),
),
);
}
}
ここには別の状況があります。いくつかのフォームに入力するときに、入力を完了しない場合は直接終了します。このとき、ポップアップウィンドウを使用して、必ず終了するかどうかを警告する必要もあります。 。この場合、フォームウィジェットはこの属性を直接提供します。使用方法は上記と同じです。
new Form(
onWillPop: _onBackPressed,
key: _formKey,
autovalidate: true,
child:XXXX
}
参照元のテキスト: