Flutter开发之——IOS通信MethodChannel,2021届毕业生还没找到Android开发工作

Flutter开发之——IOS通信MethodChannel,2021届毕业生还没找到Android开发工作,第1张

@objc class AppDelegate: FlutterAppDelegate {

override func application(

_ application: UIApplication,

didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?

) -> Bool {

GeneratedPluginRegistrant.register(with: self)

let controller : FlutterViewController = window?.rootViewController as! FlutterViewController

MethodChannelDemo(messenger: controller.binaryMessenger)

GeneratedPluginRegistrant.register(with: self)

return super.application(application, didFinishLaunchingWithOptions: launchOptions)

}

}

2.4 效果图

三 iOS 端向Flutter主动发送数据-定时器


3.1 创建Flutter端MethodChannel

import ‘package:flutter/foundation.dart’;

import ‘package:flutter/material.dart’;

import ‘package:flutter/services.dart’;

void main() {

runApp(MethodChannelDemo());

}

class MethodChannelDemo extends StatefulWidget {

@override

_MethodChannelDemoState createState() => _MethodChannelDemoState();

}

class _MethodChannelDemoState extends State {

var channel = MethodChannel(‘com.example.flutterios.MethodChannel’);

var _data;

var _nativeData;

@override

void initState() {

channel.setMethodCallHandler((call)async{

setState(() {

_nativeData = call.arguments[‘count’];

});

});

}

@override

Widget build(BuildContext context) {

return MaterialApp(

home: Scaffold(

appBar: AppBar(title: Text(“IOS-MethodChannelDemo”)),

body: Column(

children: [

SizedBox(height: 50,),

RaisedButton(

child: Text(‘发送数据到原生’),

onPressed: () async {

var result = await channel

.invokeMethod(‘sendData’, {‘name’: ‘张三’, ‘age’: 18});

var name = result[‘name’];

var age = result[‘age’];

setState(() {

_data = ‘ n a m e , name, name,age’;

});

},

),

Text(‘原生返回数据:$_data’),

Text(‘原生主动发送数据:$_nativeData’)

],

),

),

);

}

}

3.2 创建IOS端MethodChannelDemo

import Flutter

import UIKit

public class MethodChannelDemo {

var count = 0

var channel:FlutterMethodChannel

init(messenger: FlutterBinaryMessenger) {

channel = FlutterMethodChannel(name: “com.example.flutterios.MethodChannel”, binaryMessenger: messenger)

channel.setMethodCallHandler { (call:FlutterMethodCall, result:@escaping FlutterResult) in

if (call.method == “sendData”) {

if let dict = call.arguments as? Dictionary {

let name:String = dict[“name”] as? String ?? “”

let age:Int = dict[“age”] as? Int ?? -1

result([“name”:“hello,(name)”,“age”:age])

}

}

}

startTimer()

}

func startTimer() {

var timer = Timer.scheduledTimer(timeInterval:1, target: self, selector:#selector(self.tickDown),userInfo:nil,repeats: true)

}

@objc func tickDown(){

count += 1

var args = [“count”:count]

channel.invokeMethod(“timer”, arguments:args)

}

}

3.3 在合适的地方调用MethodChannel

import UIKit

import Flutter

@UIApplicationMain

@objc class AppDelegate: FlutterAppDelegate {

override func application(

_ application: UIApplication,

didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?

) -> Bool {

GeneratedPluginRegistrant.register(with: self)

let controller : FlutterViewController = window?.rootViewController as! FlutterViewController

MethodChannelDemo(messenger: controller.binaryMessenger)

GeneratedPluginRegistrant.register(with: self)

return super.application(application, didFinishLaunchingWithOptions: launchOptions)

}

}

3.4 效果图

总结

最后对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司20年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

相信它会给大家带来很多收获:

上述【高清技术脑图】以及【配套的面试真题PDF】可以点击我的GitHub免费获取

本文在开源项目:[https://github.com]中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/993701.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存