第2节:交互时iOS端的代码编写

第2节:交互时iOS端的代码编写

本节学习内容:原生iOS项目在交互时的代码编写。

本节学习用时:30分钟

本节学习方式:动手实践


本节目录:

一、本节内容介绍

二、本节代码解释


一、本节内容介绍

略!

二、本节代码解释

1、本节代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
- (void)showMainFlutterViewControllerWithoutParam {
self.navigationController.navigationBarHidden = YES;

FlutterViewController *flutterViewController = [[FlutterViewController alloc] initWithProject:nil nibName:nil bundle:nil];

NSString *channelName = @"com.dvlproad.ciyouzen/platform_channel";// 要与.dart中一致
FlutterMethodChannel *messageChannel = [FlutterMethodChannel methodChannelWithName:channelName binaryMessenger:flutterViewController];

[messageChannel setMethodCallHandler:^(FlutterMethodCall * _Nonnull call, FlutterResult _Nonnull result) {
// call.method获取flutter给回到的方法名,要匹配到channelName对应的多个 发送方法名,一般需要判断区分
// call.arguments获取到flutter给到的参数,(比如跳转到另一个页面所需要参数)
// result是给flutter的回调,只能回调一次
NSString *message = [NSString stringWithFormat:@"flutter回调:\n nmethod = %@\n arguments = %@", call.method, call.arguments];
NSLog(@"%@", message);

if ([call.method isEqualToString:@"showToast"]) {
[CJToast shortShowMessage:message];
return;

} else if ([call.method isEqualToString:@"goBack"]) {
[self.navigationController popViewControllerAnimated:YES];
return;

} else if ([call.method isEqualToString:@"goiosPage"]) {
OCCallFlutterViewController *viewController = [[OCCallFlutterViewController alloc] init];
viewController.parames = call.arguments;
[self.navigationController pushViewController:viewController animated:YES];
return;

} else if ([call.method isEqualToString:@"changeLeftBarButtonAction"]) {
NSDictionary *params = @{@"imageName":@"lib/Resources/message_arrow.png"};
result(params);
return;
}

result(FlutterMethodNotImplemented);
}];

[self.navigationController pushViewController:flutterViewController animated:YES];
}