在此,我正在创建一个应用程序,其中我通过使用这些链接 https://flutter.dev/docs/development/add-to-app 成功在现有 Android 应用程序中添加了 flutter 模块。 , https://flutter.dev/docs/development/add-to-app/android/add-flutter-screen 。这里的启动屏幕是原生 Android,然后我添加了一个按钮来导航到 flutter 屏幕。但我的问题是如何从 flutter 屏幕导航到 native Android 屏幕。这是原生 android 和 dart 代码的代码。 注意:我已经在build.gradle中添加了flutter模块依赖项,并且还在settings.gradle中添加了代码,所以我不会提及代码。
MainActivity.java
Button btn1;
btn1=findViewById(R.id.button1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(FlutterActivity.createDefaultIntent(v.getContext())); //this navigate to flutter page
}
});
Main.dart
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Demo'),),
body: Container(
child: Center(
child: RaisedButton(
onPressed: (){
//Here how do i navigate to Native Android Screen ?
},
child: Text('Navigate to Android'),
),
),
),
);
}
}
最佳答案
在 Dart 代码中,您应该通过 Platform Channel 调用一个方法,以调用 native 函数从托管 Flutter 页面的 Activity/ View Controller 进行导航,您不能直接从 Dart 代码导航到 native vipageew。
// .dart file
void _exitFlutter() {
PlatformChannel.invokeMethod('navToNative');
}
// .kt or .java file
MethodChannel(flutterEngine!!.getDartExecutor().getBinaryMessenger(), CHANNEL)
.setMethodCallHandler { call, result ->
run {
when (call.method) {
"navToNative" -> // start your activity here
else -> result.notImplemented()
}
}
}
您可以在此处查看详细信息https://github.com/duytq94/demo-integrate-flutter
关于android - 如何从 Flutter 页面导航到原生 Android 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61889649/