| // Copyright 2014 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #import <Foundation/Foundation.h> |
| |
| #import "MainViewController.h" |
| #import "NativeViewController.h" |
| |
| @interface MainViewController () |
| |
| @property (nonatomic) NativeViewController* nativeViewController; |
| @property (nonatomic) FlutterViewController* flutterViewController; |
| @property (nonatomic) FlutterBasicMessageChannel* messageChannel; |
| @end |
| |
| static NSString* const emptyString = @""; |
| static NSString* const ping = @"ping"; |
| static NSString* const channel = @"increment"; |
| |
| @implementation MainViewController |
| |
| - (NSString*) messageName { |
| return channel; |
| } |
| |
| - (void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender { |
| |
| if ([segue.identifier isEqualToString: @"NativeViewControllerSegue"]) { |
| self.nativeViewController = segue.destinationViewController; |
| self.nativeViewController.delegate = self; |
| } |
| |
| if ([segue.identifier isEqualToString:@"FlutterViewControllerSegue"]) { |
| self.flutterViewController = segue.destinationViewController; |
| |
| self.messageChannel = [FlutterBasicMessageChannel messageChannelWithName:channel |
| binaryMessenger:self.flutterViewController |
| codec:[FlutterStringCodec sharedInstance]]; |
| |
| MainViewController* __weak weakSelf = self; |
| [self.messageChannel setMessageHandler:^(id message, FlutterReply reply) { |
| [weakSelf.nativeViewController didReceiveIncrement]; |
| reply(emptyString); |
| }]; |
| } |
| } |
| |
| - (void)didTapIncrementButton { |
| [self.messageChannel sendMessage:ping]; |
| } |
| |
| @end |