如何在Flutter中覆盖“返回”按钮?

13 浏览
0 Comments

如何在Flutter中覆盖“返回”按钮?

在我的主页小部件上,当用户点击系统返回按钮时,我想显示一个确认对话框,询问“您是否要退出应用程序?”\n我不明白我应该如何覆盖或处理系统返回按钮。

0
0 Comments

在Flutter中如何重写“返回”按钮?

在Flutter中,可以使用WillPopScope来实现此功能。具体示例代码如下:

import 'dart:async';

import 'package:flutter/material.dart';

class HomePage extends StatefulWidget {

HomePage({Key key, this.title}) :super(key: key);

final String title;

State createState() => new _HomePageState();

}

class _HomePageState extends State {

Future _onWillPop() async {

return (await showDialog(

context: context,

builder: (context) => new AlertDialog(

title: new Text('Are you sure?'),

content: new Text('Do you want to exit an App'),

actions: [

TextButton(

onPressed: () => Navigator.of(context).pop(false),

child: new Text('No'),

),

TextButton(

onPressed: () => Navigator.of(context).pop(true),

child: new Text('Yes'),

),

],

),

)) ?? false;

}

Widget build(BuildContext context) {

return new WillPopScope(

onWillPop: _onWillPop,

child: new Scaffold(

appBar: new AppBar(

title: new Text("Home Page"),

),

body: new Center(

child: new Text("Home Page"),

),

),

);

}

}

在上述代码中,通过使用WillPopScope包裹Scaffold组件,可以重写返回按钮的行为。在onWillPop回调函数中,可以定义自定义的对话框,询问用户是否确认退出应用。当用户点击对话框中的按钮时,根据返回的值来决定是否退出。

此外,还可以通过修改leading属性来改变返回按钮的图标。leading属性接受一个IconButton或其他小部件,可以自定义返回按钮的样式。

需要注意的是,在使用??运算符时,需要检查是否为null。因为如果点击对话框外部,showDialog会返回null,此时应返回false。

以上就是如何在Flutter中重写“返回”按钮的方法。希望对你有帮助!

0