Flutter插件se_flutter_sdk_test的使用方法
Flutter插件se_flutter_sdk_test的使用方法
se_flutter_sdk_test
这是一个新的 Flutter 插件项目。
获取开始
这个项目是一个起点,用于创建一个 Flutter 插件包,这是一种专门包含 Android 和/或 iOS 平台特定实现代码的包。
要开始 Flutter 开发,请查看在线文档,它提供了教程、示例、移动开发指南以及完整的 API 参考。
示例代码
以下是 main.dart
文件的完整示例代码:
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:se_flutter_sdk_test/solar_engine_core/solar_engine.dart';
import 'package:se_flutter_sdk_test/solar_engine_core/solar_engine_config.dart';
import 'package:se_flutter_sdk_test/solar_engine_core/solar_engine_event_data.dart';
import 'package:se_flutter_sdk_test/solar_engine_remote_config/remote_config.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// 这个小部件是你的应用程序的根。
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'SolarEngine Demo'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
typedef ClickCallbackString = void Function(String result);
typedef ClickCallbackString2 = void Function(String result1, String result2);
typedef ClickCallback = void Function();
class SETextButtonItem extends StatelessWidget {
final String title;
final String desc;
final ClickCallbackString tapAction;
var _titleTxt = new TextEditingController();
SETextButtonItem(this.title, this.desc, this.tapAction);
[@override](/user/override)
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.all(12),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
TextField(
controller: _titleTxt, // 把 TextEditingController 对象应用到 TextField 上
decoration: InputDecoration(
filled: true,
fillColor: Colors.grey[200],
hintText: desc,
),
),
SizedBox(height: 8),
TextButton(
onPressed: () {
tapAction!(_titleTxt.text);
},
autofocus: true,
child: Text(
title,
style: TextStyle(fontSize: 18.0),
),
style: ButtonStyle(
backgroundColor: MaterialStateProperty.resolveWith((states) {
return Colors.blue[200];
}),
padding: MaterialStateProperty.all(
EdgeInsets.only(left: 50, right: 50)),
),
),
],
),
);
}
}
class SEText2ButtonItem extends StatelessWidget {
final String title;
final String desc1;
final String desc2;
final ClickCallbackString2 tapAction;
var _titleTxt1 = new TextEditingController();
var _titleTxt2 = new TextEditingController();
SEText2ButtonItem(this.title, this.desc1, this.desc2, this.tapAction);
[@override](/user/override)
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.all(12),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(
child: TextField(
controller: _titleTxt1,
decoration: InputDecoration(
filled: true,
fillColor: Colors.grey[200],
hintText: desc1,
),
),
),
SizedBox(width: 8),
Expanded(
child: TextField(
controller: _titleTxt2,
decoration: InputDecoration(
filled: true,
fillColor: Colors.grey[200],
hintText: desc2,
),
),
),
],
),
SizedBox(height: 8),
TextButton(
onPressed: () {
tapAction!(_titleTxt1.text, _titleTxt2.text);
},
autofocus: true,
child: Text(
title,
style: TextStyle(fontSize: 18.0),
),
style: ButtonStyle(
backgroundColor: MaterialStateProperty.resolveWith((states) {
return Colors.blue[200];
}),
padding: MaterialStateProperty.all(
EdgeInsets.only(left: 50, right: 50)),
),
),
],
),
);
}
}
class SEButtonItem extends StatelessWidget {
final String title;
final ClickCallback tapAction;
SEButtonItem(this.title, this.tapAction);
[@override](/user/override)
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.all(12),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
TextButton(
onPressed: () {
tapAction!();
},
autofocus: true,
child: Text(
title,
style: TextStyle(fontSize: 18.0),
),
style: ButtonStyle(
backgroundColor: MaterialStateProperty.resolveWith((states) {
return Colors.blue[200];
}),
padding: MaterialStateProperty.all(
EdgeInsets.only(left: 50, right: 50)),
),
),
],
),
);
}
}
class _MyHomePageState extends State<MyHomePage> {
void toast(String text) {
final snackBar = SnackBar(content: Text(text));
ScaffoldMessenger.of(context).showSnackBar(snackBar);
}
late final String timerEventStr;
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Center(
child: Padding(
padding: EdgeInsets.only(left: 0, right: 0),
child: CustomScrollView(
shrinkWrap: true,
slivers: <Widget>[
SliverPadding(
padding: const EdgeInsets.all(0),
sliver: SliverList(
delegate: SliverChildListDelegate(
<Widget>[
SEButtonItem("Init SDK old", () {
String appkey = "4c3e7d87ebac99cd";
String userId = "1fca0a4b93fa7170";
SolarEngine.preInitialize(appkey);
SolarEngineConfig config = SolarEngineConfig();
config.logEnabled = true;
config.disableRecordLog = true;
SERemoteConfigData rcConfig = SERemoteConfigData();
rcConfig.enable = true;
rcConfig.logEnabled = true;
rcConfig.customIDProperties = {
"key": "customID",
"value": "androidID"
};
rcConfig.customIDEventProperties = {
"key": "customEventID",
"value": "_appStart"
};
rcConfig.customIDUserProperties = {
"key": "customUserID",
"value": "Topic"
};
config.remoteConfigData = rcConfig;
config.onAttributionSuccess = (data) {
print("onAttributionSuccess----");
print(data);
toast(data!);
};
config.onAttributionFail = (code) {
print("onAttributionFail----");
print(code);
toast("onAttributionFail" + code.toString());
};
SolarEngine.initialize(appkey, userId, config);
}),
SEButtonItem("Init SDK new", () {
String appkey = "4c3e7d87ebac99cd";
String userId = "1fca0a4b93fa7170";
SolarEngine.preInitialize(appkey);
SolarEngineConfig config = SolarEngineConfig();
config.logEnabled = true;
config.disableRecordLog = true;
SERemoteConfigData rcConfig = SERemoteConfigData();
rcConfig.enable = true;
rcConfig.logEnabled = true;
rcConfig.customIDProperties = {
"key": "customID",
"value": "androidID"
};
rcConfig.customIDEventProperties = {
"key": "customEventID",
"value": "_appStart"
};
rcConfig.customIDUserProperties = {
"key": "customUserID",
"value": "Topic"
};
config.remoteConfigData = rcConfig;
config.onAttributionSuccess = (data) {
print("onAttributionSuccess----");
print(data);
toast(data!);
};
config.onAttributionFail = (code) {
print("onAttributionFail----");
print(code);
toast("onAttributionFail" + code.toString());
};
SolarEngine.initializeWithCallbacK(appkey, config, (code) {
print("initializeWithCallbacK----");
print(code);
});
}),
SEButtonItem("report", () {
SolarEngine.reportEventImmediately();
}),
SETextButtonItem("asyncFetchRemoteConfig", "key", (key) {
SERemoteConfig().asyncFetchRemoteConfig(key, (result) {
print("在线参数回调-----");
print(result);
toast("result=" + result!);
});
}),
SETextButtonItem("setRemoteDefaultConfig", "properties",
(properties) async {
List<dynamic> data = [
{"name": "key1", "type": 2, "value": 1},
{"name": "key2", "type": 2, "value": 0}
];
SERemoteConfig().setRemoteDefaultConfig(data);
}),
SETextButtonItem(
"setRemoteConfigUserProperties", "properties",
(properties) {
if (properties.isNotEmpty) {
Map<String, dynamic> userProperties =
json.decode(properties);
SERemoteConfig()
.setRemoteConfigUserProperties(userProperties);
return;
}
Map<String, dynamic> userProperties = {};
userProperties['name'] = 'liming';
userProperties['age'] = "20";
SERemoteConfig()
.setRemoteConfigUserProperties(userProperties);
}),
SETextButtonItem(
"setRemoteConfigEventProperties", "properties",
(properties) {
if (properties.isNotEmpty) {
Map<String, dynamic> eventProperties =
json.decode(properties);
SERemoteConfig()
.setRemoteConfigEventProperties(eventProperties);
return;
}
Map<String, dynamic> eventProperties = {};
eventProperties['event'] = 'end';
eventProperties['pro'] = "max";
SERemoteConfig()
.setRemoteConfigEventProperties(eventProperties);
}),
SEButtonItem("fastFetchRemoteConfigAll", () async {
Map? result =
await SERemoteConfig().fastFetchRemoteConfigAll();
toast("result=${result.toString()}");
}),
SEButtonItem("asyncFetchRemoteConfigAll", () {
SERemoteConfig().asyncFetchRemoteConfigAll((result) {
print("在线参数回调-----");
print(result);
toast("result=" + result.toString());
});
}),
SETextButtonItem("asyncFetchRemoteConfig", "key", (key) {
SERemoteConfig().asyncFetchRemoteConfig(key, (result) {
print("在线参数回调-----");
print(result);
toast("result=" + result!);
});
}),
SETextButtonItem("fastFetchRemoteConfig", "key",
(key) async {
String? result =
await SERemoteConfig().fastFetchRemoteConfig(key);
toast("result=${result!}");
}),
SEText2ButtonItem(
"setPresetEventProperties",
"PresetEventType",
"properties", (presetEventType, propertiesString) {
if (presetEventType.isNotEmpty &&
propertiesString.isNotEmpty) {
Map<String, dynamic> customProperties =
json.decode(propertiesString);
if (presetEventType == '0') {
SolarEngine.setPresetEventProperties(
PresetEventType.AppInstall, customProperties);
} else if (presetEventType == '1') {
SolarEngine.setPresetEventProperties(
PresetEventType.AppStart, customProperties);
} else if (presetEventType == '2') {
SolarEngine.setPresetEventProperties(
PresetEventType.AppEnd, customProperties);
} else {
SolarEngine.setPresetEventProperties(
PresetEventType.All, customProperties);
}
return;
}
Map<String, dynamic> customProperties = {};
customProperties['kind'] = 'setPresetEventProperties';
customProperties['name'] = "Jim";
if (presetEventType == '0') {
SolarEngine.setPresetEventProperties(
PresetEventType.AppInstall, customProperties);
} else if (presetEventType == '1') {
SolarEngine.setPresetEventProperties(
PresetEventType.AppStart, customProperties);
} else if (presetEventType == '2') {
SolarEngine.setPresetEventProperties(
PresetEventType.AppEnd, customProperties);
} else {
SolarEngine.setPresetEventProperties(
PresetEventType.All, customProperties);
}
}),
SETextButtonItem("setVisitorID", "visitId", (result) {
SolarEngine.setVisitorID(result);
}),
SEButtonItem("updateConversionValue", () async {
var error = await SolarEngine.updateConversionValueWithErrorCallback(0);
print("sss-updateConversionValueWithErrorCallback =${error}");
}),
SETextButtonItem("setAccountID", "accountID", (result) {
SolarEngine.login(result);
}),
SEButtonItem("updateConversionValueSkan4", () async {
var error = await SolarEngine.updateConversionValueWithErrorCallbackSkad4(0, "", false);
print("sss-updateConversionValueWithErrorCallback =${error}");
}),
SEButtonItem("logout", () {
SolarEngine.logout();
}),
SEButtonItem("getPresetProperties", () async {
var properties = await SolarEngine.getPresetProperties();
toast("properties=${properties!}");
}),
SEButtonItem("getDistinctId", () async {
var distinctId = await SolarEngine.getDistinctId();
toast("distinctId=${distinctId!}");
}),
SEButtonItem("getAttribution", () async {
var getAttribution = await SolarEngine.getAttribution();
toast("getAttribution=${getAttribution!}");
}),
SETextButtonItem("setChannel", "setChannel", (result) {
SolarEngine.setChannel(result);
}),
SETextButtonItem("setGDPRArea", "setGDPRArea", (result) {
// bool setGDPRArea = bool.parse(result);
// SolarEngine.setGDPRArea(setGDPRArea);
}),
SETextButtonItem("setSuperProperties", "properties",
(propertiesString) {
if (propertiesString.isNotEmpty) {
Map<String, dynamic> properties =
json.decode(propertiesString);
SolarEngine.setSuperProperties(properties);
return;
}
Map<String, dynamic> properties = {};
properties['key1'] = 'String';
properties['key2'] = 2;
properties['key3'] = false;
properties['key4'] = 2.0;
properties['key5'] = 202309110902;
properties['key6'] = 2018.99;
Map<String, dynamic> jsonObject = {
"name": "仙尊",
"age": 30,
"address": {"street": "奥林匹克公园", "city": "beijing"}
};
properties['key7'] = jsonObject;
List<dynamic> jsonArray = ["小丑侧斩", "小丑换位", "英雄碎片"];
properties['key8'] = jsonArray;
SolarEngine.setSuperProperties(properties);
}),
SETextButtonItem("unsetSuperProperty", "key", (key) {
SolarEngine.unsetSuperProperty(key);
}),
SEButtonItem("clearSuperProperties", () {
SolarEngine.clearSuperProperties();
}),
SEText2ButtonItem(
"trackCustomEventWithPreEventData", "eventName", "properties",
(eventName, propertiesString) {
SECustomEventData customEventData = SECustomEventData();
customEventData.customEventName = "OpenAPP";
Map<String, dynamic> customProperties = {};
customProperties['time'] = '2020-10-10';
customProperties['data'] = "hello word!";
customEventData.customProperties = customProperties;
SEPreEventData sePreEventData = SEPreEventData();
Map<String, dynamic> preProperties = {};
preProperties['_currency_type'] = 'USD';
preProperties['_pay_amount'] = 10;
sePreEventData.preProperties = preProperties;
SolarEngine.trackCustomEventWithPreEventData(customEventData,sePreEventData);
}),
SEText2ButtonItem(
"trackCustomEvent", "eventName", "properties",
(eventName, propertiesString) {
if (propertiesString.isNotEmpty &&
eventName.isNotEmpty) {
SECustomEventData event = SECustomEventData();
event.customEventName = eventName;
Map<String, dynamic> properties =
json.decode(propertiesString);
event.customProperties = properties;
SolarEngine.trackFirstEvent(event);
return;
}
SECustomEventData customEventData = SECustomEventData();
customEventData.customEventName = "OpenAPP";
Map<String, dynamic> customProperties = {};
customProperties['time'] = '2020-10-10';
customProperties['data'] = "hello word!";
customEventData.firstCheckId = "11111";
customEventData.customProperties = customProperties;
SolarEngine.trackFirstEvent(customEventData);
}),
SETextButtonItem("trackIAP", "properties", (pString) {
if (pString.isNotEmpty) {
Map<String, dynamic> properties =
json.decode(pString);
SEAppPurchaseData purchase = SEAppPurchaseData();
purchase.orderId = properties["orderId"];
purchase.payAmount = properties["payAmount"];
purchase.currencyType = properties["currencyType"];
purchase.payType = properties["payType"];
purchase.productId = properties["productId"];
purchase.productName = properties["productName"];
purchase.productNum = properties["productNum"];
purchase.payStatus = properties["payStatus"];
purchase.failReason = properties["failReason"];
purchase.customProperties =
properties["customProperties"];
SolarEngine.trackFirstEvent(purchase);
return;
}
SEAppPurchaseData appPurchaseData = SEAppPurchaseData();
appPurchaseData.currencyType = "CN";
appPurchaseData.failReason = "支付失败";
appPurchaseData.orderId = "1123";
appPurchaseData.payAmount = 90.99;
appPurchaseData.payStatus = 1;
appPurchaseData.payType = "weixin";
appPurchaseData.productId = "232dddd";
appPurchaseData.productName = "皮肤";
appPurchaseData.productNum = 1;
Map<String, dynamic> customProperties = {};
customProperties['name'] = 'wyq';
customProperties['age'] = 10;
customProperties['like'] = "啤酒";
appPurchaseData.customProperties = customProperties;
SolarEngine.trackAppPurchase(appPurchaseData);
appPurchaseData.firstCheckId = "11111";
SolarEngine.trackFirstEvent(appPurchaseData);
}),
SETextButtonItem("trackAdImp", "properties", (pString) {
if (pString.isNotEmpty) {
Map<String, dynamic> properties =
json.decode(pString);
SEAppImpressionData appImpressionData =
SEAppImpressionData();
appImpressionData.adNetworkADID =
properties["adNetworkADID"];
appImpressionData.adNetworkAppID =
properties["adNetworkAppID"];
appImpressionData.adNetworkPlatform =
properties["adNetworkPlatform"];
appImpressionData.mediationPlatform =
properties["mediationPlatform"];
appImpressionData.adType = properties["adType"];
appImpressionData.currencyType =
properties["currencyType"];
appImpressionData.ecpm = properties["ecpm"];
appImpressionData.isRenderSuccess =
properties["isRenderSuccess"];
appImpressionData.customProperties =
properties["customProperties"];
SolarEngine.trackFirstEvent(appImpressionData);
return;
}
SEAppImpressionData appImpressionData =
SEAppImpressionData();
appImpressionData.mediationPlatform = "toutiao";
appImpressionData.adNetworkADID = "22323";
appImpressionData.adNetworkAppID = "3SDFED";
appImpressionData.adNetworkPlatform = "4";
appImpressionData.mediationPlatform = "custom";
appImpressionData.adType = 2;
appImpressionData.currencyType = "USD";
appImpressionData.ecpm = 22.9;
appImpressionData.isRenderSuccess = true;
Map<String, dynamic> customProperties = {};
customProperties['goods'] = 'shoes';
customProperties['goodsprice'] = 20;
customProperties['goodsaddress'] = "北京";
appImpressionData.customProperties = customProperties;
appImpressionData.firstCheckId = "111";
SolarEngine.trackFirstEvent(appImpressionData);
}),
SETextButtonItem("trackAdClick", "properties", (pString) {
if (pString.isNotEmpty) {
Map<String, dynamic> properties =
json.decode(pString);
SEAdClickData adClickData = SEAdClickData();
adClickData.adPlatform = properties["adPlatform"];
adClickData.mediationPlatform =
properties["mediationPlatform"];
adClickData.adType = properties["adType"];
adClickData.adNetworkADID =
properties["adNetworkADID"];
adClickData.adType = properties["adType"];
adClickData.customProperties =
properties["customProperties"];
SolarEngine.trackFirstEvent(adClickData);
return;
}
SEAdClickData adClickData = SEAdClickData();
adClickData.adPlatform = "mtg";
adClickData.mediationPlatform = "solar-engine";
adClickData.adType = 1;
adClickData.adNetworkADID = "11222ffff";
Map<String, dynamic> customProperties = {};
if (pString.isNotEmpty) {
customProperties = json.decode(pString);
} else {
customProperties['app'] = 'taobao';
customProperties['sex'] = "man";
}
adClickData.customProperties = customProperties;
adClickData.firstCheckId = "1111";
SolarEngine.trackFirstEvent(adClickData);
}),
SETextButtonItem("trackAppAttr", "properties", (pString) {
if (pString.isNotEmpty) {
Map<String, dynamic> properties =
json.decode(pString);
SEAppAttrData appAttrData = SEAppAttrData();
appAttrData.adAccountId = properties["adAccountId"];
appAttrData.adAccountName =
properties["adAccountName"];
appAttrData.adCampaignId = properties["adCampaignId"];
appAttrData.adCampaignName =
properties["adCampaignName"];
appAttrData.adCreativeId = properties["adCreativeId"];
appAttrData.adCreativeName =
properties["adCreativeName"];
appAttrData.adNetwork = properties["adNetwork"];
appAttrData.adOfferId = properties["adOfferId"];
appAttrData.adOfferName = properties["adOfferName"];
appAttrData.attributionPlatform =
properties["attributionPlatform"];
appAttrData.subChannel = properties["subChannel"];
appAttrData.customProperties =
properties["customProperties"];
SolarEngine.trackFirstEvent(appAttrData);
return;
}
SEAppAttrData appAttrData = SEAppAttrData();
appAttrData.adAccountId = "2222ddd";
appAttrData.adAccountName = "mtg";
appAttrData.adCampaignId = "12323";
appAttrData.adCampaignName = "animal";
appAttrData.adCreativeId = "dkdkd11";
appAttrData.adCreativeName = "dog";
appAttrData.adNetwork = "ks";
appAttrData.adOfferId = "100oo";
appAttrData.adOfferName = "wanmeishijie";
appAttrData.attributionPlatform = "tencent";
appAttrData.subChannel = "bytedance";
Map<String, dynamic> customProperties = {};
if (pString.isNotEmpty) {
customProperties = json.decode(pString);
} else {
customProperties['channel'] = 'xiaomi';
customProperties['date'] = "10.20";
}
appAttrData.customProperties = customProperties;
appAttrData.firstCheckId = "111";
SolarEngine.trackFirstEvent(appAttrData);
}),
SETextButtonItem("trackRegister", "properties",
(pString) {
if (pString.isNotEmpty) {
Map<String, dynamic> properties =
json.decode(pString);
SEAppRegisterData appRegisterData =
SEAppRegisterData();
appRegisterData.regType = properties["regType"];
appRegisterData.status = properties["status"];
appRegisterData.customProperties =
properties["customProperties"];
SolarEngine.trackFirstEvent(appRegisterData);
return;
}
SEAppRegisterData appRegisterData = SEAppRegisterData();
appRegisterData.regType = "QQ";
appRegisterData.status = "success";
Map<String, dynamic> customProperties = {};
if (pString.isNotEmpty) {
customProperties = json.decode(pString);
} else {
customProperties['type'] = 'wifi';
customProperties['like'] = "foods";
customProperties['re'] = "QQ";
}
appRegisterData.customProperties = customProperties;
appRegisterData.firstCheckId = "1111";
SolarEngine.trackFirstEvent(appRegisterData);
}),
SETextButtonItem("trackLogin", "properties", (pString) {
if (pString.isNotEmpty) {
Map<String, dynamic> properties =
json.decode(pString);
SEAppLoginData appLoginData = SEAppLoginData();
appLoginData.loginType = properties["regType"];
appLoginData.status = properties["status"];
appLoginData.customProperties =
properties["customProperties"];
SolarEngine.trackFirstEvent(appLoginData);
return;
}
SEAppLoginData appLoginData = SEAppLoginData();
appLoginData.loginType = "weixin";
appLoginData.status = "failed";
Map<String, dynamic> customProperties = {};
if (pString.isNotEmpty) {
customProperties = json.decode(pString);
} else {
customProperties['type'] = 'wifi';
customProperties['like'] = "foods";
customProperties['re'] = "QQ";
}
appLoginData.customProperties = customProperties;
appLoginData.firstCheckId = "111";
SolarEngine.trackFirstEvent(appLoginData);
}),
SETextButtonItem("trackOrder", "properties", (pString) {
if (pString.isNotEmpty) {
Map<String, dynamic> properties =
json.decode(pString);
SEAppOrderData appOrderData = SEAppOrderData();
appOrderData.status = properties["status"];
appOrderData.payType = properties["payType"];
appOrderData.payAmount = properties["payAmount"];
appOrderData.orderId = properties["orderId"];
appOrderData.currencyType =
properties["currencyType"];
appOrderData.customProperties =
properties["customProperties"];
SolarEngine.trackFirstEvent(appOrderData);
return;
}
SEAppOrderData appOrderData = SEAppOrderData();
appOrderData.status = "failed";
appOrderData.payType = "weixin";
appOrderData.payAmount = 20.33;
appOrderData.orderId = "111222333";
appOrderData.currencyType = "USD";
Map<String, dynamic> customProperties = {};
if (pString.isNotEmpty) {
customProperties = json.decode(pString);
} else {
customProperties['app'] = 'taobao';
customProperties['sex'] = "man";
}
appOrderData.customProperties = customProperties;
appOrderData.firstCheckId = "111";
SolarEngine.trackFirstEvent(appOrderData);
}),
SETextButtonItem("eventStart", "eventName",
(eventName) async {
SETimerEventData event = SETimerEventData();
event.customEventName = "timer_event_my";
Map<String, dynamic> customProperties = {};
customProperties['kind'] = 'timer';
customProperties['send'] = "ture";
event.customProperties = customProperties;
event.ts = DateTime.now().millisecondsSinceEpoch;
timerEventStr =
await SolarEngine.createTimerEvent(event);
}),
SEText2ButtonItem(
"eventFinish", "eventName", "properties",
(eventName, propertiesString) {
SolarEngine.trackTimerEvent(timerEventStr);
}),
SETextButtonItem("userInit", "properties", (pString) {
Map<String, dynamic> properties = {};
if (pString.isNotEmpty) {
properties = json.decode(pString);
} else {
properties['kind'] = "userInit";
}
SolarEngine.userInit(properties);
}),
SETextButtonItem("userUpdate", "properties", (pString) {
Map<String, dynamic> properties = {};
if (pString.isNotEmpty) {
properties = json.decode(pString);
} else {
properties['kind'] = "userUpdate";
}
SolarEngine.userUpdate(properties);
}),
SETextButtonItem("userAdd", "properties", (pString) {
Map<String, dynamic> properties = {};
if (pString.isNotEmpty) {
properties = json.decode(pString);
} else {
properties['kind'] = "userAdd";
}
SolarEngine.userAdd(properties);
}),
SETextButtonItem("userUnset", "properties", (pString) {
List<String> properties;
if (pString.isNotEmpty) {
properties = json.decode(pString);
} else {
properties = ['apple', 'orange', 'banana'];
}
SolarEngine.userUnset(properties);
}),
SETextButtonItem("userAppend", "properties", (pString) {
Map<String, dynamic> properties = {};
if (pString.isNotEmpty) {
properties = json.decode(pString);
} else {
properties['kind'] = "userAppend";
}
SolarEngine.userAppend(properties);
}),
SEButtonItem("userDeleteByAccountId", () {
SolarEngine.userDelete(
SEUserDeleteType.DELETE_BY_ACCOUNTID);
}),
SEButtonItem("userDeleteByVisitorId", () {
SolarEngine.userDelete(
SEUserDeleteType.DELETE_BY_VISITORID);
}),
],
),
),
),
],
),
),
),
);
}
}
更多关于Flutter插件se_flutter_sdk_test的使用方法的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter插件se_flutter_sdk_test的使用方法的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
se_flutter_sdk_test
是一个未知的 Flutter 插件,通常情况下,插件的名称和功能可以通过其文档、GitHub 仓库或 pub.dev 页面来了解。由于你提到的插件名称看起来像是一个测试 SDK,我无法直接提供具体的使用方法,但我可以给你一些通用的步骤来探索和使用一个未知的 Flutter 插件。
1. 查找插件的来源
首先,你需要确认插件的来源。通常,Flutter 插件会发布在 pub.dev 上。你可以尝试在 pub.dev 上搜索 se_flutter_sdk_test
,看看是否有相关的插件信息。
- 打开 pub.dev
- 在搜索框中输入
se_flutter_sdk_test
- 查看插件的详细信息,包括文档、版本、依赖等
如果插件不在 pub.dev 上,你可能需要查找其他来源,比如 GitHub、私有仓库等。
2. 阅读插件的文档
如果找到了插件的来源,接下来就是阅读插件的文档。文档通常会提供以下信息:
- 插件的功能描述
- 安装步骤
- 使用示例
- API 参考
- 常见问题解答
3. 安装插件
假设你找到了插件的 pub.dev 页面,安装插件的步骤通常如下:
-
在
pubspec.yaml
文件中添加插件的依赖:dependencies: se_flutter_sdk_test: ^1.0.0 # 替换为实际的版本号
-
运行
flutter pub get
来获取插件。
4. 导入和使用插件
在 Dart 文件中导入插件,并根据文档中的示例代码进行使用:
import 'package:se_flutter_sdk_test/se_flutter_sdk_test.dart';
void main() {
// 根据插件的 API 进行初始化或调用
SeFlutterSdkTest.initialize();
// 其他操作
}