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

Flutter使用android_alarm_manager_plus回调时触发assets_audio_player MissingPluginException

报错根因

该报错核心源于android_alarm_manager_plus的回调函数运行在独立的Dart Isolate环境中,此环境未继承主Isolate的原生插件通道注册信息,因此调用assets_audio_player的原生交互方法时无法找到对应实现,触发MissingPluginException。

修复步骤
  • 步骤1:在报警回调函数开头手动完成插件注册
    在回调函数内先初始化Flutter绑定,再调用自动生成的插件注册类,将所有原生插件注册到当前Isolate即可。
  • 步骤2:补充Android端权限配置(针对Android 12及以上系统)
    在android/app/src/main/AndroidManifest.xml的manifest标签下添加精确闹钟权限:
    <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
    
  • 步骤3:清理缓存重新构建
    依次执行以下命令清除历史构建缓存,再重新安装应用:
    flutter clean
    flutter pub get
    
修复后完整代码示例
import 'package:android_alarm_manager_plus/android_alarm_manager_plus.dart';
import 'package:assets_audio_player/assets_audio_player.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
// 导入自动生成的插件注册类,Flutter编译时自动生成无需手动创建
import 'generated_plugin_registrant.dart';

void printHello() async{
  // 新增:初始化当前Isolate的Flutter绑定
  WidgetsFlutterBinding.ensureInitialized();
  // 新增:注册所有原生插件到当前Isolate
  GeneratedPluginRegistrant.registerWith(WidgetsFlutterBinding.instance);

  final DateTime now = DateTime.now();
  print("[$now] Hello, world! function='$printHello'");

  ///play audio
  AssetsAudioPlayer assetsAudioPlayer =
  AssetsAudioPlayer.withId("App_ID");

  var audio = Audio(
    "assets/audios/music.mp3",
  );

  assetsAudioPlayer.open(audio,
      autoStart: true,
      showNotification: true,
  );
}


main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await AndroidAlarmManager.initialize();
  runApp(MyApp());
  await AndroidAlarmManager.oneShotAt(DateTime.now().add(Duration(seconds: 15)), 123456789, printHello);
}


class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Welcome to Flutter',
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Welcome to Flutter'),
        ),
        body: const Center(
          child: Text('Hello World'),
        ),
      ),
    );
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:45:02