taboola_sdk 1.0.5
taboola_sdk: ^1.0.5 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/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 - Classic category
const String _singleChildScrollView = 'SingleChildScrollView';
const String _duplicationExample = 'Duplication Example';
const String _listViewExample = 'ListViewExample';
const String _customScrollViewWithFeed = 'CustomScrollView w/ Feed';
const String _tabsWithFeed = 'Tabs w/ Feed';
const String _pageViewWithFeed = 'PageView w/ Feed';
const String _aliCase = 'Ali\'s Case';
const String _nikiBCase = 'Niki B\'s Case';
const String _guehExample = 'GUEH Example';
const String _extraPropertiesExample = 'ExtraProperties Example';
const String _wallaExample = 'Walla example';
const String _keepAliveTest = 'Keep Alive Test';
// Web category
const String _flutterWebview = 'Flutter Webview';
const String _inappWebview = 'Inappwebview';
const String _singleFlutterWebview = 'Single Flutter Webview';
// Categories
const String _classicCategory = 'Classic';
const String _webCategory = '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(_classicCategory, style: TextStyle(fontWeight: FontWeight.bold)),
initiallyExpanded: false,
children: [
ListTile(
title: Text(_singleChildScrollView),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = SingleChildScrollViewTest(context);
});
Navigator.pop(context);
},
),
ListTile(
title: Text(_duplicationExample),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = TaboolaDedupeScreen();
});
Navigator.pop(context);
},
),
ListTile(
title: Text(_listViewExample),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = CustomListViewPageFeedAndWidget();
});
Navigator.pop(context);
},
),
ListTile(
title: Text(_customScrollViewWithFeed),
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(_tabsWithFeed),
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(_pageViewWithFeed),
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(_aliCase),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = AliTest(context);
});
Navigator.pop(context);
},
),
ListTile(
title: Text(_nikiBCase),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = NikiB(context);
});
Navigator.pop(context);
},
),
ListTile(
title: Text(_guehExample),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = GUEHExample();
});
Navigator.pop(context);
},
),
ListTile(
title: Text(_extraPropertiesExample),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = ExtraPropertiesExampleScreen();
});
Navigator.pop(context);
},
),
ListTile(
title: Text(_wallaExample),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = WallaTest();
});
Navigator.pop(context);
},
),
ListTile(
title: Text(_keepAliveTest),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen =
KeepAliveTest(keepAlive, _onKeepAliveChanged);
});
Navigator.pop(context);
},
),
],
),
// Web Category
ExpansionTile(
title: Text(_webCategory, style: TextStyle(fontWeight: FontWeight.bold)),
initiallyExpanded: false,
children: [
ListTile(
title: Text(_flutterWebview),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = TaboolaWebIntegrationFlutterWebview();
});
Navigator.pop(context);
},
),
ListTile(
title: Text(_inappWebview),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = TaboolaWebIntegrationInappWebview();
});
Navigator.pop(context);
},
),
ListTile(
title: Text(_singleFlutterWebview),
trailing: Icon(Icons.arrow_forward),
onTap: () {
setState(() {
displayedScreen = TaboolaWebIntegrationSingleFlutterWebview();
});
Navigator.pop(context);
},
),
],
),
],
),
),
);
}
}