flutter 混合页面(flutter混合栈)

网友投稿 1924 2022-12-25

本篇文章给大家谈谈flutter 混合页面,以及flutter混合栈对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享flutter 混合页面的知识,其中也会对flutter混合栈进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

Flutter(六)Android与Flutter混合开发(Hybird)

如果我们目前的项目是Android的,但是接下来我们希望部分页面可以使用Flutter进行开发,甚至我们希望在Native页面中嵌入FlutterUI组件,那么我们该如何实现呢?

假设你现在Android项目的目录的结构是这样的

这时候如果你想创建一个Flutter模块,使得Android模块和Flutter模块之间可以进行交互,我们可以通过Android Studio新建一个Flutter Module,具体过程是:File — New — New Module ,之后选择Flutter Module,指定Project Location的路径为

也就是说,最终你的项目结构会是这样的

接下来在Android Module的 build.gradle 文件中添加flutter依赖

先创建一个Flutter页面

这里比较重要的是 window.defaultRouteName 这个字段,这个字段可以接收从Native传递过来的参数 (下文我们会介绍原生传递参数的方法),也就是说通过这个字段我们就可以进行Flutter页面的路由的分发

我们可以直接在Android的 MainActivity 中启动一个 FlutterActivity ,这里的 initialRoute 方法中传递的参数就对应Flutter层的 window.defaultRouteName

注意:需要在 AndroidManifest.xml 注册 FlutterActivity

自己创建一个 FlutterAppActivity 继承自 FlutterActivity

在 MainActivity 中启动 FlutterAppActivity (另外别忘了在 AndroidManifest.xml 中注册 FlutterAppActivity )

两种启动方式的区别

如果单纯只是想打开一个Flutter页面,两种方式实际上基本没有太大区别,第一种方式也许还会更简单一点。但是,在Flutter开发中,我们往往还需要开发一些Native插件供Flutter调用,如果使用复写 FlutterActivity 的方式更有利于我们在 FlutterActivity 中注册我们的Native插件,所以实际开发中一般推荐使用第二种方式

扩展思考

initialRoute 从名称上看起来是Flutter提供给我们进行Native与Flutter交互的路由跳转的,但是实际上他就是一个字符串,我们不仅仅可以传递一个路由名称,有时候我们也可以通过这个参数传递一串JSON数据,然后在Flutter端进行解析,这样我们就可以通过这个参数做更多的事情

activity_main.xml

FrameLayout 用于承载Flutter组件

MainActivity.java

使用 FragmentManager 将 FlutterFragment 添加到 FrameLayout 容器

运行结果

上半部分是原生的TextView,下半部分是Flutter的Text组件

本节主要介绍了Native和Flutter之间的页面跳转,以及同一个页面中Native与Flutter组件的组合。接下来会介绍如何编写Android插件与Flutter进行数据交互

Flutter/IOS混和开发情况下,项目内首个Flutter页面导航无返回问题

在Flutter内部机制中flutter 混合页面,默认使用自动管理导航机制,该机制在Flutter与原生混和开发情况下,Flutter页面不一定作为项目flutter 混合页面的首页面,所以出现需要在首个Flutter页面使用导航返回的需求。

Flutter的AppBar中定义有属性flutter 混合页面

该属性默认为YES,即默认为自动管理导航栏,该情况下其会在非第一个Flutter页面创建导航返回按钮,flutter 混合页面我们在AppBar中将其设置为false:

并且手动添加导航返回按钮:

完成

做混合的话Uniapp和Flutter我应该学哪个啊?

Uniapp目前比较成熟,而且用的是Vue语法,学习成本比较低,而且行业里面用的也比较广泛,而Flutter的话,学习成本略高,因为要学习新的语言,还有就是目前生态不是特别完备,等他再发展发展吧。黑马程序员官网有成套免费视频哦,有什么不懂的可以直接过去学习。您的采纳是对我成长的鞭策

2022-04-22iOS项目混编flutter,iOS真机debug模式下打不开flutter页面

最近项目中要集成flutter来进行混编,但是在集成后,突然遇到一个很神奇的问题,在debug模式下,用数据线连接真机打包可以打开flutter页面,但是一旦拔掉数据线,再打开flutter页面就不行了,开始以为是因为flutterSDK的原因,但是一查资料才发现,原来是因为debug模式下flutter实现了热重载,默认的编译方式是JIV,但是iOS14+之后的系统限制了JIV这种编译方式,所以连接Xcode重新run一个release包就可以了,因为flutter在release模式下的编译方式是AOT,iOS14+的系统是支持这种编译方式的,具体解决方案如下图
再运行就可以了。

当然还有另外一种解决方案,就是修改flutter的编译配置,强制设为release

iOS与Flutter混合开发

在现有iOS项目中导入Flutter, 需要在Podfile文件中加入

flutter_application_path = '/Users/../flutter_app_module'

load File.join(flutter_application_path,'.ios','Flutter','podhelper.rb')

并对target添加:

install_flutter_engine_pod

install_all_flutter_pods(flutter_application_path)
从上flutter 混合页面我们可以看到导入Flutter需要依赖Flutter项目中的'.ios'文件夹下的'podhelper.rb'文件flutter 混合页面,所以在pod install之前flutter 混合页面,请确认.ios文件夹存在

也许flutter 混合页面你一开始存在这个文件flutter 混合页面,但是在执行flutter clean之后,这个文件不见了,不用惊慌, .ios文件夹基本可以通过以下几种方式生成,自行选择:

1. flutter run

2. flutter pub get

3. flutter create .

.ios文件夹生成之后,回到原生项目pod install即可。
友情提示:

在生成.ios的时候,项目中不要存在其他的内层项目(如下截图),那可能会导致你无法生成.ios或者生成的.ios不包含podhelper.rb这个文件,而最终导致你pod install失败。

愉快的开始coding......

flutter_boost在iOS端的简单使用

新一代Flutter-Native混合解决方案。 FlutterBoost是一个Flutter插件,它可以轻松地为现有原生应用程序提供Flutter混合集成方案。FlutterBoost的理念是将Flutter像Webview那样来使用。在现有应用程序中同时管理Native页面和Flutter页面并非易事。 FlutterBoost帮你处理页面的映射和跳转,你只需关心页面的名字和参数即可(通常可以是URL)。

在配置文件pubspec.yaml中加入依赖:



主要实现一个类FlutterRouter.swift 关于flutter 混合页面和flutter混合栈的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 flutter 混合页面的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于flutter混合栈、flutter 混合页面的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring Boot邮箱链接注册验证及注册流程
下一篇:智能车载终端哪个好(智能车载终端哪个好用)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~