Skip to main content

analytics_sdk 0.1.0 copy "analytics_sdk: ^0.1.0" to clipboard
analytics_sdk: ^0.1.0 copied to clipboard

通用 Flutter 埋点 SDK,纯 Dart 实现,支持公共参数、离线队列与批量上报。

example/lib/main.dart

import 'package:analytics_sdk/analytics_sdk.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Analytics.init(
    const AnalyticsConfig(
      appId: 'analytics_example',
      serverUrl: '',
      env: AnalyticsEnv.debug,
      enableDebugLog: true,
      superPropertiesProvider: _exampleSuperProperties,
    ),
  );

  runApp(const ExampleApp());
}

Future<Map<String, dynamic>> _exampleSuperProperties() async {
  return {'channel': 'example'};
}

/// 路由常量,与 [routerPages] 中的 [GetPage.name] 保持一致。
class AppRoutes {
  static const homePage = '/';
  static const detailPage = '/detail';
}

/// GetX 路由表(与业务项目 routerPages 形式一致)。
final routerPages = [
  GetPage(
    name: AppRoutes.homePage,
    page: () => const HomePage(),
    transition: Transition.native,
  ),
  GetPage(
    name: AppRoutes.detailPage,
    page: () => const DetailPage(),
    transition: Transition.native,
  ),
];

class ExampleApp extends StatefulWidget {
  const ExampleApp({super.key});

  @override
  State<ExampleApp> createState() => _ExampleAppState();
}

class _ExampleAppState extends State<ExampleApp> with AnalyticsLifecycleMixin {
  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      initialRoute: AppRoutes.homePage,
      getPages: routerPages,
      routingCallback: Analytics.routingCallback(),
    );
  }
}

class HomePage extends StatelessWidget {
  const HomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Analytics Example')),
      body: ListView(
        padding: const EdgeInsets.all(16),
        children: [
          const Text('向下滚动,观察 Banner 可见/不可见事件'),
          Analytics.visible(
            elementName: 'home_banner',
            properties: const {'position': 'list_center'},
            child: Container(
              width: double.infinity,
              padding: const EdgeInsets.all(16),
              color: Colors.blue.shade50,
              child: const Text('Banner(Analytics.visible 自动采集)'),
            ),
          ),
          const SizedBox(height: 24),
          ElevatedButton(
            onPressed: () {
              Analytics.track(
                'demo_button_click',
                properties: const {'button': 'track_event'},
              );
            },
            child: const Text('Track Event(点击中 track)'),
          ),
          const SizedBox(height: 12),
          ElevatedButton(
            onPressed: () {
              Analytics.identify(userId: 'demo_user_001');
            },
            child: const Text('Identify User'),
          ),
          const SizedBox(height: 12),
          ElevatedButton(
            onPressed: () => Get.toNamed(AppRoutes.detailPage),
            child: const Text('Open Detail Page'),
          ),
          const SizedBox(height: 600),
        ],
      ),
    );
  }
}

class DetailPage extends StatelessWidget {
  const DetailPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Detail')),
      body: Center(
        child: ElevatedButton(
          onPressed: Get.back,
          child: const Text('Back'),
        ),
      ),
    );
  }
}
1
likes
125
points
50
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

通用 Flutter 埋点 SDK,纯 Dart 实现,支持公共参数、离线队列与批量上报。

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

connectivity_plus, device_info_plus, dio, flutter, get, package_info_plus, path, path_provider, plugin_platform_interface, shared_preferences, sqflite, uuid

More

Packages that depend on analytics_sdk

Packages that implement analytics_sdk