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的程序猿不建议进去。因为他们会瞧不起你。 像大家推荐推荐像老孟这种大佬的群吧 气氛比较和谐

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值