账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Flutter和原生交互提示: MissingPluginExceptio
    84
    0

    问题描述

    flutter获取电池信息的小demo
    Performing hot reload...
    Syncing files to device OPPO R11...
    Reloaded 0 of 419 libraries in 401ms.
    E/flutter ( 2440): [ERROR:flutter/shell/common/shell.cc(184)] Dart Error: Unhandled exception:
    E/flutter ( 2440): MissingPluginException(No implementation found for method getBatteryLevel on channel samples.flutter.io/battery)
    E/flutter ( 2440): #0 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:291:7)

    **我跑了一下官方的实例代码,是可以正确获取到电池信息的, 但是官方在代码里用的是 new MethodCallHandler()
    我在自己的项目里用new MethodCallHandler() 就不行 得这样子才可以 newMethodChannel.MethodCallHandler()**

    dart文件

    问题出现的环境背景及自己尝试过哪些方法

    1.是根据文档写的,
    

    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)

    package com.example.batterylevel;
    
    import android.os.Bundle;
    import io.flutter.app.FlutterActivity;
    import io.flutter.plugin.common.MethodCall;
    import io.flutter.plugin.common.MethodChannel;
    import io.flutter.plugins.GeneratedPluginRegistrant;
    
    
    
    import android.content.ContextWrapper;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.os.BatteryManager;
    import android.os.Build.VERSION;
    import android.os.Build.VERSION_CODES;
    import android.os.Bundle;
    
    public class MainActivity extends FlutterActivity {
      private static final String CHANNEL = "com.example.batterylevel/battery";
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        GeneratedPluginRegistrant.registerWith(this);
        new MethodChannel(getFlutterView(),CHANNEL).setMethodCallHandler(
                new MethodChannel.MethodCallHandler() {
                  @Override
                  public void onMethodCall(MethodCall call, MethodChannel.Result result) {
    
                    if (call.method.equals("getBatteryLevel")) {
                      int batteryLevel = getBatteryLevel();
    
                      if (batteryLevel != -1) {
                        result.success(batteryLevel);
                      } else {
                        result.error("UNAVAILABLE", "Battery level not available.", null);
                      }
                    } else {
                      result.notImplemented();
                    }
                  }
                }
        );
      }
      static const platfrom = const MethodChannel("com.example.batterylevel/battery");
      String _batteryLevel ="电量未知";
    
      Future<Null> _getBatteryLevel() async{
        String batteryLevel;
        try{
          final int result = await platfrom.invokeMethod('getBatteryLevel');
          batteryLevel = "$result %";
        } on PlatformException catch(e){
          batteryLevel="电量获取失败:$e.message";
        }
        setState(() {
          _batteryLevel =_batteryLevel;
        });
      }

    你期待的结果是什么?实际看到的错误信息又是什么?

    2
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    • 抱着月亮睡觉 普通会员 1楼

      "MissingPluginException: Missing plugin flutter" 是 Flutter 中的一个常见错误提示,表示 Flutter 还没有找到对应的插件。在 Flutter 中,需要在项目中添加对应的插件才能正常运行。

      具体来说,需要在 pubspec.yaml 文件中添加相应的依赖项。例如,如果你想要使用一个名为 flutter_colorpicker 的插件,你可以这样做:

      yaml dependencies: flutter_colorpicker: ^0.3.0

      在 pubspec.yaml 文件中添加这个依赖项后,你需要在 dependencies 部分下添加你的插件的 main.dart 文件:

      yaml dependencies: flutter_colorpicker: ^0.3.0

      然后,你可以在你的代码中导入 flutter_colorpicker 服务:

      ```dart import 'package:flutter/material.dart'; import 'package:flutter_colorpicker/flutter_colorpicker.dart';

      void main() => runApp(MyApp()); ```

      现在,你应该可以在你的代码中使用 flutter_colorpicker 服务了。例如:

      ```dart import 'package:flutter/material.dart'; import 'package:flutter_colorpicker/flutter_colorpicker.dart';

      void main() => runApp(MyApp()); ```

      在这个例子中,当用户点击颜色按钮时,就会使用 flutter_colorpicker 插件来获取用户选择的颜色。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部