Skip to main content

Getting Started

info

Welcome to the Teads Flutter SDK — Teads' premium video advertising and content recommendations in a single Flutter plugin, with one Dart API for both iOS and Android.

What is the Teads Flutter SDK?​

teads_flutter gives Flutter apps a single Dart API over Teads' in-app ad formats. Most placements wrap the native iOS and Android Teads SDKs; the Feed placement is implemented in Dart. Either way you write Dart only — there is no platform channel work on your side.

Built for Flutter developers who want to:

  • Display premium video advertisements inside their content
  • Show content recommendation widgets to increase engagement
  • Monetize with a single, comprehensive solution
  • Keep one codebase for iOS and Android

Quick Start Overview​

1. Install the plugin​

Add the dependency and complete the small amount of Android and iOS setup. → See the Installation Guide

2. Configure the SDK once​

TeadsSdk.configure() at app start, before any placement exists.

3. Add placements​

Drop a widget into your tree, or call the data API and render it yourself. → See the Integration Guide

What You Can Build​

Placement types​

PlacementDart APIWhat it is
FeedFeedPlacementSmartFeed — a self-paginating recommendations feed
Media (InRead)MediaPlacementPremium video/display ad rendered inline in your content
BannerBannerPlacementFixed-purpose banner slot
InterstitialInterstitialPlacementFullscreen ad; preload, then present
RecommendationsRecommendations.fetchRecommendation data — you build the list UI

Not supported:

  • ❌ Media Native placement
note

Recommendations returns data rather than a widget, deliberately: it lets you render recommendations with your own list widgets and styling. See Recommendations.

Key benefits​

  • Cross-platform — one Dart API for iOS and Android
  • Null-safe Dart — full type definitions, no dynamic maps in the public API
  • Self-sizing widgets — placements resize themselves as the creative loads
  • Event-driven — typed callbacks for every placement lifecycle event
  • Injectable interfaces — depend on an abstraction and swap in a test double

Quick Setup​

Configure the SDK once, before creating any placement:

import 'package:teads_flutter/teads_flutter.dart';

Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await TeadsSdk.configure('YOUR_APP_KEY');
runApp(const MyApp());
}

Basic Media (InRead) placement​

MediaPlacement(
config: MediaPlacementConfig(
pid: 84242,
articleUrl: 'https://example.com/article/123',
),
)

Basic Feed placement​

FeedPlacement(
config: FeedPlacementConfig(
widgetId: 'MB_1',
installationKey: 'NANOWDGT01',
articleUrl: 'https://example.com/article/123',
),
)

With event callbacks​

MediaPlacement(
config: MediaPlacementConfig(pid: 84242),
onReady: () => debugPrint('Ad ready'),
onFailed: (TeadsAdError error) => debugPrint('Failed: ${error.reason}'),
onClicked: (TeadsAdClick click) => debugPrint('Clicked: ${click.url}'),
onEvent: (TeadsAdEvent event, Map<String, dynamic>? data) {
debugPrint('Event: $event');
},
)
tip

Need more detail? The snippets above are deliberately minimal. The Integration Guide covers every placement, event handling, dark mode, and fullscreen video.

Where to Go Next​

Essential guides​

Features​

Requirements​

  • Flutter 3.44+ (Dart 3.12+)
  • iOS 15.0+ deployment target
  • Android minSdkVersion 24+
  • JDK 17 or 21 for the Android build

Support & Resources​


tip

Ready to start? Follow the Installation Guide, then the Integration Guide.