You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用permission_handler 11.3.0时遇MissingPluginException问题求助

关于permission_handler 11.3.0的MissingPluginException异常解决求助

开发获取位置权限的Demo应用时,使用permission_handler 11.3.0版本触发了MissingPluginException异常,异常截图如下:

MissingPluginException异常截图

代码实现

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

void main() {
  runApp(const MyApp());
}

const platform = MethodChannel('your_channel_name');

Future<void> callNativeMethod() async {
  try {
     await platform.invokeMethod('nativeMethod');
  } catch (e) {
    print('Error calling native method: $e');
  }
}

class MyApp extends StatelessWidget {
 const MyApp({super.key});

 @override
 Widget build(BuildContext context) {
    return MaterialApp(
       title: 'Text and Button Example',
       theme: ThemeData(
              primarySwatch: Colors.blue,
       ),
       home: MyHomePage(),
   );
   }
  }

 class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
  final permissionLocation = Permission.location;

  return Scaffold(
      appBar: AppBar(
      title: Text('Demo App'),
      ),
      body: Center(
          child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
                  Text(
                      'Hello, Flutter!',
                 style: TextStyle(fontSize: 24),
            ),
         SizedBox(height: 20),
        ElevatedButton(
          onPressed: () async {
            final status = await permissionLocation.status ;
            if (status.isGranted) {
              callNativeMethod();
              print('Opening Location permission...');
            } else {
              // Permission denied
              print('Location permission denied.');
            }

          },
          child: Text('Press Me!'),
        ),
      ],
    ),
  ),
);
  }
  }

已配置内容

在AndroidManifest文件中添加了位置权限:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

已尝试的解决操作

  • 清理项目文件
  • 执行flutter clean命令
  • 重新运行应用
  • 升级Flutter版本

问题仍未解决,当前环境依赖:

environment: 
  sdk: '>=3.2.3 <4.0.0'
permission_handler: ^11.3.0

解决建议

  • 检查自定义MethodChannel实现:代码中调用了自定义MethodChannel('your_channel_name')的nativeMethod,需确保原生端(Android/iOS)已正确注册该通道并实现对应方法,通道名和方法名必须与Flutter端完全一致,拼写、大小写均不能出错。
  • 重新构建依赖与项目:执行flutter pub get后,删除android/build和ios/Pods(iOS端)文件夹,再重新运行flutter run,避免缓存导致的插件未注册问题。
  • 确认插件与Flutter版本兼容性:使用flutter --version查看当前Flutter版本,若存在隐性兼容问题,可尝试将permission_handler降级至11.0.0或升级至最新稳定版。
  • 检查Android原生配置:确认Android项目的minSdkVersion不低于23(permission_handler 11.x版本要求),同时检查build.gradle中是否正确引入插件依赖。
  • 避免热重载/热重启:添加新插件或修改原生配置后,必须完全停止应用进程,再重新运行,热重载无法加载新注册的插件。
  • 验证permission_handler注册:若异常出现在权限请求阶段,可尝试单独调用Permission.location.status测试,确认插件是否正确集成,必要时重新执行flutter pub add permission_handler重新安装插件。

内容的提问来源于stack exchange,提问作者Mohit Lakhanpal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 04:57:36