Flutter'da "MissingPluginException(No implementation found for method show on channel dexterous.com/flutter/local_notifications)" hatası.

11.10.2020 14:50

Flutter'da "MissingPluginException(No implementation found for method show on channel dexterous.com/flutter/local_notifications)" hatası.

Flutter'da firebase cloud messaging kullanırken, bildirimlerimi özelleştirmek için kullanmak istediğim flutter local notifications paketini kurduktan sonra bu hata ile karşılaştım. Hata, uygulama kapalıyken bildirim almak istediğimde gerçekleşiyordu.

Çözüm için bir çok yöntemi denedim fakat çözüme ulaşamadım. Daha sonra ise gördüğüm bir çözümde daha önce gördüğüm, fakat eklemeye gerek duymadığım bir paketi ekleyerek denemek istedim ve sorunum çözüldü.

Sorunu çözmek için uygulamanız gereken adımlar aşağıdaki gibidir.

1. Öncelikle pubspec.yaml dosyanıza path_provider paketini eklemeniz gerekiyor.

2. Daha sonra ise oluşturmuş olduğunuz Application.java dosyanızı aşağıdaki şekilde güncellemeniz gerekiyor.

package tr.com.yavuzceliker.test; // Sizin uygulama paket adınız.

import io.flutter.app.FlutterApplication;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService;
import io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin;

public class Application extends FlutterApplication implements PluginRegistrantCallback {
@Override
public void onCreate() {
super.onCreate();
FlutterFirebaseMessagingService.setPluginRegistrant(this);
}

@Override
public void registerWith(PluginRegistry registry) {

io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin.registerWith(registry.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"));
io.flutter.plugins.pathprovider.PathProviderPlugin.registerWith(registry.registrarFor("io.flutter.plugins.pathprovider.PathProviderPlugin"));
com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin.registerWith(registry.registrarFor("com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin"));
}
}
3. AndroidManifest.xml dosyasında Activity etiketi içerisine aşağıdaki komutun yazılı olduğundan emin olun.

<intent-filter>
<action android:name="FLUTTER_NOTIFICATION_CLICK" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>

4. AndroidManifest.xml dosyasında Activity etiketi bittikten sonra aşağıdaki komutun yazılı olduğundan emin olun.

<receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver"></receiver>
<receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>

5. Gerekli güncellemeyi yaptıktan sonra flutter clean komutunu uyguladıktan sonra projenizi yeniden başlatabilirsiniz.