Flutter中onbackpressed的等效方法是啥
Posted
技术标签:
【中文标题】Flutter中onbackpressed的等效方法是啥【英文标题】:what is the equivalent method of onbackpressed in flutterFlutter中onbackpressed的等效方法是什么 【发布时间】:2019-06-15 22:08:49 【问题描述】:我希望在 Flutter 应用程序中使用与 android 相同的 onBackPressed
逻辑,并且我想在单击手机返回按钮时关闭应用程序。
当我们点击手机返回而不是应用返回按钮时,谁能告诉我如何做到这一点。
机器人:
@Override
public void onBackPressed()
// code here to show dialog
super.onBackPressed(); // optional depending on your needs
【问题讨论】:
catch Android back button event on Flutter的可能重复 参考这篇文章:***.com/questions/49356664/… @Ishant 我认为 WillPopScope 适用于应用程序后退按钮 ,,,,不是手机后退按钮吗? @kartheekij WillPopScope 适用于两者 【参考方案1】:您可以为此使用WillPopScope。
当封闭的ModalRoute
(内部与Navigator
一起使用)即将弹出时,它会通知您。它甚至让您可以选择是否要发生流行音乐。
只需将第二个屏幕的Scaffold
包裹在WillPopScope
中。
return WillPopScope(
onWillPop: () async
// You can do some work here.
// Returning true allows the pop to happen, returning false prevents it.
return true;
,
child: ... // Your Scaffold goes here.
);
【讨论】:
这个解决方案的缺点是ios上的后退手势不再起作用。 在 Android 设备中使用 WillPopScope 出现黑屏尝试了所有带有导航器的解决方案【参考方案2】:希望这会有所帮助...
Future<bool> _onBackPressed() async
// Your back press code here...
CommonUtils.showToast(context, "Back presses");
WillPopScope 创建一个小部件,该小部件注册一个回调,以拒绝用户尝试关闭封闭的 ModalRoute。
@override
Widget build(BuildContext context)
return new WillPopScope(
onWillPop: _onBackPressed,
child: ...child
);
【讨论】:
请解释为什么这个解决方案有效。 ***.com/help/how-to-answer【参考方案3】:您可以使用Navigator.pop(context);
或Navigator.maybePop(context);
;
而maybePop
可以被WillPopScope#onWillPop
收听;
【讨论】:
以上是关于Flutter中onbackpressed的等效方法是啥的主要内容,如果未能解决你的问题,请参考以下文章
何时在 Flutter 中持久化数据(等效于 onPause)
Flutter WebChromeClient 等效,使用 openFileChooser 和 onShowFileChooser
是否有与 Bootstrap Scrollspy 等效的 Flutter?