initMethodChannel method

void initMethodChannel()

初始化方法通道

Implementation

void initMethodChannel() {
  Log.i(tag, "initMethodChannel");
  //设置原生方法回调处理
  methodChannel.setMethodCallHandler((call)async{
    Log.i(tag, "MethodCall");
    Log.i(tag, "MethodCall:methodCallback:"+methodCallback.toString());
    if(methodCallback!=null){
      //通知库的使用者
      //方法名首字母小写
      String newMethodName=call.method.substring(0, 1).toLowerCase() + call.method.substring(1);
      MethodCall newMethodCall = MethodCall(newMethodName,call.arguments);
      Log.i(tag, "MethodCall:methodCallback:call:"+newMethodName.toString());
      dynamic result=await methodCallback!.call(newMethodCall);
      Log.i(tag, "MethodCall:methodCallback:result:"+result.toString());

      //判断是否不需要自己处理,如库的使用者自己处理了
      // 安全判断:非空 + 是布尔类型 + 值为 false
      if (result != null && result is bool && result) {
        return Future.value(null);
      }
    }

    //自己的处理
    Log.i(tag, "MethodCall:PocHandler handleMethodCall");
    PocHandler.handleMethodCall(call);

    // 所有分支兜底返回合法的 Future(避免返回 null)
    return Future.value("ok");
  });
}