如何集中Flutter中的所有点击事件以从单个位置处理分析事件

btqmn9zl  于 2023-08-07  发布在  Flutter
关注(0)|答案(1)|浏览(107)

该死的
我需要一些建议,以实现集中所有点击事件在Flutter。实际上,我正在开发一个应用程序,其中我集成了Google Analytics事件,因此当尝试在不同屏幕上捕获数据时,单击事件在每个屏幕上,我都调用Analytic事件,因此在每次单击时调用/编写这些方法是否有任何方法来集中此逻辑。
提前感谢您的建议
我想集中每个点击事件的逻辑

8yoxcaq7

8yoxcaq71#

单击发生在应用程序中完全不同的位置。你在那里处理它们。主要思想,你应该使用某种状态管理:继承Widget/provider/bloc/riverpod等因此,您应该有一个状态管理类示例,它将负责调用分析事件,并将在所有应用程序中可用。
例如,对于Cubit,每一个需要单击的地方,您将执行如下操作:

onTap: () {
  BlocProvider.of<AlalyticsCubit>(context).sendEvent(
    eventType, someDataYourAnalyticsNeed,
  );
}

字符串
和你的cubit(选择任意- inheritedWidget/provider/bloc/reverpod):

class AlalyticsCubit extends Cubit<AlalyticsState> {
   AlalyticsCubit(this.analytic) : super(InitialAlalyticsState();

   final YourGoogleAnalytic analytic;

   void sendEvent(
         EventType eventType, 
         Map<String, dynamic> someDataYourAnalyticsNeed,
       ) {
     analytic.sendEvent(eventType, someDataYourAnalyticsNeed);
  }
}


开始时:

@override
  Widget build(BuildContext context) => BlocProvider(
      create: (_) => AlalyticsCubit(YourGoogleAnalytic()),
      child: MaterialApp(
          debugShowCheckedModeBanner: false,
          theme: AppTheme.themeData(),
          onGenerateRoute: _routeBuilder.onGenerateRoute,
        );

相关问题