flutter android 侧滑返回任务栏

flutter android 侧滑返回任务栏

方案贴废话就不多说了,上代码:

首先安装Intent插件,这个省去了在原生写插件的时间

dependencies:
  flutter:
    sdk: flutter
  
  android_intent_plus: ^4.0.3

侧滑退出改为返回任务栏,分两步:

  1. Home页禁止 物理返回按键或者是屏幕侧滑退出app;
  2. 创建一个新的flag“标记”将app的主屏幕放进去就行了。

只要实现了这两个目标就可以完美实现侧滑返回任务栏的功能。

禁用物理返回按键

flutter 3.0 以前的写法:

Scaffold(
  body: WillPopScope(
        onWillPop: () async {
        // 禁止返回上一页
        return Future.value(false);
        }
       child: ......
)

flutter 3.0 以后的写法:

Scaffold(
  body: PopScope(
        canPop: false,  
        onPopInvoked: (v) async {
            if(v){
             // 回上一页
           } else{
              ......退出或者是返回任务栏  
         }
       }
        child: ......
)

侧滑添加新的任务

先说一下Intent是做什么东东的:

Intent 是一种用于在不同组件之间传递信息的对象。它可以用于启动组件(如活动、服务或广播接收器)以及在组件之间传递数据。
我们这里通过安装好的AndroidIntentPlus插件来实现 Intent的通信功能。

if (GetPlatform.isAndroid) {
    AndroidIntent intent = const AndroidIntent(
     action: 'android.intent.action.MAIN',
     flags: [Flag.FLAG_ACTIVITY_NEW_TASK],
     category: "android.intent.category.HOME",
    );
    await intent.launch().catchError((e) {
           debugPrint(e);
    });
  }
  1. action: 'android.intent.action.MAIN',
    See https://developer.android.com/reference/android/content/Intent.html#intent-structure.
    指定了 intent 的操作(action),这里是启动主要(main)活动。
    如果怕不太确定怎么写,可以去 android/app/src/main AndroidManifest.xml中查看一下:
    <intent-filter>
         <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  1. flags: [Flag.FLAG_ACTIVITY_NEW_TASK],
    FLAG_ACTIVITY_NEW_TASK ,如果目标活动不在任务栈中,则创建一个新的任务栈,并将目标活动放置在新的任务栈顶部
  2. category: "android.intent.category.HOME",
    HOME 类别,表示这个 intent 用于启动设备的主屏幕(Home)
  3. intent.launch()
    执行,然后app就丝滑的返回桌面,加入到任务栏中喽。
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值