idxdmp 2.0.0 copy "idxdmp: ^2.0.0" to clipboard
idxdmp: ^2.0.0 copied to clipboard

IDX DMP flutter SDK.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:idxdmp/idxdmp.dart';

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

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  bool _dmpIsInit = false;
  String _definitionIds = "";
  String _userId = "";

  final _idxdmpPlugin = Idxdmp();
  final providerIdController = TextEditingController(text: "a5beb245-2949-4a76-95f5-bddfc2ec171c");
  final urlController = TextEditingController(text: "https://www.ynet.co.il/food/article/1234");
  final titleController = TextEditingController(text: "IDX News Site - IDX");
  final domainController = TextEditingController(text: "https://www.ynet.co.il");
  final authorController = TextEditingController(text: "IDX");
  final categoryController = TextEditingController(text: "finance");
  final descriptionController = TextEditingController(text: "Description text");
  final tagsController = TextEditingController(text: "tag1,tag2,tag3");

  @override
  void initState() {
    super.initState();
  }

  @override
  void dispose() {
    providerIdController.dispose();
    urlController.dispose();
    titleController.dispose();
    domainController.dispose();
    authorController.dispose();
    categoryController.dispose();
    descriptionController.dispose();
    tagsController.dispose();
    super.dispose();
  }

  Future<void> handleInitSdk() async {
    bool dmpIsInit;
    try {
      dmpIsInit =
          await _idxdmpPlugin.initSdk(providerIdController.text, 'My flutter app') ?? false;
    } on PlatformException {
      dmpIsInit = false;
    }

    setState(() {
      _dmpIsInit = dmpIsInit;
    });
  }

  Future<void> handleSendEvent() async {
    try {
      if (!_dmpIsInit) {
        return;
      }

      await _idxdmpPlugin.sendEvent(<String, String>{
        "url": urlController.text,
        "title": titleController.text,
        "domain": domainController.text,
        "author": authorController.text,
        "category": categoryController.text,
        "description": descriptionController.text,
        "tags": tagsController.text,
      });

      String? definitionIds = await _idxdmpPlugin.getDefinitionIds() ?? "";
      String? userId = await _idxdmpPlugin.getUserId() ?? "";

      setState(() {
        _definitionIds = definitionIds;
        _userId = userId;
      });
    } on PlatformException {
      setState(() {
        _definitionIds = "SEND EVENT ERROR";
        _userId = "";
      });
    }
  }

  Future<void> handleResetUserState() async {
    try {
      await _idxdmpPlugin.resetUserState();
    } on PlatformException {
      
    }

    setState(() {
      _dmpIsInit = false;
      _definitionIds = "";
      _userId = "";
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('DMP Flutter example'),
        ),
        body: ListView(
          children: <Widget>[
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 8),
              child: Column(
                children: [
                  Center(
                    child: Text(_dmpIsInit ? "SDK IS READY!" : "SDK IS NOT INIT"),
                  ),
                  Center(
                    child: Text('Audiences: $_definitionIds\n'),
                  ),
                  Center(
                    child: Text('User id: $_userId\n'),
                  ),
                ],
              )
            ),
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 8),
              child: TextField(
                controller: providerIdController,
                decoration: const InputDecoration(
                  border: OutlineInputBorder(),
                  hintText: 'Provider Id',
                ),
              ),
            ),
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 8),
              child: TextField(
                controller: urlController,
                decoration: const InputDecoration(
                  border: OutlineInputBorder(),
                  hintText: 'URL',
                ),
              ),
            ),
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 8),
              child: TextField(
                controller: titleController,
                decoration: const InputDecoration(
                  border: OutlineInputBorder(),
                  hintText: 'Title',
                ),
              ),
            ),
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 8),
              child: TextField(
                controller: domainController,
                decoration: const InputDecoration(
                  border: OutlineInputBorder(),
                  hintText: 'Domain',
                ),
              ),
            ),
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 8),
              child: TextField(
                controller: authorController,
                decoration: const InputDecoration(
                  border: OutlineInputBorder(),
                  hintText: 'Author',
                ),
              ),
            ),
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 8),
              child: TextField(
                controller: categoryController,
                decoration: const InputDecoration(
                  border: OutlineInputBorder(),
                  hintText: 'Category',
                ),
              ),
            ),
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 8),
              child: TextField(
                controller: descriptionController,
                decoration: const InputDecoration(
                  border: OutlineInputBorder(),
                  hintText: 'Description',
                ),
              ),
            ),
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 8),
              child: TextField(
                controller: tagsController,
                decoration: const InputDecoration(
                  border: OutlineInputBorder(),
                  hintText: 'Tags',
                ),
              ),
            ),
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 8),
              child: ElevatedButton(
                style: ElevatedButton.styleFrom(
                  backgroundColor: Colors.blueAccent,
                  elevation: 0,
                ),
                onPressed: handleInitSdk,
                child: const Text("Init SDK"),
              ),
            ),
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 8),
              child: ElevatedButton(
                style: ElevatedButton.styleFrom(
                  backgroundColor: Colors.blueAccent,
                ),
                onPressed: handleSendEvent,
                child: const Text("Send event"),
              ),
            ),
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 8),
              child: ElevatedButton(
                style: ElevatedButton.styleFrom(
                  backgroundColor: Colors.redAccent,
                ),
                onPressed: handleResetUserState,
                child: const Text("Reset user state"),
              ),
            ),
          ],
        )
      ),
    );
  }
}
1
likes
0
points
31
downloads

Publisher

unverified uploader

Weekly Downloads

IDX DMP flutter SDK.

Homepage

License

unknown (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on idxdmp

Packages that implement idxdmp