flutter - Flutter 中的设备后退按钮覆盖
问题描述
我想覆盖设备后退按钮,我试过了,willowpopscope()
但是在顶部应用程序上添加了后退按钮,或者我们可以称之为 Appbar。
但我不想使用顶部后退按钮我想覆盖设备(移动系统)后退按钮。例如,当按下设备后退按钮时,我想转到特定页面/活动。我怎样才能做到这一点?
注意:willowpopscope
仅在应用栏中添加后退按钮,不执行与设备后退按钮相关的任何操作。
解决方案
使用前几天刚刚发布的back_button_interceptor 。它有助于覆盖设备后退按钮
使用 back_button_interceptor 的语法是
@override
void initState() {
super.initState();
BackButtonInterceptor.add(myInterceptor);
}
@override
void dispose() {
BackButtonInterceptor.remove(myInterceptor);
super.dispose();
}
bool myInterceptor(bool stopDefaultButtonEvent) {
print("BACK BUTTON!"); // Do some stuff.
return true;
}
这是您可以覆盖实际设备后退按钮的方式
现在看例子
import 'package:back_button_interceptor/back_button_interceptor.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class MyWidget extends StatefulWidget {
@override
ListTab createState() => ListTab();
}
class ListTab extends State<MyWidget> {
void initState() {
super.initState();
BackButtonInterceptor.add(myInterceptor);
}
@override
void dispose() {
BackButtonInterceptor.remove(myInterceptor);
super.dispose();
}
bool myInterceptor(bool stopDefaultButtonEvent) {
Navigator.push(context,
MaterialPageRoute(builder: (context)=>App())
);
return true;
}
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
child: new Text(
"USER_PAGE",
),
),
])));
}
}
:D 完成!!
推荐阅读
- google-chrome - Does Google Chrome v77 have a HTML5-Canvas bug?
- node.js - 重新配置的网格不适用于 ExtJS 4.2
- reactjs - Why is shouldComponentUpdate not firing despite my props changing?
- encryption - 多对多消息加密选项
- html - pure-u-1-7 与 sm、md、lg、xl 结合使用时不起作用
- android - 从 Reddit API 获取媒体的应用的内容分级
- r - 错误:函数不适用于包 X 的 .Call()
- apache-spark - 在dataframe中修改后,将创建多少个阶段和任务
- c# - DateTime 格式 - 任何系统 Datetime.now 到 "DD/MM/YYYY hh:mm:ss"
- eclipse-hono - 如何使用客户端证书对 Hono 进行身份验证?