taboola_sdk_beta 1.1.1
taboola_sdk_beta: ^1.1.1 copied to clipboard
Taboola's Flutter Core SDK. This SDK provides access to Taboola's Widget and Feed integrations for Flutter applications.
example/lib/main.dart
import 'dart:collection';
import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:taboola_sdk_example/screens/classic/ExtraPropertiesExampleScreen.dart';
import 'package:taboola_sdk_example/screens/classic/GUEH_example.dart';
import 'package:taboola_sdk_example/screens/classic/keepAliveTest.dart';
import 'package:taboola_sdk_example/screens/classic/listView_example.dart';
import 'package:taboola_sdk_example/screens/classic/single_child_scroll_view_test.dart';
import 'package:taboola_sdk_example/screens/classic/taboola_custom_scrollview_screen.dart';
import 'package:taboola_sdk_example/screens/classic/taboola_dedupe_screen.dart';
import 'package:taboola_sdk_example/screens/classic/taboola_pageview_screen.dart';
import 'package:taboola_sdk_example/screens/classic/publishers/ali_test.dart';
import 'package:taboola_sdk_example/screens/classic/publishers/nikib_test.dart';
import 'package:taboola_sdk_example/screens/classic/publishers/walla_test.dart';
// import screens
import 'package:taboola_sdk_example/screens/classic/taboola_tabs_screen.dart';
import 'package:taboola_sdk_example/DefaultProperties.dart'
as PublisherProperties;
import 'package:taboola_sdk_beta/taboola.dart';
import 'package:taboola_sdk_example/screens/web/taboola_web_integration_flutter_webview.dart';
import 'package:taboola_sdk_example/screens/web/taboola_web_integration_inappwebview.dart';
import 'package:taboola_sdk_example/screens/web/taboola_web_integration_single_flutter_webview.dart';
// Screen name constants
class ScreenNames {
// Classic category
static const String SINGLE_CHILD_SCROLL_VIEW = 'SingleChildScrollView';
static const String DUPLICATION_EXAMPLE = 'Duplication Example';
static const String LIST_VIEW_EXAMPLE = 'ListViewExample';
static const String CUSTOM_SCROLL_VIEW_WITH_FEED = 'CustomScrollView w/ Feed';
static const String TABS_WITH_FEED = 'Tabs w/ Feed';
static const String PAGE_VIEW_WITH_FEED = 'PageView w/ Feed';
static const String ALI_CASE = 'Ali\'s Case';
static const String NIKI_B_CASE = 'Niki B\'s Case';
static const String GUEH_EXAMPLE = 'GUEH Example';
static const String EXTRA_PROPERTIES_EXAMPLE = 'ExtraProperties Example';
static const String WALLA_EXAMPLE = 'Walla example';
static const String KEEP_ALIVE_TEST = 'Keep Alive Test';
// Web category
static const String FLUTTER_WEBVIEW = 'Flutter Webview';
static const String INAPP_WEBVIEW = 'Inappwebview';
static const String SINGLE_FLUTTER_WEBVIEW = 'Single Flutter Webview';
// Categories
static const String CLASSIC_CATEGORY = 'Classic';
static const String WEB_CATEGORY = 'Web';
}
void main() {
// simulate publisher error handling, also used for QA testing of GUEH
FlutterError.onError = (details) {
Fluttertoast.showToast(
msg: details.exceptionAsString(),
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.CENTER,
timeInSecForIosWeb: 1,
backgroundColor: Colors.red,
textColor: Colors.white,
fontSize: 16.0);
};
PlatformDispatcher.instance.onError = (error, stack) {
if (error is PlatformException) {
Fluttertoast.showToast(
msg: error.message.toString(),
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.CENTER,
timeInSecForIosWeb: 1,
backgroundColor: Colors.red,
textColor: Colors.white,
fontSize: 16.0);
}
return false;
};
// Init Taboola SDK
WidgetsFlutterBinding.ensureInitialized();
Taboola.setLogsEnabled(true);
Taboola.init(TBLPublisherInfo(PublisherProperties.publisher));
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(home: new HomeScreen());
}
}
class HomeScreen extends StatefulWidget {
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
late Widget displayedScreen;
String? keepAlive = "true";
String KEEP_ALIVE_KEY = "keepAlive";
@override
void initState() {
super.initState();
// We want the test app to show logs, current SDK default is to not show logs.
// Taboola.setLogsEnabled(false);
// Set default screen
// displayedScreen = TaboolaTabsScreen(PublisherProperties.publisher, PublisherProperties.page_url, PublisherProperties.page_type, PublisherProperties.placement, PublisherProperties.mode);
displayedScreen = TaboolaCustomScrollviewScreen(
PublisherProperties.publisher,
PublisherProperties.page_url,
PublisherProperties.page_type,
PublisherProperties.placement,
PublisherProperties.mode);
// displayedScreen = NikiB();
// displayedScreen = AliTest();
// displayedScreen = SingleChildScrollViewTest();
// displayedScreen = TOnlineScreen("exampleArticle");
// displayedScreen = TaboolaPageViewScreen(PublisherProperties.publisher, PublisherProperties.pageUrl, PublisherProperties.pageType, PublisherProperties.placement, PublisherProperties.mode);
// Allow gesture debugging
// debugPrintGestureArenaDiagnostics = true;
}
// pass this callback in order to change the keepAlive value in the KeepAliveTest screen, the Global will manged by the HomeScreen
void _onKeepAliveChanged(String? value) {
setState(() {
keepAlive = value;
});
HashMap<String, String> extraProperties = HashMap();
extraProperties[KEEP_ALIVE_KEY] = keepAlive ?? "";
Taboola.setGlobalExtraProperties(extraProperties);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
systemOverlayStyle: SystemUiOverlayStyle.dark,
title: Text('TaboolaFlutterDemo'),
),
body: Center(
child: displayedScreen,
),
drawer: Drawer(
child: ListView(
padding: EdgeInsets.zero,
children: <Widget>[
DrawerHeader(
child: Text('Taboola Sample Screens'),
decoration: BoxDecoration(
color: Colors.blue,
),
),
// Classic Category
ExpansionTile(
title: Text(ScreenNames.CLASSIC_CATEGORY, style: TextStyle(fontWeight: FontWeight.bold)),
initiallyExpanded: false,
children: [
ListTile(
title: Text(ScreenNames.SINGLE_CHILD_SCROLL_VIEW),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = SingleChildScrollViewTest(context);
});
Navigator.pop(context);
},
),
ListTile(
title: Text(ScreenNames.DUPLICATION_EXAMPLE),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = TaboolaDedupeScreen();
});
Navigator.pop(context);
},
),
ListTile(
title: Text(ScreenNames.LIST_VIEW_EXAMPLE),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = CustomListViewPageFeedAndWidget();
});
Navigator.pop(context);
},
),
ListTile(
title: Text(ScreenNames.CUSTOM_SCROLL_VIEW_WITH_FEED),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = TaboolaCustomScrollviewScreen(
PublisherProperties.publisher,
PublisherProperties.page_url,
PublisherProperties.page_type,
PublisherProperties.placement,
PublisherProperties.mode);
});
Navigator.pop(context);
},
),
ListTile(
title: Text(ScreenNames.TABS_WITH_FEED),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = TaboolaTabsScreen(
PublisherProperties.publisher,
PublisherProperties.page_url,
PublisherProperties.page_type,
PublisherProperties.placement,
PublisherProperties.mode);
});
Navigator.pop(context);
},
),
ListTile(
title: Text(ScreenNames.PAGE_VIEW_WITH_FEED),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = TaboolaPageViewScreen(
PublisherProperties.publisher,
PublisherProperties.page_url,
PublisherProperties.page_type,
PublisherProperties.placement,
PublisherProperties.mode);
});
Navigator.pop(context);
},
),
ListTile(
title: Text(ScreenNames.ALI_CASE),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = AliTest(context);
});
Navigator.pop(context);
},
),
ListTile(
title: Text(ScreenNames.NIKI_B_CASE),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = NikiB(context);
});
Navigator.pop(context);
},
),
ListTile(
title: Text(ScreenNames.GUEH_EXAMPLE),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = GUEHExample();
});
Navigator.pop(context);
},
),
ListTile(
title: Text(ScreenNames.EXTRA_PROPERTIES_EXAMPLE),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = ExtraPropertiesExampleScreen();
});
Navigator.pop(context);
},
),
ListTile(
title: Text(ScreenNames.WALLA_EXAMPLE),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = WallaTest();
});
Navigator.pop(context);
},
),
ListTile(
title: Text(ScreenNames.KEEP_ALIVE_TEST),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen =
KeepAliveTest(keepAlive, _onKeepAliveChanged);
});
Navigator.pop(context);
},
),
],
),
// Web Category
ExpansionTile(
title: Text(ScreenNames.WEB_CATEGORY, style: TextStyle(fontWeight: FontWeight.bold)),
initiallyExpanded: false,
children: [
ListTile(
title: Text(ScreenNames.FLUTTER_WEBVIEW),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = TaboolaWebIntegrationFlutterWebview();
});
Navigator.pop(context);
},
),
ListTile(
title: Text(ScreenNames.INAPP_WEBVIEW),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = TaboolaWebIntegrationInappWebview();
});
Navigator.pop(context);
},
),
ListTile(
title: Text(ScreenNames.SINGLE_FLUTTER_WEBVIEW),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = TaboolaWebIntegrationSingleFlutterWebview();
});
Navigator.pop(context);
},
),
],
),
],
),
),
);
}
}