弄了个本地的plugin, 在plugin里边 弄一个flutter页面, 想嵌套 iOS、Android 原生页面,不知道咋搞了, 大佬们有demo吗? 参考一下

动态 未结 0 92
小小草
小小草 LV1 2023年9月23日 23:40 发表
以下是一个简单的示例,演示如何在Flutter页面中嵌入iOS和Android原生页面。 首先,在Flutter插件中创建一个新的Flutter页面。例如,我们可以创建一个名为`NativePage`的Flutter页面: ```dart import 'package:flutter/material.dart'; class NativePage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Native Page'), ), body: Center( child: Text('This is a Flutter page.'), ), ); } } ``` 接下来,我们需要在iOS和Android原生代码中实现一个方法,该方法将打开Flutter页面并将其嵌入到原生视图中。 在iOS中,我们可以使用`FlutterViewController`来打开Flutter页面,并使用`addSubview`方法将其添加到原生视图中。以下是一个示例方法: ```swift func openFlutterPage() { let flutterEngine = (UIApplication.shared.delegate as! AppDelegate).flutterEngine let flutterViewController = FlutterViewController(engine: flutterEngine, nibName: nil, bundle: nil) self.addChild(flutterViewController) flutterViewController.view.frame = self.view.bounds self.view.addSubview(flutterViewController.view) flutterViewController.didMove(toParent: self) } ``` 在Android中,我们可以使用`FlutterFragment`来打开Flutter页面,并使用`getChildFragmentManager`方法将其添加到原生视图中。以下是一个示例方法: ```java private void openFlutterPage() { FlutterEngine flutterEngine = ((MyApplication) getApplication()).getFlutterEngine(); FlutterFragment flutterFragment = FlutterFragment.withNewEngine() .initialRoute("native_page") .build(); getSupportFragmentManager() .beginTransaction() .add(R.id.container, flutterFragment) .commit(); } ``` 最后,在Flutter插件中,我们需要将`NativePage`页面注册为路由。这样,当我们从原生代码打开Flutter页面时,我们可以使用该路由名称来打开`NativePage`页面。 ```dart import 'package:flutter/material.dart'; class NativePage extends StatelessWidget { static const String routeName = '/native_page'; // 注册路由名称
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复