taboola_sdk_beta 1.1.1 copy "taboola_sdk_beta: ^1.1.1" to clipboard
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);
                  },
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}
0
likes
0
points
545
downloads

Publisher

unverified uploader

Weekly Downloads

Taboola's Flutter Core SDK. This SDK provides access to Taboola's Widget and Feed integrations for Flutter applications.

Homepage

License

unknown (license)

Dependencies

crypto, cupertino_http, flutter, flutter_custom_tabs, http, plugin_platform_interface, system_info2, webview_flutter, webview_flutter_android, webview_flutter_wkwebview

More

Packages that depend on taboola_sdk_beta

Packages that implement taboola_sdk_beta