Для выхода из собственной активности 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