本人以项目为基础,进行问题记录,一下内容纯属个人知识范围,会存在主观错误看法 欢迎指点提出,温柔一点,我很脆弱。(本人较懒 不敲代码考手绘图)
关于真机运行闪退的问题
配置如下 来到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();
getContext();
}
getContext() async{
final contexts = await context;
}
关于今天受到的气引发感想
关于那位很牛逼的程序猿–是近期在掘金自称程序之王的人,不可否认他的代码的确很强,看他的资料能学到东西,但是人品确实不咋样,在群里以怼新人为乐。我进过很多开发群,但是这个人和这个人所建立的群。。。反正新接触flutter的程序猿不建议进去。因为他们会瞧不起你。 像大家推荐推荐像老孟这种大佬的群吧 气氛比较和谐
技能挺重要的,但是人品更重要
|