absmartly_sdk 2.1.2 copy "absmartly_sdk: ^2.1.2" to clipboard
absmartly_sdk: ^2.1.2 copied to clipboard

ABsmartly - Flutter SDK

example/lib/main.dart

import 'dart:math';

import 'package:absmartly_sdk/ab_smartly.dart';
import 'package:absmartly_sdk/absmartly_sdk.dart';
import 'package:absmartly_sdk/client_config.dart';
import 'package:absmartly_sdk/context_config.dart';
import 'package:absmartly_sdk/context_event_logger.dart';
import 'package:flutter/material.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  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(
        primarySwatch: Colors.red,
      ),
      home: const AbSmartlyScreen(),
    );
  }
}

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

  @override
  State<AbSmartlyScreen> createState() => _AbSmartlyScreenState();
}

class _AbSmartlyScreenState extends State<AbSmartlyScreen> {
  @override
  void initState() {
    super.initState();
  }

  String res = "";

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          initData();
        },
        child: const Icon(Icons.send),
      ),
      body: SafeArea(
        child: SingleChildScrollView(
          child: Container(
            padding: const EdgeInsets.all(10),
            child: Text(res),
          ),
        ),
      ),
    );
  }

  initData() async {
    final ClientConfig clientConfig = ClientConfig()
      ..setEndpoint(const String.fromEnvironment("ABSMARTLY_ENDPOINT"))
      ..setAPIKey(const String.fromEnvironment("ABSMARTLY_API_KEY"))
      ..setApplication(const String.fromEnvironment("ABSMARTLY_APPLICATION"))
      ..setEnvironment(const String.fromEnvironment("ABSMARTLY_ENVIRONMENT"));

    final ABSmartlyConfig sdkConfig =
        ABSmartlyConfig.create().setClient(Client.create(clientConfig));
    final ABSmartly sdk = ABSmartly(sdkConfig);
    final ContextConfig contextConfig = ContextConfig.create()
      ..setUnit("user_id",
          "${DateTime.now().millisecondsSinceEpoch}${(1000 + Random().nextInt(9000))}");

    contextConfig.setContextEventLogger(CustomEventLogger());

    final Context context =
        await sdk.createContext(contextConfig).waitUntilReady();

    context.refresh();

    final int treatment = context.getTreatment("exp_test_ab");

    final Map<String, dynamic> properties = {};
    properties["value"] = 125;
    properties["fee"] = 125;

    context.setCustomAssignment("experimentName", 1);
    context.setCustomAssignments({"experimentName": 1});

    context.getCustomAssignment("experimentName");

    context.setAttribute("attribute", 1);
    context.setAttributes(
      {
        "attribute": 1,
      },
    );

    context.track("payment", properties);

    context.close();
    res = "Variant ${treatment.toString()}";
    setState(() {});
  }
}

class CustomEventLogger implements ContextEventLogger {
  @override
  void handleEvent(Context context, EventType event, dynamic data) {
    switch (event) {
      case EventType.exposure:
        final Exposure exposure = data;
        print("exposed to experiment ${exposure.name}");
        break;
      case EventType.goal:
        final GoalAchievement goal = data;
        print("goal tracked: ${goal.name}");
        break;
      case EventType.error:
        print("error: $data");
        break;
      case EventType.publish:
      case EventType.ready:
      case EventType.refresh:
      case EventType.close:
        break;
    }
  }
}
0
likes
130
points
29.6k
downloads

Publisher

unverified uploader

Weekly Downloads

ABsmartly - Flutter SDK

Repository (GitHub)
View/report issues

Documentation

API reference

License

Apache-2.0 (license)

Dependencies

async, collection, crypto, flutter, flutter_lints, http, http_parser, intl

More

Packages that depend on absmartly_sdk