se_flutter_sdk 0.0.1 copy "se_flutter_sdk: ^0.0.1" to clipboard
se_flutter_sdk: ^0.0.1 copied to clipboard

outdated

flutter sdk for solar-engine!

example/lib/main.dart

import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:se_flutter_sdk/solar_engine_core/solar_engine.dart';
import 'package:se_flutter_sdk/solar_engine_core/solar_engine_config.dart';
import 'package:se_flutter_sdk/solar_engine_core/solar_engine_event_data.dart';
import 'package:se_flutter_sdk/solar_engine_remote_config/remote_config.dart';

void main() {
  runApp(const MyApp());
}

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

  // This widget is the root of your application.
  @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
  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
  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(
              // border: OutlineInputBorder(),
              filled: true,
              fillColor: Colors.grey[200],
              // padding: MaterialStateProperty.all(EdgeInsets.only(left: 20,right: 20)),
              hintText: desc,
            ),
          ),
          SizedBox(height: 8),
          // Expanded(child: Container(
          //   width: 500,
          //   decoration: BoxDecoration(color: Colors.red),
          // )),
          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];
              }),
              // width: 500,
              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
  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,
                  //把 TextEditingController 对象应用到 TextField 上
                  decoration: InputDecoration(
                    // border: OutlineInputBorder(),
                    filled: true,
                    fillColor: Colors.grey[200],
                    // padding: MaterialStateProperty.all(EdgeInsets.only(left: 20,right: 20)),
                    hintText: desc1,
                  ),
                ),
              ),
              SizedBox(width: 8),
              Expanded(
                child: TextField(
                  controller: _titleTxt2,
                  //把 TextEditingController 对象应用到 TextField 上
                  decoration: InputDecoration(
                    // border: OutlineInputBorder(),
                    filled: true,
                    fillColor: Colors.grey[200],
                    // padding: MaterialStateProperty.all(EdgeInsets.only(left: 20,right: 20)),
                    hintText: desc2,
                  ),
                ),
              ),
            ],
          ),
          SizedBox(height: 8),
          // Expanded(child: Container(
          //   width: 500,
          //   decoration: BoxDecoration(color: Colors.red),
          // )),
          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];
              }),
              // width: 500,
              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
  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];
              }),
              // width: 500,
              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
  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", () {
                        // SolarEngineSDK sdk = SolarEngineSDK();
                        // sdk.initSDK();

                        String appkey = "9b716df699b77694";
                        String userId = "5c5a2f0fd35d9296";
                        SolarEngineConfig config = SolarEngineConfig();
                        config.logEnabled = true;
                        SERemoteConfigData rcConfig = SERemoteConfigData();
                        rcConfig.enable = true;
                        rcConfig.logEnabled = true;
                        rcConfig.customIDProperties = {"k1":"v1"};
                        rcConfig.customIDUserProperties = {"k2_user":"v1"};
                        rcConfig.customIDEventProperties = {"k3_event":"v1"};
                        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);
                      }),
                      SETextButtonItem("fastFetchRemoteConfig", "key", (key) async {
                        String? result = await SERemoteConfig().fastFetchRemoteConfig(key);
                        if (result == null) {
                          result = "null";
                        }
                        toast("result=" + result!);
                      }),
                      SETextButtonItem("asyncFetchRemoteConfig", "key", (key) {
                        SERemoteConfig().asyncFetchRemoteConfig(key, (result) {
                          print("在线参数回调-----");
                          print(result);
                          toast("result=" + result!);
                        });
                      }),
                      SETextButtonItem(
                          "setPresetEventProperties", "PresetEventType",
                          (result) {
                        Map<String, dynamic> customProperties = {};
                        customProperties['kind'] = 'setPresetEventProperties';
                        customProperties['name'] = "Jim";
                        if (result == '0'){
                          SolarEngine.setPresetEventProperties(
                          PresetEventType.AppInstall, customProperties);
                        } else if (result == '1'){
                          SolarEngine.setPresetEventProperties(
                            PresetEventType.AppStart, customProperties);
                        } else if (result == '2'){
                          SolarEngine.setPresetEventProperties(
                              PresetEventType.AppEnd, customProperties);
                        } else {
                          SolarEngine.setPresetEventProperties(
                              PresetEventType.All, customProperties);
                        }

                      }),
                      SETextButtonItem("setVisitorID", "visitId", (result) {
                        SolarEngine.setVisitorID(result);
                      }),
                      SEButtonItem("getVisitorID", () async {
                        var visitorID = await SolarEngine.getVisitorID();
                        toast("visitorID=${visitorID!}");
                      }),
                      SETextButtonItem("setAccountID", "accountID", (result) {
                        SolarEngine.login(result);
                      }),
                      SEButtonItem("getAccountID", () async {
                        var accountID = await SolarEngine.getAccountID();
                        toast("accountID=${accountID!}");
                      }),
                      SEButtonItem("logout", () {
                        SolarEngine.logout();
                      }),
                      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("setGaid", "setGaid", (result) {
                        SolarEngine.setGaid(result);
                      }),
                      SETextButtonItem("setGDPRArea", "setGDPRArea", (result) {
                        bool setGDPRArea = bool.parse(result);
                        SolarEngine.setGDPRArea(setGDPRArea);
                      }),
                      SETextButtonItem("setSuperProperties", "properties",
                          (propertiesString) {
                        // Map<String, dynamic> properties =
                        //     json.decode(propertiesString);
                        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(
                          "trackCustomEvent", "eventName", "properties",
                          (eventName, propertiesString) {
                        // Map<String, dynamic> properties =
                        //     json.decode(propertiesString);
                        //
                        // CustomEventData event = CustomEventData();
                        // event.customEventName = eventName;
                        // event.customProperties = properties;
                        SECustomEventData customEventData = SECustomEventData();
                        customEventData.customEventName = "OpenAPP";
                        Map<String, dynamic> customProperties = {};
                        customProperties['time'] = '2020-10-10';
                        customProperties['data'] = "hello word!";
                        customEventData.customProperties = customProperties;
                        SolarEngine.trackCustomEvent(customEventData);
                      }),
                      SETextButtonItem("trackIAP", "properties", (pString) {

                        if (!pString.isEmpty) {
                          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.trackAppPurchase(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);
                      }),
                      SETextButtonItem("trackAdImp", "properties", (pString) {


                        if (!pString.isEmpty) {
                          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.trackAppImpress(appImpressionData);
                          return;
                        }

                        SEAppImpressionData appImpressionData = SEAppImpressionData();
                        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;
                        SolarEngine.trackAppImpress(appImpressionData);

                      }),
                      SETextButtonItem("trackAdClick", "properties", (pString) {
                        SEAdClickData adClickData = SEAdClickData();
                        adClickData.adPlatform = "mtg";
                        adClickData.mediationPlatform = "solar-engine";
                        adClickData.adType = 1;
                        adClickData.adNetworkADID = "11222ffff";
                        Map<String, dynamic> customProperties = {};
                        customProperties['app'] = 'taobao';
                        customProperties['sex'] = "man";
                        adClickData.customProperties = customProperties;
                        SolarEngine.trackAdClick(adClickData);
                      }),
                      SETextButtonItem("trackAppAttr", "properties", (pString) {
                        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 = {};
                        customProperties['channel'] = 'xiaomi';
                        customProperties['date'] = "10.20";
                        appAttrData.customProperties = customProperties;
                        SolarEngine.trackAppAttr(appAttrData);
                      }),
                      SETextButtonItem("trackRegister", "properties",
                          (pString) {
                        SEAppRegisterData appRegisterData = SEAppRegisterData();
                        appRegisterData.regType = "QQ";
                        appRegisterData.status = "success";
                        Map<String, dynamic> customProperties = {};
                        customProperties['type'] = 'wifi';
                        customProperties['like'] = "foods";
                        customProperties['re'] = "QQ";
                        appRegisterData.customProperties = customProperties;
                        SolarEngine.trackAppRegister(appRegisterData);
                      }),
                      SETextButtonItem("trackLogin", "properties", (pString) {
                        SEAppLoginData appLoginData = SEAppLoginData();
                        appLoginData.loginType = "weixin";
                        appLoginData.status = "failed";
                        Map<String, dynamic> customProperties = {};
                        customProperties['type'] = 'wifi';
                        customProperties['like'] = "foods";
                        customProperties['re'] = "QQ";
                        appLoginData.customProperties = customProperties;
                        SolarEngine.trackAppLogin(appLoginData);
                      }),
                      SETextButtonItem("trackOrder", "properties", (pString) {
                        SEAppOrderData appOrderData = SEAppOrderData();
                        appOrderData.status = "failed";
                        appOrderData.payType = "weixin";
                        appOrderData.payAmount = 20.33;
                        appOrderData.orderId = "111222333";
                        appOrderData.currencyType = "USD";
                        Map<String, dynamic> customProperties = {};
                        customProperties['app'] = 'taobao';
                        customProperties['sex'] = "man";
                        appOrderData.customProperties = customProperties;
                        SolarEngine.trackAppOrder(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) as String;
                      }),
                      SEText2ButtonItem(
                          "eventFinish", "eventName", "properties",
                          (eventName, propertiesString) {
                        // TimerEventData event = TimerEventData();
                        // event.customEventName = eventName;
                        print("TAG: TAGTAG" + timerEventStr);
                        SolarEngine.trackTimerEvent(timerEventStr);
                      }),
                      SETextButtonItem("userInit", "properties", (pString) {
                        // Map<String, dynamic> properties = json.decode(pString);
                        Map<String, dynamic> properties = {};
                        properties['kind'] = "userInit";
                        SolarEngine.userInit(properties);
                      }),
                      SETextButtonItem("userUpdate", "properties", (pString) {
                        Map<String, dynamic> properties = {};
                        properties['kind'] = "userUpdate";
                        SolarEngine.userUpdate(properties);
                      }),
                      SETextButtonItem("userAdd", "properties", (pString) {
                        // Map<String, dynamic> properties = json.decode(pString);
                        Map<String, dynamic> properties = {};
                        properties['kind'] = "userAdd";
                        SolarEngine.userAdd(properties);
                      }),
                      SETextButtonItem("userUnset", "properties", (pString) {
                        // List<String> properties = json.decode(pString);
                        List<String> properties = ['apple', 'orange', 'banana'];
                        SolarEngine.userUnset(properties);
                      }),
                      SETextButtonItem("userAppend", "properties", (pString) {
                        // Map<String, dynamic> properties = json.decode(pString);
                        Map<String, dynamic> properties = {};
                        properties['kind'] = "userAppend";
                        SolarEngine.userAppend(properties);
                      }),
                      SEButtonItem("userDeleteByAccountId", () {
                        SolarEngine.userDelete(
                            SEUserDeleteType.DELETE_BY_ACCOUNTID);
                      }),
                      SEButtonItem("userDeleteByVisitorId", () {
                        SolarEngine.userDelete(
                            SEUserDeleteType.DELETE_BY_VISITORID);
                      }),
                    ],
                  ),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }

}
1
likes
0
points
9
downloads

Publisher

unverified uploader

Weekly Downloads

flutter sdk for solar-engine!

Homepage

License

unknown (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on se_flutter_sdk

Packages that implement se_flutter_sdk