Аудиоплееры 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.