最低支持的版本:1.4.0
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; ... class _MyAppState extends State<MyApp> { @override void initState() { RangersApplogAutoTrack().config(RangersApplogAutoTrackConfig( pageConfigs: [ RangersApplogAutoTrackPageConfig<Home>( pageID: 'home-id', pageTitle: 'Home', pagePath: '/home-custom', ignore: false, ), RangersApplogAutoTrackPageConfig<Page2>( pageID: 'page2-id', ), RangersApplogAutoTrackPageConfig<Page3>( pageID: 'page3-id', ), ], ignoreElementKeys: [], )).enablePageLeave().enableLog().enable(); super.initState(); } ... @override Widget build(BuildContext context) { return MaterialApp( navigatorObservers: RangersApplogNavigationObserver.wrap([]), initialRoute: '/', routes: { '/': ((context) => Home()), '/page2': ((context) => Page2()), '/page3': ((context) => Page3()), }, ); } }
全埋点中 pageview,pageleave 是通过 NavigatorObserver 采集的,我们可以直接在 MaterialApp 中配置 RangersApplogNavigationObserver:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; ... @override Widget build(BuildContext context) { return MaterialApp( navigatorObservers: [RangersApplogNavigationObserver()], ... ); } ...
也可以在已有的 navigatorObservers 列表中,通过 RangersApplogNavigationObserver.wrap 包裹:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; ... @override Widget build(BuildContext context) { return MaterialApp( navigatorObservers: RangersApplogNavigationObserver.wrap([]), ... ); } ...
在 App 的 initState()
中启用全埋点:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; ... @override void initState() { RangersApplogAutoTrack().enable(); super.initState(); } ...
全埋点默认关闭,可通过以下方法打开:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; RangersApplogAutoTrack().enable();
关闭全埋点:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; RangersApplogAutoTrack().disable();
pageview 默认开启,可用以下方法关闭:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; RangersApplogAutoTrack().disablePageView();
开启 pageview:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; RangersApplogAutoTrack().enablePageView();
pageleave 默认关闭,可用以下方法开启(入参为 true,或者不传):
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; RangersApplogAutoTrack().enablePageLeave();
关闭 pageleave:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; RangersApplogAutoTrack().disablePageLeave();
click 默认开启,可用以下方法关闭:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; RangersApplogAutoTrack().disableClick();
开启 click:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; RangersApplogAutoTrack().enableClick();
我们通过 Key 来设置元素的自定义 ID,自定义 ID 在 click 埋点中会放在 element_manual_key
字段中一起上报,值是 Key 的 toString()
方法返回值,可以直接使用 RangersApplogElementKey
。
触发 click 埋点的元素目前支持以下组件:
对于支持列表以外的组件,则无法通过 Key 设置自定义 ID,click 埋点会触发在组件内部的 GestureDetector 上。
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; ... ListTile( key: RangersApplogElementKey('custom-key'), title: Text("Click Me"), onTap: () {} ) ...
如果不希望统计某些元素的 click 埋点,可以通过以下办法忽略 click 元素:
通过 RangersApplogElementKey 设置 ignore:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; ... ListTile( key: RangersApplogElementKey('custom-key', ignore: true), title: Text("Click Me"), onTap: () {}, ) ...
通过 ignoreElementKeys()
方法指定元素的 key:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; ... final customKey = RangersApplogElementKey('custom-key'); ... RangersApplogAutoTrack().ignoreElementKeys([customKey]); ... ListTile( key: customKey, title: Text("Click Me"), onTap: () {}, ) ...
通过 ignoreElementStringKeys()
方法指定元素 key 的 string 值,只要与 key 的 toString()
返回值匹配即可生效,这里建议使用 RangersApplogElementKey:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; ... RangersApplogAutoTrack().ignoreElementStringKeys(['custom-key']); ... ListTile( key: RangersApplogElementKey('custom-key'), title: Text("Click Me"), onTap: () {}, ) ...
日志默认关闭,可通过以下方式开启:
import 'package:rangers_applog_flutter_plugin/autotrack.dart'; RangersApplogAutoTrack().enableLog();
page_manual_key
字段上报。page_title
字段上报。page_path
字段上报。toString()
返回值相同。import 'package:rangers_applog_flutter_plugin/autotrack.dart'; RangersApplogAutoTrack().config(RangersApplogAutoTrackConfig( pageConfigs: [ RangersApplogAutoTrackPageConfig<Home>( pageID: 'home-id', pageTitle: 'Home', pagePath: '/home-custom', ignore: false, ), RangersApplogAutoTrackPageConfig<Page2>( pageID: 'page2-id', ), RangersApplogAutoTrackPageConfig<Page3>( pageID: 'page3-id', ), ], ignoreElementKeys: [], ignoreElementStringKeys: [], enablePageView: true, enablePageLeave: false, enableClick: true, ));