首页 > 解决方案 > Flutter 中的设备后退按钮覆盖

问题描述

我想覆盖设备后退按钮,我试过了,willowpopscope()但是在顶部应用程序上添加了后退按钮,或者我们可以称之为 Appbar。

但我不想使用顶部后退按钮我想覆盖设备(移动系统)后退按钮。例如,当按下设备后退按钮时,我想转到特定页面/活动。我怎样才能做到这一点?

注意:willowpopscope仅在应用栏中添加后退按钮,不执行与设备后退按钮相关的任何操作。

标签: flutterdart

解决方案


使用前几天刚刚发布的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 完成!!


推荐阅读