颤振力释放前景

时间:2019-01-11 08:49:27

标签: android ios dart flutter

如何在Flutter(Dart)中释放对先前应用程序的前景?我的意思是,如何强制调用onPauseviewWillDisappear以使我的应用消失,并使之前的应用回到前台。

有没有可以调用的方法?

编辑:我不想关闭我的应用,只是“最小化”它。

2 个答案:

答案 0 :(得分:1)

您正在为Flutter的架构与Android的架构不匹配而苦苦挣扎。在your previous question中,您需要一种将Flutter应用程序置于前台的方法,答案是全屏意图通知。问题在于,在本机Android中,您可能已经使用NEW_TASK标志来启动新任务。由于Flutter只有一项活动,因此有必要改为使用USE_CURRENT

使用NEW_TASK,您将使用Activity.finish()关闭它,仅关闭新活动。如果您使用Flutter这样做,则可能会关闭整个应用程序(因为使用了USE_CURRENT)。

可能有一个本地Android应用程序(允许您直接控制活动的启动),并可以使用Add2App添加Flutter屏幕。如果您能正常使用,我想知道。

答案 1 :(得分:1)

我终于找到了解决方案!我还没有找到IOS方面的解决方案:我正在努力。

我使用MethodChannel向本机方面要求最小化。对于Android,请使用 this.moveTaskToBack(true); !如果您有Objectif-C替代产品,那将是完美的!

飞镖:

class _MyHomePageState extends State<MyHomePage> {
 static const MethodChannel actionChannel = MethodChannel('method.channel');

  Future<void> _minimize() async{
   try{
     await actionChannel.invokeMethod('minimize');
   } on PlatformException catch(e) {
     print('${e.message}');
   }
 }
}

Android:

public class MainActivity extends FlutterActivity {

 private static final String ACTION_CHANNEL = "method.channel";

 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  // Action-post-alert method
    new MethodChannel(getFlutterView(), ACTION_CHANNEL).setMethodCallHandler(
            new MethodCallHandler() {
                @Override
                public void onMethodCall(MethodCall call, Result result) {
                    if (call.method.equals("minimize")) {
                        this.moveTaskToBack(true);
                        result.success(true);
                    } else {
                        result.notImplemented();
                    }
                }
            }
    );
 }
}