【问题标题】:When I Click on Device Back Button app is closed当我单击设备后退按钮应用程序已关闭
【发布时间】:2019-12-17 04:10:12
【问题描述】:

当我单击应用栏后退按钮时,它会转到上一页。但是当点击设备后退按钮应用程序关闭时。请告诉我会发生什么。

@override
  Widget build(BuildContext context) {
    return ScopedModelDescendant(
      builder: (BuildContext context, Widget child, MainModel model) {
        return WillPopScope(
          onWillPop: ()async{
            return true;
          },
          child: Scaffold(
          appBar: AppBar(
            title: Text('Add User Info'),
          ),
          body: Container(
            padding: EdgeInsets.all(10.0),
            child: _buildOrderForm(model),
          ),
        ),
        );
      },
    );
  }

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    小部件WillPopScope的方法必须以root身份使用

      @override
      Widget build(BuildContext context) {
        return new WillPopScope(
          onWillPop: _onBackPressed,
          child: new Scaffold(
            appBar: new AppBar(
              title: new Text(
                "On Back pressed",
                style: new TextStyle(color: Colors.white),
              ),
            ),
            body: new Center(
              child: new Text("Home Page"),
            ),
          ),
        );
      }
    

    在上面的sn-p中,我们写了一个_onBackPressed方法。当您从移动硬件按钮回按时,它会调用。

    【讨论】:

      【解决方案2】:

      您已经在使用WillPopScope,这很好!但是我看到你没有正确实施的一件事,那就是:

      onWillPop: ()async{
          return true;
      },
      

      您需要返回 Futurefalse 以禁用被弹出的路由。在此处查看更多信息:

      https://api.flutter.dev/flutter/widgets/WillPopScope/onWillPop.html

      如果回调返回一个解析为 false 的 Future,则封闭 路线不会被弹出。

      这应该可行:

      onWillPop: () => Future<bool>.value(false),
      

      【讨论】:

      • 你能再试一次吗?我添加了一些其他示例Future&lt;bool&gt;.value(false)
      • 当我点击设备后退按钮时,应用程序已关闭并在终端中显示以下消息
      • D/ZrHung.AppEyeUiProbe(27886):停止检查器。 W/libEGL (27886):EGLNativeWindowType 0x78a0dfb010 断开连接失败 I/SurfaceView(27886):延迟破坏表面控制 W/libEGL (27886):EGLNativeWindowType 0x78a0d92010 断开连接失败 I/SurfaceView(27886):需要破坏表面控制 D/ViewRootImpl [MainActivity] (27886):不应释放表面
      • D/ActivityThread(27886):删除活动客户端记录,r= ActivityRecord{80c81d4 token=android.os.BinderProxy@c43b041 {com.restos.myrestos/com.restos.myrestos.MainActivity}} token= android.os.BinderProxy@c43b041 D/ZrHung.AppEyeUiProbe(27886): Current Activity:false D/ZrHung.AppEyeUiProbe(27886): 没看,等一下。 E/ (27886): [ZeroHung]zrhung_get_config: wp[0x0008] 获取配置失败
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-23
      相关资源
      最近更新 更多