flutter iOS 使用BasicMessageChannel 通信
flutter代码
// main.dart import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( home: MyHomePage(), ); } } class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { final BasicMessageChannel<String> messageChannel = BasicMessageChannel<String>('messageChannel', StringCodec()); String _message = 'No message from iOS'; @override void initState() { super.initState(); messageChannel.setMessageHandler((message) async { print("Received message from iOS: $message"); setState(() { _message = 'iOS Response: $message'; }); return 'ACK from Dart'; }); } Future<void> _sendMessageToiOS() async { try { final String? result = await messageChannel.send('Hello from Flutter!'); print("Received response from iOS: $result"); } on PlatformException catch (e) { print("Failed to send message to iOS: ${e.message}"); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Flutter - iOS Communication Demo'), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text( '$_message', style: TextStyle(fontSize: 16), ), SizedBox(height: 20), ElevatedButton( onPressed: _sendMessageToiOS, child: Text('Send Message to iOS'), ), ], ), ), ); } }
iOS代码
// AppDelegate.swift import UIKit import Flutter @UIApplicationMain @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { let controller = window?.rootViewController as! FlutterViewController let messageChannel = FlutterBasicMessageChannel( name: "messageChannel", binaryMessenger: controller.binaryMessenger, codec: FlutterStringCodec.sharedInstance() ) messageChannel.setMessageHandler { [weak self] (message, reply) in guard let strongSelf = self else { return } print("Received message from Flutter: \(message ?? "")") let response = "Hello from iOS! You said: \(message ?? "")" reply(response) } GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探