如何从颤振块全局收听?

时间:2021-02-22 18:43:35

标签: flutter flutter-bloc

我正在我的应用上实施通知。

我有一个 Cubit,它会在应用收到新通知时发出状态。

这是我的主要内容:

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,
        ));
  }
}

我使用 get_it 进行依赖注入。

我尝试将 BlocBuilder<NotificationCubit, NotificationState> 添加到我的主屏幕,每次用户收到通知时它都会起作用。

我的目标是全局处理通知。我在创建 cubit 时尝试添加一个侦听器,但这不起作用:

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

1 个答案:

答案 0 :(得分:0)

我听说在 bloc 中使用 get_it 不是一个好主意...

特别是在您的情况下,您为整个小部件树提供了一个块。尝试在不使用 get_it 的情况下提供 bloc,因为无论如何您都可以在整个应用程序中访问它。

这里有一个有趣的视频: https://youtu.be/THCkkQ-V1-8?t=6393

相关问题