我按照此处给出的步骤进行操作 添加后
import 'package:mixpanel_flutter/mixpanel_flutter.dart';
...
class _YourClassState extends State<YourClass> {
Mixpanel mixpanel;
@override
void initState() {
super.initState();
initMixpanel();
}
Future<void> initMixpanel() async {
mixpanel = await Mixpanel.init("Your Mixpanel Token", optOutTrackingDefault: false);
}
...
终端给我一个错误提示
Field 'mixpanel' should be initialized because its type 'Mixpanel' doesn't allow null.
Mixpannel mixpannel;
failed to compile application
我已插入 mixpannel 令牌。 在 Mixpannel 中,我启动了一个测试项目,为所有事件添加了事件图表。
您检查过 mixpanel-flutter
给出的示例吗您可以为其创建实例:
class MixpanelManager {
static Mixpanel? _instance;
static Future<Mixpanel> init() async {
if (_instance == null) {
_instance = await Mixpanel.init("YOUR_PROJECT_TOKEN",
optOutTrackingDefault: false);
}
return _instance!;
}
}
你也可以同样使用(在其他课程中):
late final Mixpanel _mixpanel;
@override
initState() {
super.initState();
_initMixpanel();
}
Future<void> _initMixpanel() async {
_mixpanel = await MixpanelManager.init();
}
查看示例了解更多信息。
正如 Pratik Butani 所说,我们可以创建一个混合面板实例,然后在 main.dart 文件中初始化它,并在整个应用程序中使用它。
class MixpanelManager {
static Mixpanel? _instance;
static String projectToken = "your_token";
static Future<Mixpanel> initMixpanel() async {
if (_instance == null) {
_instance = await Mixpanel.init(projectToken,
trackAutomaticEvents: true);
}
return _instance!;
}
static Mixpanel get instance {
assert(_instance != null, "Mixpanel must be
initialized first");
return _instance!;
}
}
在上面的代码中,你可以看到我为实例做了一个get方法。 并在 main.dart 文件中初始化它
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await MixpanelManager.initMixpanel();
runApp(YourApp());
}
然后您可以在任何地方使用这个单个实例,如下所示。
MixpanelManager.instance.track('log in:
${session.user.email}',
properties: {"user": "${session.user.email}",
"login": "true"});
//or without properties
MixpanelManager.instance.track('going to Accounts
Screen');