[FIXED] Wie höre ich global von einem Flatterblock aus?

Ausgabe

Ich implementiere Benachrichtigungen in meiner App.

Ich habe ein Cubit, das Zustände ausgibt, wenn die App eine neue Benachrichtigung erhält.

Das ist mein wichtigstes:

class MyApp extends StatelessWidget {

 @override
  Widget build(BuildContext context) {
    return MultiBlocProvider(
        providers: [
          ...
          BlocProvider<NotificationCubit>(
              create: (context) => sl<NotificationCubit>())
        ],
        child: MaterialApp(
          home: Splash(),
          onGenerateRoute: Routes.sailor.generator(),
          navigatorKey: Routes.sailor.navigatorKey,
        ));
  }
}

Ich verwende get_itfür Abhängigkeitsinjektion.

BlocBuilder<NotificationCubit, NotificationState>Ich habe versucht, zu meinem Startbildschirm hinzuzufügen , und es funktioniert jedes Mal, wenn der Benutzer die Benachrichtigung erhält.

Mein Ziel ist es, die Benachrichtigung global zu behandeln. Ich habe versucht, einen Listener hinzuzufügen, wenn ich die Elle erstelle, aber das funktioniert nicht:

BlocProvider<NotificationCubit>(
          create: (context) => sl<NotificationCubit>()..listen((state) {
              if (state is NotificationReceived){
                  print("Notificaton received");
              }
           }))

Lösung

Um einen Block global anzuhören, müssen Sie ihn oben platzierenMaterialApp

return MultiBlocProvider(
        providers: [
          ...
          BlocProvider<NotificationCubit>(
              create: (context) => NotificationCubit()),
        ],
        child: Builder(
            builder: (context) =>
                BlocListener<NotificationCubit, NotificationState>(
                  listener: (context, state) {
                    ...
                  },
                  child: MaterialApp(
                  ...
                  )
        )),
);

Denken Sie daran, nach der Verwendung Buildereine andere zustandslose Klasse zu verwenden oder zu erstellenBlocProvider


Beantwortet von –
Matteo Antolini


Antwort geprüft von –
Pedro (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like