taboola_sdk 1.0.7  taboola_sdk: ^1.0.7 copied to clipboard
taboola_sdk: ^1.0.7 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/single_child_scroll_view_dark_mode_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 _singleChildScrollViewDarkMode = 'SingleChildScrollView (Dark Mode)';
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(_singleChildScrollViewDarkMode),
                  trailing: Icon(Icons.arrow_forward),
                  onTap: () {
                    setState(() {
                      displayedScreen = SingleChildScrollViewDarkModeTest(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);
                  },
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}