}
class MethodChannelDemo extends StatefulWidget {
@override
_MethodChannelDemoState createState() => _MethodChannelDemoState();
}
class _MethodChannelDemoState extends State {
var channel = MethodChannel(‘com.example.flutterios.MethodChannel’);
var _data;
@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’)
],
),
),
);
}
}
说明:com.example.flutterios.MethodChannel是iOS端MethodChannel全路径
2.2 创建IOS端MethodChannelDemo
import Flutter
import UIKit
public class MethodChannelDemo {
init(messenger: FlutterBinaryMessenger) {
let 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<String, Any> {
let name:String = dict[“name”] as? String ?? “”
let age:Int = dict[“age”] as? Int ?? -1
result([“name”:“hello,(name)”,“age”:age])
}
}
}
}
}
2.3 在AppDelegate设置MethodChannelDemo
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)
}
}
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
文末
那么对于想对峙步伐员这行的真的就一点希望都没有吗?
实在否则,在互联网的大浪淘沙之下,留下的永远是最优秀的,我们考虑的不是哪个行业差哪个行业难,就逃避掉这些,无论哪个行业,都会有他的问题,但是无论哪个行业都会有站在最顶端的那群人。我们要做的就是积极提升自己,让自己站在最顶端,学历不敷那就去读,知识不敷那就去学。人之所以为人,不就是有解决问题的能力吗?挡住自己的由于只有自己。
Android希望=技能+口试
- 技能
- 口试技巧+口试题
《Android学习笔记总结+移动架构视频+大厂口试真题+项目实战源码》,点击传送门,即可获取!
题,但是无论哪个行业都会有站在最顶端的那群人。我们要做的就是积极提升自己,让自己站在最顶端,学历不敷那就去读,知识不敷那就去学。人之所以为人,不就是有解决问题的能力吗?挡住自己的由于只有自己。
Android希望=技能+口试
- 技能
[外链图片转存中…(img-p8cU7cyZ-1715064234990)]
- 口试技巧+口试题
[外链图片转存中…(img-rwGiRyCC-1715064234991)]
《Android学习笔记总结+移动架构视频+大厂口试真题+项目实战源码》,点击传送门,即可获取!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |