当前位置:   article > 正文

Flutter 解决 MissingPluginException(No implementation found for method xxx on channel xxx)_missingpluginexception (missingpluginexception(no

missingpluginexception (missingpluginexception(no implementation found for m

MissingPluginException(No implementation found for method xxx on channel xxx)
这个错误出现的原因是Plugin的方法没有找到,也可能是Plugin本身就没有注册成功。

经常是退出APP的后重新进入就会出现这个问题。

网上有很多解决办法:

方案一:flutter clean一下,再次 flutter run/build

方案二:将flutter run的进程终止掉重新 flutter run/build

方案三:看看你的FlutterPluginRegistrant产物是否存在,是否更新了

方案四:杀死APP进程重新运行
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

但是在正式包里面还是会出现这个问题,但是我们不可能要求用户去杀死进程重新运行,这样会被BOSS拉出去祭天的。但是正常的关闭APP的方法又不能解决这个问题。那么我们就要曲线救国一下,我们在Android中定义在用户关闭APP的时候让其后台运行即可解决这个问题。

1.在FLutter for Android 的MainActivity中:

package com.cgmcomm.cgmstore;

import android.app.Notification;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;

import com.cgmcomm.umeng.UmengGlobal;

import io.flutter.app.FlutterActivity;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugins.GeneratedPluginRegistrant;

public class MainActivity extends FlutterActivity {
    //通讯名称,回到手机桌面
    private final String chanel = "back/desktop";
    //返回手机桌面事件
    static final String eventBackDesktop = "backDesktop";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//API>21,设置状态栏颜色透明
            getWindow().setStatusBarColor(0);
        }
        GeneratedPluginRegistrant.registerWith(this);
        initBackTop();
    }

    @Override
    protected void onResume() {
        super.onResume();
        UmengGlobal.getInstance(this).onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        UmengGlobal.getInstance(this).onPause();
    }

    //注册返回到手机桌面事件
    private void initBackTop() {
        new MethodChannel(getFlutterView(), chanel).setMethodCallHandler(
                (methodCall, result) -> {
                    if (methodCall.method.equals(eventBackDesktop)) {
                        moveTaskToBack(false);
                        result.success(true);
                    }
                }
        );
    }

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55

2.在FLutter中:

//android_back_desktop.dart

import 'package:flutter/services.dart';
import 'package:flutter/material.dart';

class AndroidBackTop {
  ///通讯名称,回到手机桌面
  static const String chanel = "back/desktop";

  //返回手机桌面事件
  static const String eventBackDesktop = "backDesktop";

  ///设置回退到手机桌面
  static Future<bool> backDesktop() async {
    final platform = MethodChannel(chanel);
    try {
      await platform.invokeMethod(eventBackDesktop);
    } on PlatformException catch (e) {
      debugPrint(e.toString());
    }
    return Future.value(false);
  }
}

//调用实例:

……
DateTime lastPopTime;
  return WillPopScope(
    child: Scaffold(
      body: TabNavigator(
        state: state,
        dispatch: dispatch,
      ),
    ),
    onWillPop: _doubleExit,
  );
}
Future<bool> _doubleExit() async {
  // 点击返回键的操作
  if(lastPopTime == null || DateTime.now().difference(lastPopTime) > Duration(seconds: 2)){
    lastPopTime = DateTime.now();
    ToastTools.showToast("再按一次退出");
    return new Future.value(false);
  }else{
    lastPopTime = DateTime.now();
    // 退出app
    return AndroidBackTop.backDesktop();
  }
}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号