idxdmp 2.1.0
idxdmp: ^2.1.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"),
),
),
],
)
),
);
}
}