tp_media 0.0.7 copy "tp_media: ^0.0.7" to clipboard
tp_media: ^0.0.7 copied to clipboard

PlatformiOS

Flutter common package by TP MEDIA. Support Admob to show ads, RevenueCat to show Paywall and handle In app purchase.

example/lib/main.dart

import 'dart:io';

import 'package:example/iap/test_iap_manager.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:tp_media/tp_media.dart';
import 'package:tp_media/widget/internet_checker.dart';
import 'package:tp_media/widget/top_rounded_container.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  SystemChrome.setSystemUIOverlayStyle(
    SystemUiOverlayStyle(
      statusBarColor: Colors.white,
      systemNavigationBarColor: Colors.white,
      systemNavigationBarIconBrightness: Brightness.dark,
      statusBarIconBrightness: Brightness.dark,
      statusBarBrightness: Brightness.light,
    ),
  );

  runApp(ProviderScope(child: const MyApp()));
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple)),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends LoadingDialogState<MyHomePage> with InterstitialAdMixin, RewardedAdMixin {
  late OpenAdLifecycleReactor _appLifecycleReactor;
  late AdmobOpenAd _appOpenAdManager;

  Widget trackingTransparencyDialog(BuildContext context) {
    return buildTrackingTransparencyDialog(
      context,
      title: 'Test title',
      message: 'Message example',
      continueButton: 'Continue',
    );
  }

  String get openAdUnitId {
    if (Platform.isAndroid) {
      return kTestAndroidOpenAdId;
    }
    return '';
  }

  Future<void> _initApp() async {
    final isIapSubscribed = await IapInitializer.init(
      [TestIapManager.instance],
      androidApiKey: 'test_ISWQvtVjQVYMyJrPXVqZFabZTaT',
      iosApiKey: '',
    );

    if (!isIapSubscribed) {
      await _initAdmob();
    }
  }

  Future<void> _initAdmob() async {
    AdmobBannerAd.isTestMode = true;
    await AdmobInitializer.init(context, trackingTransparencyDialog(context));

    _appOpenAdManager = AdmobOpenAd(openAdUnitId);
    _appOpenAdManager.loadAd();
    _appLifecycleReactor = OpenAdLifecycleReactor(appOpenAdManager: _appOpenAdManager);
    _appLifecycleReactor.listenToAppStateChanges();
  }

  void _incrementCounter() {
    TestIapManager.instance.presentPaywallIfNeeded();
  }

  @override
  String interstitialUnitId = kTestAndroidInterstitialId;

  @override
  String rewardedUnitId = kTestAndroidRewardedAdId;

  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
      future: _initApp(),
      builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
        return SafeArea(
          child: Scaffold(
            appBar: AppBar(backgroundColor: Theme.of(context).colorScheme.inversePrimary, title: Text(widget.title)),
            body: TopRoundedContainer(
              child: SingleChildScrollView(
                child: Column(
                  children: [
                    AdmobBannerAd(kTestAndroidBannerId),
                    Padding(
                      padding: const EdgeInsets.all(16),
                      child: Column(
                        mainAxisAlignment: MainAxisAlignment.center,
                        children: <Widget>[
                          CommonCard(child: CommonEmpty(emptyMessage: 'Test message')),
                          SizedBox(height: 16),
                          CommonTextButton(text: 'Test', onPressed: () {}),
                          SizedBox(height: 16),
                          CommonTextField(labelText: 'Testing field'),
                          SizedBox(height: 16),
                          CommonIconButton(icon: Icons.add_circle_outlined, onPressed: () {}),
                        ],
                      ),
                    ),
                    AdmobBannerAd(kTestAndroidBannerId),
                    InternetChecker(message: 'No internet connection.', child: Text('Has internet!')),
                  ],
                ),
              ),
            ),
            floatingActionButton: FloatingActionButton(
              onPressed: _incrementCounter,
              tooltip: 'Increment',
              child: const Icon(Icons.add),
            ),
          ),
        );
      },
    );
  }
}
0
likes
150
points
250
downloads

Publisher

unverified uploader

Weekly Downloads

Flutter common package by TP MEDIA. Support Admob to show ads, RevenueCat to show Paywall and handle In app purchase.

Repository (GitHub)
View/report issues

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

app_tracking_transparency, flutter, fluttertoast, google_mobile_ads, internet_connection_checker_plus, intl, lottie, purchases_flutter, purchases_ui_flutter

More

Packages that depend on tp_media