Flutter与iOS原生混合开发 iOS项目集成Flutter

1.创建flutter module
进入iOS工程根目录的上一级,创建flutter module工程

flutter create --template module fluttermodule

2.进入iOS工程根目录,编辑podfile文件

flutter_application_path = '../fluttermodule'
load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')target "iOSDemo" douse_frameworks!
install_all_flutter_pods(flutter_application_path)endpost_install do |installer|flutter_post_install(installer) if defined?(flutter_post_install)
end

执行pod install
3.iOS调用Flutter
在AppDelegate注册FlutterEngine

import UIKit
import Flutter
import FlutterPluginRegistrant@main
class AppDelegate: UIResponder, UIApplicationDelegate {lazy var flutterEngine = FlutterEngine(name: "my flutter engine")func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {// Override point for customization after application launch.GeneratedPluginRegistrant.register(with: self.flutterEngine);flutterEngine.run()return true}
}

使用 FlutterEngine调用utterViewController

import UIKit
import Flutterclass ViewController: UIViewController {override func viewDidLoad() {super.viewDidLoad()// Make a button to call the showFlutter function when pressed.let button = UIButton(type:UIButton.ButtonType.custom)button.addTarget(self, action: #selector(showFlutter), for: .touchUpInside)button.setTitle("Show Flutter!", for: UIControl.State.normal)button.frame = CGRect(x: 80.0, y: 210.0, width: 160.0, height: 40.0)button.backgroundColor = UIColor.blueself.view.addSubview(button)}@objc func showFlutter() {let flutterEngine = (UIApplication.shared.delegate as! AppDelegate).flutterEnginelet flutterViewController =FlutterViewController(engine: flutterEngine, nibName: nil, bundle: nil)present(flutterViewController, animated: true, completion: nil)}
}

参考链接
https://www.jianshu.com/p/aac1f387f3c0
https://www.jianshu.com/p/c3e5e210a585

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/849723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx 配置防护 缓慢的 HTTP拒绝服务攻击+点击劫持:X-Frame-Options未配置

一 安全团队检测网站 1 检测到目标主机可能存在缓慢的HTTP拒绝服务攻击 缓慢的HTTP拒绝服务攻击是一种专门针对于Web的应用层拒绝服务攻击,攻击者操纵网络,对目标Web服务器进行海量HTTP请求攻击,直到服务器带宽被打满,造成了拒绝服务。 慢…

Flink SQL实践

环境准备 方式1:基于Standalone Flink集群的SQL Client 启动Flink集群 [hadoopnode2 ~]$ start-cluster.sh [hadoopnode2 ~]$ sql-client.sh ... 省略若干日志输出... Flink SQL> 方式2:基于Yarn Session Flink集群的SQL Client 启动hadoop集群…

OpenGL相关库下载并解决三个入门问题

写在前面: 1.本篇文章将解决 freeglut.h 和 glut.h两个库在VS2019下的配置问题,并解决三个OpenGL课本上的三个问题: 利用OpenGL实现折线和矩形的橡皮筋绘制技术,并采用右键菜单实现功能的选择。 利用OpenGL,分别用…

使用difflib实现文件差异比较用html显示

1.默认方式&#xff0c;其中加入文本过长&#xff0c;需要换行&#xff0c;因此做 contenthtml_output.replace(</style>,table.diff td {word-wrap: break-word;white-space: pre-wrap;max-width: 100%;}</style>)&#xff0c;添加换行操作 ps&#xff1a;当前te…

内存经验分享

目录 内存统计工具 /proc/meminfo Buddy ​​​​​​​​​​​​​​Slub ​​​​​​​Procrank /proc/pid/smaps ​​​​​​​Dumpsys meminfo 内存评估 内存泄漏 Lmk 水位调整 内存统计工具 /proc/meminfo 可以提供整体内存信息&#xff0c;各字段表示的意思如…

mysql工具----dbForgeStudio2020

dbForgeStudio2020&#xff0c;除了基本的操作外&#xff0c;还具有可调试mysql存储过程的功能&#xff0c;是一个不可夺得的mysql软件工具。 本文的软件将简单介绍软件的安装方式&#xff0c;仅供学习交流&#xff0c;不可做它用。 1.安装软件&#xff0c;安装后&#xff0c…

2024.6.7力扣刷题记录-链表篇学习记录

目录 一、学习视频 二、视频跟练 1.206. 反转链表 2.92. 反转链表 II 3.25. K 个一组翻转链表 三、课后习题 1.24. 两两交换链表中的节点 &#xff08;1&#xff09;循环两次 &#xff08;2&#xff09;直接反转 &#xff08;3&#xff09;递归 2.445. 两数相加 II &…

一个可以自动生成随机区组试验的excel VBA小程序2

本程序用于应对随机区组试验中要求相同小区位置不能出现同一品种的情况。编程思路略有不同&#xff0c;故将另开一篇。 本试验设计是在原来的基础上改版的&#xff0c;相关的参数设置与操作同上一版&#xff0c;这里不在赘述&#xff1a;一个可以自动生成随机区组试验的excel V…

【Linux操作系统】Linux中进程的五种状态:R、S、D、T、X以及僵尸进程、孤儿进程

操作系统中有许多同时执行的进程&#xff0c;这些进程都可能处于不同的状态代表着不同的含义。 R运行状态(running) 概念&#xff1a;并不意味着进程一定在运行中&#xff0c;它表明进程要么是在运行中要么在运行队列里。 我们运行可执行程序myproc利用指令 ps ajx可以看到进程…

微信小程序使用bindtap事件data-xxx传值无法获取

文章目录 1.实例代码2.原因分析3.解决办法 1.实例代码 index.wxml <view data-hi"数据1" bindtap"menuTouch"><image mode"aspectFit" src"{{item.src}}"></image><text class"menu-item-text">{{…

BC9 printf的返回值

BC9 printf的返回值 这里我们先要了解库函数printf printf的返回值&#xff0c;是写入的字符总数 我们第一遍写代码时候可能写成这样: #include<stdio.h> int main() {int retprintf("Hello world!");printf("%d", ret);return 0; }我们发现这样是通…

Java运算符介绍及其用法

运算符 1.算数运算符 符号说明加法-减法*乘法/除法如果符号前后都是整数,结果取整数部分如果符号前后有一个为小数,结果就是正常小数%模,取余数部分 public class Demo01Arithmetic {public static void main(String[] args) {int i 10;int j 3;int add ij;//推荐使用Sys…

问题:在本案复议阶段,复议机关()。 #其他#媒体

问题&#xff1a;在本案复议阶段&#xff0c;复议机关&#xff08;&#xff09;。 A&#xff0e;有权责令被申请人纠正违法的征税行为 B&#xff0e;应当对被申请人作出的税务具体行政行为所依据的事实证据、法律程序、法律依据及设定权利义务内容的合法性、适当性进行全面审…

【JMeter接口测试工具】第二节.JMeter基本功能介绍(上)【入门篇】

文章目录 前言一、获取所有学院信息接口执行二、线程组的介绍 2.1 并发和顺序执行 2.2 优先和最后执行线程组 2.3 线程组的设置细节三、HTTP请求的介绍四、查看结果树的配置使用总结 前言 一、获取所有学院信息接口执行 我们先针对一条简单的接口进行执行&#…

sql server 把表的所有的null改为0,不要限制某列

DECLARE tableName NVARCHAR(256) Linear -- 替换为你的表名 DECLARE sql NVARCHAR(MAX) SELECT sql UPDATE tableName SET COLUMN_NAME 0 WHERE COLUMN_NAME IS NULL; FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME tableName AND TABLE_SCHEM…

docker_如何推送镜像到仓库(hub.docker.com)

在执行 docker push 时收到 denied: requested access to the resource is denied 错误通常意味着你没有权限将镜像推送到目标存储库。这可能有几个原因,包括: 未登录 Docker Hub:你还没有登录到 Docker Hub,或者你登录的账户没有权限推送到目标存储库。存储库不存在:目标…

【Spring Cloud Alibaba】13.自建存储对象服务与集成(minio版)

文章目录 简介什么是云存储服务&#xff08;OSS&#xff09;为什么选择MiniIOMiniIO相关地址 搭建(docker)安装Docker部署MinIO创建存储桶配置存储桶设置存储桶可以直接在浏览器访问 集成到Spring Cloud Alibaba项目创建子模块引入依赖包项目结构配置文件工具类接口类测试 简介…

别让你的品牌失去声音,品牌策划如何成为你的王牌?

品牌策划可不仅仅是一个简单的概念&#xff0c;它是一门真正的艺术和科学。 它涉及到在确立品牌定位之后&#xff0c;进行一系列精心设计的传播和推广活动&#xff0c;从而塑造和管理品牌&#xff0c;让品牌价值达到最大化。 在这个竞争激烈的市场中&#xff0c;想要让你的品…

频谱 搬移

为什么一个信号与一个频率固定的余弦信号相乘&#xff0c;频域上&#xff0c;相当于对信号的频谱进行了一个移动处理? 这个现象可以通过傅里叶变换和调制定理来解释。 数学解释 设信号 x ( t ) x(t) x(t) 和余弦信号 cos ⁡ ( 2 π f c t ) \cos(2\pi f_c t) cos(2πfc​t)…

什么是 Spring Boot 的起步依赖和自动配置?它们的作用是什么?

Spring Boot 的起步依赖和自动配置是 Spring Boot 框架的两个核心特性&#xff0c;它们的作用主要是简化了 Spring Boot 项目的搭建和配置过程。 起步依赖&#xff08;Starter Dependencies&#xff09;&#xff1a;起步依赖是一种预先定义好的依赖关系集合&#xff0c;它包含…