Аудиоплееры Flutter 3.0.1 и flutter_local_notifications: ^13.0.0 нужна помощь с новым синтаксисом

Привет, я сделал проект флаттера, и кажется, что пакеты pubspec обновляются новым синтаксисом каждую секунду с нулевой документацией о заменах. У меня есть некоторый код, я в основном пытаюсь создать будильник, где в уведомлении я хочу, чтобы звук воспроизводился, звучит довольно просто, но я просто не могу заставить его работать. Я знаю, что это как-то связано с тем, что мой синтаксис применим только к старой версии audiplayers и onnotification, некоторые из вещей, которые я мог найти в stackoverflow/google, но другие вещи мне просто невозможно понять, и кажется, что я просто ходить по кругу. Я, конечно, включил правильную версию и пакеты в свой pubspec.

вот весь код, с которым у меня проблемы с выделенными строками, и я получаю свою ошибку.

для onnotification я получаю «именованный параметр onSelectNotification» не определен. (Документация) Попробуйте исправить имя на имя существующего именованного параметра или определить именованный параметр с именем «onSelectNotification».

для части аудиоплеера я получаю «Это выражение имеет тип« пустота », поэтому его значение нельзя использовать. (Документация) Попробуйте проверить, используете ли вы правильный API; может быть функция или вызов, который возвращает void, которого вы не ожидали. Также проверьте параметры типа и переменные, которые также могут быть недействительными».

          Alarm(this.time, this.description, this.vibration) {
     initializeTimeZones(); // initialize the time zone database
     const androidInitializationSettings =
     AndroidInitializationSettings('launcher_icon');
     const DarwinInitializationSettings initializationSettingsIOS =
     DarwinInitializationSettings(
    onDidReceiveLocalNotification: onDidReceiveLocalNotification);
     const InitializationSettings initializationSettings =
     InitializationSettings(
    android: androidInitializationSettings,
    iOS: initializationSettingsIOS);
     flutterLocalNotificationsPlugin =           
    FlutterLocalNotificationsPlugin();
    flutterLocalNotificationsPlugin.initialize(initializationSettings,
    onSelectNotification: onSelectNotification);
   }


for the audio part 
 await playAudio();

  // Stop the audio after 30 seconds
  await Future.delayed(Duration(seconds: 30));
  await stopAudio();
}

Future<void> playAudio() async {
  AudioPlayer audioPlayer = AudioPlayer();
  String audioPath = "assets/audio/sound_alarm.mp3";

  // Load the audio file
  await audioPlayer.play(audioPath, isLocal: true);

  // Print a message when the audio file is playing
   print("Audio file is playing");
 }

 Future<void> stopAudio() async {
   AudioPlayer audioPlayer = AudioPlayer();
   await audioPlayer.stop();

   // Print a message when the audio file is stopped
   print("Audio file is stopped");
 }`
 ```

мой звук можно найти как в исходной папке, так и в активах>аудио>sound_alarm.mp3

1 ответ

Каждый раз, когда пакет обновляется новой основной версией, вы можете ожидать, что есть критические изменения, если вы хотите остаться на старой версии, вы должны определить это в своем файле pubspec, например, если вы хотите остаться на0.20.0похоже, что вы находитесь здесь, вы должны добавить^0.20.0. Это гарантирует, что вы случайно не наткнетесь выше1.0.0.

На ваш вопрос:

обновляются с новым синтаксисом каждую секунду с нулевой документацией замен

На самом деле это задокументировано, просто следуйте руководству по миграции здесь . Проблема, с которой вы столкнулись, заключается в том, что вы используете строки напрямую вместо новыхSourceсинтаксис, в этом случае вы должны использоватьAssetSource.

Здесь вы можете прочитать об изменениях, которые вам нужно сделать, чтобы перейти на новую версию flutter_local_notifications.

Другие вопросы по тегам