[AsKai] Flutterは、アプリのポップアッププロンプトを終了するユーザーをキャプチャします

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

}

参照元のテキスト:

ポータル

おすすめ

転載: blog.csdn.net/qq_42362997/article/details/111471592