这是我的代码。我使用 SystemNavigator.pop 但它说undefined name SystemNavigator
我想要的只是使用 OnTap 退出应用程序
class AppDrawer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Drawer(
child: ListView(
padding: EdgeInsets.zero,
children: <Widget>[
_createHeader(),
_createDrawerItem(
icon: Icons.home,
text: 'Home',
onTap: () => Navigator.of(context).pop()),
Divider(),
_createDrawerItem
(icon: Icons.exit_to_app, text: 'Exit app',
onTap: () => SystemNavigator.pop),
),
],
),
);
}
Run Code Online (Sandbox Code Playgroud)
SystemNavigator.pop在这种情况下添加的正确方法是什么?如果您知道任何添加方法,请帮助我SystemNavigator.pop
Fut*_*eJJ 11
您可能缺少包含 SystemNavigator 的导入,因此添加:
import 'package:flutter/services.dart';
Run Code Online (Sandbox Code Playgroud)
你缺少一个括号,所以,正确的SystemNavigator.pop要
SystemNavigator.pop()
或者,您可以使用SystemChannels:
SystemChannels.platform.invokeMethod<void>('SystemNavigator.pop');
Run Code Online (Sandbox Code Playgroud)
而不是SystemNavigator.pop()里面onTap。在此处参考颤振文档:链接
上面链接中的 Flutter 文档说:
指示系统导航器从堆栈中删除此活动并返回到前一个活动。
在 iOS 上,对此方法的调用将被忽略,因为 Apple 的人机界面指南规定应用程序不应自行退出。
这种方法应该优先于调用 dart:io 的 exit 方法,因为后者可能会导致底层平台表现得好像应用程序崩溃了一样。
exit(0)如果您计划在 Apple 应用商店中启动该应用,请不要使用,因为 Apple 人机界面指南强烈建议您以编程方式退出该应用。请参阅此 iOS 文档存档。
上面的链接说:
不要调用退出函数。调用 exit 的应用程序将在用户看来已崩溃,而不是执行正常终止并动画返回主屏幕。
关于 exit() 的Flutter 文档说:
使用给定的退出代码立即退出 Dart VM 进程。
这不会等待任何异步操作终止。因此使用 exit 很可能会丢失数据。
| 归档时间: |
|
| 查看次数: |
4818 次 |
| 最近记录: |