Flutter移动端实战手册,android语言基础教程

  • (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

[self.lifeCycleDelegate application:application willFinishLaunchingWithOptions:launchOptions];

return YES;

}

  • (void)applicationWillResignActive:(UIApplication *)application {

[self.lifeCycleDelegate applicationWillResignActive:application];

}

  • (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

[self.lifeCycleDelegate application:application openURL:url sourceApplication:sourceApplication annotation:annotation];

return YES;

}

随后即可加入Flutter代码,加入的方式也很简单,直接实例化一个FlutterViewController控制器即可,也不需要传其他参数进去(这里先不考虑多实例的问题)。

FlutterViewController *flutterViewController = [[FlutterViewController alloc] init];

Flutter将其看做是一个画布,实例化一个画布上去之后,任何操作其实都是在当前页面完成的。

常见错误


到这个步骤集成操作就已经完成,但是很多人在集成过程中会遇到一些错误,下面是一些常见错误。

路径错误,读取不到xcode_backend.sh文件等。这是因为环境变量FLUTTER_ROOT没有获取到,FLUTTER_ROOT配置在Generated.xcconfig中,可以看一下这个文件是不是配置的有问题。

lipo info *** arm64类似这样的错误,一般都是因为xcode_backend.sh脚本导致的,可以检查一下FLUTTER_ROOT环境变量是否正确。

下面这种问题一般都是因为权限导致的,可以查看Build Phases的脚本写的是不是有问题。

***/flutter_tools/bin/xcode_backend.sh: Permission denied

混合开发


在进行混编过程中,Flutter有一个很大的优势,就是如果Flutter代码出问题,不会导致原生应用的崩溃。当Flutter代码出现崩溃时,会在屏幕上显示错误信息。

在开发过程中经常会涉及到网络请求和持久化的问题,如果混编的话可能会涉及到写两套逻辑。例如网络请求有一些公共参数,或返回数据的统一处理等,如果维护两套逻辑的话会容易出问题。所以建议将网络请求和持久化操作都交给Platform处理,Flutter侧只负责向Platform请求并拿来使用即可。

这个过程就涉及到两端数据交互的问题,Flutter对于混编给出了两套方案,MethodChannel和EventChannel。从名字上来看,一个是方法调用,另一个是事件传递。但实际开发过程中,只需要使用MethodChannel即可完成所有需求。

Flutter to Native

下面是Flutter调用Native的代码,在Native中通过FlutterMethodChannel设置指定的回调代码,并且在接收参数并处理。由Flutter通过MethodChannel对Native发起调用,并传入对应的参数。

代码中在Flutter侧构建好数据模型,然后调用MethodChannel的invokeMethod,会触发Native的回调。Native拿到Flutter传过来的数据,进行解析并执行播放操作,随后会把播放的

你可能感兴趣的:(程序员,架构,面试)