package flutter.fl_print_plimport android.content.Contextimport android.util.Logimport android.widget.Toastimport androidx.annotation.NonNullimport com.google.gson.Gsonimport com.google.gson.JsonArrayimport com.google.gson.JsonParserimport com.inuker.bluetooth.library.BluetoothClientimport com.inuker.bluetooth.library.search.SearchRequestimport com.inuker.bluetooth.library.search.SearchResultimport com.inuker.bluetooth.library.search.response.SearchResponseimport cpcl.Configimport cpcl.PrinterHelperimport io.flutter.embedding.engine.plugins.FlutterPluginimport io.flutter.plugin.common.EventChannelimport io.flutter.plugin.common.EventChannel.EventSinkimport io.flutter.plugin.common.MethodCallimport io.flutter.plugin.common.MethodChannelimport io.flutter.plugin.common.MethodChannel.MethodCallHandlerimport io.flutter.plugin.common.MethodChannel.Resultimport io.reactivex.Observableimport io.reactivex.android.schedulers.AndroidSchedulersimport io.reactivex.schedulers.Schedulers/** xxxxxxPlugin*每次修改代码 要点红停止,重新运行*/public class FlPrintPlPlugin : FlutterPlugin, MethodCallHandler {    private var context: Context? = null    private var methodChannel: MethodChannel? = null    private lateinit var eventChannel: EventChannel    private var eventSink: EventSink? = null    override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {        //测试获取上下文        context = flutterPluginBinding.applicationContext        mBluetoothClient = BluetoothClient(context)        //双方通信方法注册        methodChannel = MethodChannel(flutterPluginBinding.binaryMessenger, "fl_print_pl").apply {            setMethodCallHandler([email protected])        }        //flutter主动传输到原生注册        eventChannel = EventChannel(flutterPluginBinding.binaryMessenger, "android_print_event_channel").apply {            setStreamHandler(object : EventChannel.StreamHandler {                override fun onListen(arguments: Any?, events: EventSink?) {                    [email protected] = events                }                override fun onCancel(arguments: Any?) {                    [email protected] = null                }            })        }    }    override fun onDetachedFromEngine(@NonNull binding: FlutterPlugin.FlutterPluginBinding) {        methodChannel?.setMethodCallHandler(null)        methodChannel = null         }    override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) {        if (call.method == "getPlatformVersion") {          // 这里是判断原生的方法定义的标识执行你要执行的任务        } else if (call.method == "searchBlue") {             // 这里是判断原生的方法定义的标识执行你要执行的任务        } else {            result.notImplemented()        }    }    /**     * 暴露出去供界面传数据到Flutter        这里你可以主动执行此方法向flutter传输数据     */    private fun sendEvent(data: Any) {        if (eventSink != null) {            eventSink?.success(data)        } else {            Log.d("xg", "===== FlutterEventChannel.eventSink 为空 需要检查一下 =====")        }    }

flutter 下面进行接受数据并执行

class _PrintPageState extends State {  static const EventChannel eventChannel = EventChannel("android_print_event_channel");   @override  void initState() {    eventChannel.receiveBroadcastStream().listen(_onEvent, onError: _onError);    super.initState();  }//接收activity传递来的参数obj  void _onEvent(Object obj) {    setState(() {      if (obj == "printSuccess") {        执行方法      }    });  }  void _onError(Object obj) {}

 

更多相关文章

  1. SimpleAdapter
  2. Android(安卓)MVC,MVP和MVVM架构模式的探究
  3. Android(安卓)AbsListView
  4. Binder框架的一些简单总结(关于自定义服务中的Binder)
  5. 第九章:Android中的数据存取
  6. 关于android各种双卡手机获取imei,imsi的处置(mtk,展讯,高通等)
  7. android动态增加控件时控制样式的方法
  8. Android中UI线程与后台线程交互设计的5种方法
  9. Android(安卓)滑动绘制流程探究 系统是如何提高滑动性能?

随机推荐

  1. Android(安卓)Activity四种加载方式
  2. 9.RatingBar
  3. Android开发9——Activity的启动模式
  4. android录音相关
  5. android-RadioButton背景使用图片
  6. Android的闹钟管理类
  7. Android(安卓)Http Server
  8. 为Android应用程序添加两个入口
  9. Android(安卓)2.1 源码结构分析
  10. 在android真机上使用sqlite3