Hello, in this video, I'm going to show you how to pour Objective C code. So access an objective c file from your flutter Dart project. So you can do some native code. If you've already got libraries built, or there's something specific that has made its way into this flutter and Dart here, then you can use Objective C. If you want to know about Swift, I've got videos covering that you'll know about kotlin and Java for the Android sides, the native aspect of a video covering that as well. The first thing you want to do in your Dart file, go to the top, we need a new importing unity import packet and if this one here, package colon floater for slash service, dot, NIDA, semi colon. Now if we scroll down to our class here, we need to create a channel and this will be you know, essentially the method not the method, because that's gonna be something else.
It's almost going to be like the connection. Between the docx file and the objective c file, so we can do static const platform equals const method channel and in here we need to put a string, this string would basically be almost a unique connection name. And it's you know, it's recommended to use you know, a package name format like comm dot pick and then I always do like forward slash, and then something so that way I could let they have connections going to this particular channel. And then if I wanted sort of like almost sub connections, sub channels, I could do it based on if again, the format of this doesn't really matter. This is just my preference. And now if we scroll down, we are going to To create a method, and I'm just going to call it printing because it is going to get a value from Objective C by calling a method and that value will get printed.
So, when this button is clicked, and this is what we have, so far, we see at the moment, it doesn't offend, but this will call the punty method. And in here, what we need to do is say, bring value. This will store the result of what we actually get, you could store into an integer for example, but you know, it just depends on what you're doing. So we have a try block you know, this is gonna try and do it. value equals, forgot this needs to be a sink, a sink. He did not spell and this needs to be awake.
Invoke method Like, so we just need to catch block. And I'm going to print out the arrow, we get, you know, any you shouldn't do. And here I'm going to print it. So now what we need to do is we're all done for the actual dot site, we need to actually implement the native Objective C code. To do that, go to the iOS folder, go to run app. And you want to go to app delegate dot m to double click that you can add the code directly here, but the IntelliSense and the recommendation and you know, the highlighting is not very good.
I actually have a lot of confidence that IntelliJ and Google will put those features into this Android Studio and into the IntelliJ IDE can be the Built in stuff for Java and cotton going between one and the other is fantastic. You're literally able to get some Java code copied into a kotlin file, your pop up saying, Do you want to convert it and luckily convert the code, I think you're going to get to like that. It's not available yet barfing. NASA's my opinion. So what you want to do is click on this button, open iOS module in Xcode, what to do is open up your Xcode project. And from here, you could run it, or we're just interested in editing it, and you want to go to the app delegate dot m. So once you've got this open, what you need to do is first of all you need to do hash include flutter for slash flutter dot hate.
So this will allow us to use some flutter features at the start of this application method which just gets called when it's you know, launched. We are going to say selector view controller. And we're going to call this a controller equals to selector view controller dot window, dot root view controller semicolon. Now what we need to do is create the channel and the channel will be the same as what we just created here. Up same code but the same name. So you do flutter method channel.
Channel equals flutter method channel, method channel with name and the method channel we've named that first part is going to be a swing and I would recommend literally going in here What and just copy in this class you want this to be exact This will allow us to detect any sort of requests via that particular channel. And for the binary messenger, you just need to specify the controller that we just created. Now, we can actually check if you know some sort of connection has been made to this channel, but to do that, you just say square brackets channel, that method call handler. And this is going to be a method call. lotto results so this will get triggered when something you know, some communication comes along this channel. So narrow We want to do is detect.
Step two expressions. So let's have a look channel set method call handler. Letter method call Asterix call up for you the problem. The square brackets is going to be over here, semicolon. Oh, okay. So now what we need to do is actually detect which method we've used.
And the method is this name right here. And to check for that, we just say if we're brackets in wrestling in here, and I say 20. So this needs to match whatever you put in here, that people brackets in here. Make sure you put brackets in there literally is just a string even though it essentially a method is just a string. Now what we're going to say, Go inside the brackets and say, is this equal to this other string. And the string that we're comparing it to is call dot method.
So this call dot method, we can check. And that way, we can have multiple method calls within this single channel. And in here, we're going to return the value, the value there on return or the way you return the value, you don't put return, you say result. And this will get returned back to this location. So I'm just gonna say I object to dash c. So if I save this here, go back here. What you want to do is shut down the application, if it's on would run in remote or we debug it, because that will not only do the DOS stuff that will also rebuild iOS and Android as well.
So hot reload and hot restart does not work. If you make any changes on the iOS side, the changes are on the dot side, then that's fine. Okay, so it's simply the file. Now if I click this, I didn't see we get hi from Objective C, there is nothing to do with that on this file. It communicated with the Objective C, the iOS side, and it returned this. You might be thinking, how about wanting to send parameters?
As you know there is a pretty common functionality with function. Don't worry, we are going to cover that in the next video. If you have any questions, though, feel free to shoot me a message and as usual, I look forward to seeing you in the next video.