颤振:如何在按下后退按钮时不退出应用程序

Posted

技术标签:

【中文标题】颤振:如何在按下后退按钮时不退出应用程序【英文标题】:flutter: How to not exit the app on back button press 【发布时间】:2019-10-29 14:12:59 【问题描述】:

应用程序的通常行为是在按下后退按钮时退出。我想要的是当按下后退按钮时,应用程序无需退出即可进入后台。就像我们从一个应用切换到另一个应用时发生的情况一样。

我知道这将涉及使用WillPopScope(),但如何处理onBackPressed 事件以将应用程序保持在后台,而不是退出。

【问题讨论】:

我认为这是基于 android 设置.. 我不确定你可以强制这种行为,因为用户可以强制退出或不退出 android 设置.. 【参考方案1】:

试试下面的代码就行了:

代码:

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() => runApp((MainScreen()));

class MainScreen extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: MyApp(),
    );
  


class MyApp extends StatefulWidget 
  MyApp(Key key) : super(key: key);

  _MyAppState createState() => _MyAppState();


class _MyAppState extends State<MyApp> 
  @override
  Widget build(BuildContext context) 
    return WillPopScope(
      onWillPop: () => SystemChannels.platform.invokeMethod(
          'SystemNavigator.pop'), // this is use to keep the app in background
      child: Scaffold(
        body: Center(
          child: Text("Text"),
        ),
      ),
    );
  

【讨论】:

【参考方案2】:

虽然现在回答已经很晚了,但我希望它可以帮助别人和我自己。

我认为有一个插件可以在这种情况下提供帮助。

https://pub.dev/packages/move_to_background

它易于使用,并且具有相当高的评价。

【讨论】:

以上是关于颤振:如何在按下后退按钮时不退出应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在颤振中,按下后退按钮时如何返回上一个 URL?

Razor 页面搜索表单在按下后退按钮时不保留旧值

如何在按下单个片段的手动后退按钮时返回上一个片段?

按下后退按钮时如何退出?

如何在颤振中使用嵌套的 WillPopScope

使用后退按钮颤振测试 WillPopScope