IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> flutter混编(iOS - OC篇) --一些问题的处理 -> 正文阅读

[移动开发]flutter混编(iOS - OC篇) --一些问题的处理

本人以项目为基础,进行问题记录,一下内容纯属个人知识范围,会存在主观错误看法 欢迎指点提出,温柔一点,我很脆弱。(本人较懒 不敲代码考手绘图)

关于真机运行闪退的问题

配置如下
来到flutter框架中 packages >>> flutter_tools>>>bin>>>xcode_backend.dart文件
在文件内找到该位置的debug 将其改为release即可。需要debug改回即可
在这里插入图片描述
release模式下print打印将会失效,如果需要打印 推荐插件logger


OC下的FlutterEngine

个人看法 插件挂载在Engine上然后通过FlutterViewController进行渲染显示。而一个Engine只能挂载一个FlutterViewController上。
而我们的项目,flutter所展示的信息是在首页的tab里面,对于内部信息的跳转,如果让flutter进行那将会因为导致一个很好玩的点,就是跳转只在flutterViewController里面进行,tab会挡住下方。
在这里插入图片描述
我本来想进行偷懒 让原生去处理这件事,可惜自己也是搞iOS出来的,知道原生搞更麻烦。
这个时候 我就需要将一个模块用两个engine去处理。而这个处理的时候遇到了一下几个比较麻烦的点

  • 跳转到指定页面出现配置问题,初始化错误(此问题处于在下使用ScreenUtil做适配时遇到的问题,其他初始化问题也可借鉴)

    这里面要注意一个点 OC内的跳转 和安卓Java的跳转方式是不相同的,OC的跳转是通过pushName进行跳转,而安卓的跳转是经过initialRoute进行跳转的。当你安卓端进行跳转的时候 要注意 处于根页面中类似于ScreenUtil.init的配置将会直接不走,因为initialRoute会直接跳过跟页面,你将会遇到初始化错误。
    当我改用了ScreenUtilInit方式 直接将MaterialAppt套住,安卓问题解决了。但是iOS端黑屏了。我也是醉茫茫,最后解决方式,我是进行了判断处理。
  • 原生向flutter端发送消息

    EventChannel这个通道有网上有很多使用的说明,我所说的问题是在别人说明中没有被提起的点(可能提起了我没注意)
    我们项目中进行了有一个国际化操作这个时候将会对所有ViewController进行一个重新加载。这时候再次进入FlutterVC时FlutterStreamHandler的代理方法- (FlutterError* _Nullable)onListenWithArguments:(id _Nullable)arguments eventSink:(FlutterEventSink)events;
    无法再次进入。而FlutterEventSink不知道何时置空。导致第二次无法调用
    解决方法:
    1.在oc中调用
    - (void)dealloc{ [self.eventChannel setStreamHandler:nil]; }
    2.在flutter中对流进行清空销毁
@override
  void dispose() {
    super.dispose();
    // 销毁掉监听流
    if (_streamSubscription != null) {
      _streamSubscription!.cancel();
      _streamSubscription = null;
    }
  }

这时候 就清空干净啦!

未完待续。。。


问题探究与吐槽
个人喜欢加群然后在群里请教大佬们一些问题,有些大佬真的比较牛逼,人也和气,说话也好听,有些比较厉害的程序猿(我觉得人品配不上大佬这两个字,所以我是不会叫他大佬的)希望看到这篇小作文的大佬能过谈论谈论我这个比较新手的问题
下面是问题:

 @override
  void initState() {
    super.initState();
	//在这里 如果我去使用任何关于context的操作是错误的,因为context是在build以后产生的.
	getContext();
  }
  // 然而 当我这样写的时候
  getContext() async{
  	//当我使用这种写法去获取context的时候,我就可以获取到context,
  	// build以后会重新返回到这里
  	final contexts = await context;
  }
  // 这是因为啥?线程?state?
  

关于今天受到的气引发感想

关于那位很牛逼的程序猿–是近期在掘金自称程序之王的人,不可否认他的代码的确很强,看他的资料能学到东西,但是人品确实不咋样,在群里以怼新人为乐。我进过很多开发群,但是这个人和这个人所建立的群。。。反正新接触flutter的程序猿不建议进去。因为他们会瞧不起你。 像大家推荐推荐像老孟这种大佬的群吧 气氛比较和谐

技能挺重要的,但是人品更重要

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-04-13 23:35:31  更:2022-04-13 23:36:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 20:33:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码