Для выхода из собственной активности Android на Flutter требуется два нажатия назад

Мне удалось реализовать собственное Android Activity на Flutter. Код выглядит так:

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

class Communication extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return MyCommunication();
  }
}

class MyCommunication extends State<Communication> {
  static const platform = const MethodChannel("test_activity");
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
      body: FutureBuilder<Widget>(
          future: getNewActivity(),
          builder: (BuildContext context, AsyncSnapshot<Widget> snapshot) {
            if (snapshot.hasData)
              return snapshot.data;
            else
              return Container(child: CircularProgressIndicator());
          }),
    ));
  }

  Future<Widget> getNewActivity() async {
    try {
      return await platform.invokeMethod('startNewActivity');
    } on PlatformException catch (e) {
      print(e.message);
    }
  }
}

Проблема в том, что когда я нажимаю кнопку "Назад" из собственного действия, чтобы перейти на экран, который его представил, приложение отображает Контейнер с круговым индикатором выполнения, возвращаемым, когда snapshot.hasData имеет значение false.

Мне нужно снова нажать "Назад", чтобы закрыть этот экран и перейти к предполагаемому виду представления. Очевидно, я что-то делаю неправильно в коде. Как я мог это исправить?

1 ответ

Потому что, когда вы открываете startNewActivity, теперь в стеке 2 экрана, поэтому onBackPressed только верхняя часть удалена, последняя все еще там, вы должны использовать finish() в startNewActivity в Native конец, чтобы закрыть FlutterPage

Другие вопросы по тегам