【发布时间】:2020-09-24 19:53:58
【问题描述】:
我已经设法在 Flutter 上实现了原生 Android Activity。代码如下所示:
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 时返回一个圆形进度指示器。
我必须再次点击返回以关闭此屏幕并进入预期的演示视图。显然,我在代码中做的不对。我该如何解决这个问题?
【问题讨论】:
-
连接状态有变化吗? connectionState → ConnectionState
-
connectionState 始终处于“等待”状态
-
好的,您尝试以下答案了吗?
-
是的,尝试覆盖 onBackPressed() 并在内部调用 finish() 但容器视图仍然出现在堆栈上:(
标签: android flutter dart native flutter-method-channel