pdavenue_ads_monetize 1.0.6 copy "pdavenue_ads_monetize: ^1.0.6" to clipboard
pdavenue_ads_monetize: ^1.0.6 copied to clipboard

PlatformAndroid

A Flutter plugin bridging the native Android Ads Monetize SDK to display standard (interstitial/rewarded), video, app open, native, and banner ads.

example/lib/main.dart

// ignore_for_file: deprecated_member_use
import 'package:flutter/material.dart';
import 'package:pdavenue_ads_monetize/pdavenue_ads_monetize.dart';

void main() {
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Monetize Ads & Toast SDK Demo',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        brightness: Brightness.dark,
        scaffoldBackgroundColor: const Color(0xFF0D0E15),
        cardTheme: CardThemeData(
          color: const Color(0xFF161824),
          elevation: 4,
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(16),
            side: const BorderSide(color: Color(0xFF282B3E), width: 1),
          ),
        ),
        colorScheme: const ColorScheme.dark(
          primary: Color(0xFF8B5CF6),
          secondary: Color(0xFF10B981),
          surface: Color(0xFF161824),
          error: Color(0xFFEF4444),
        ),
        useMaterial3: true,
      ),
      home: const AdsDemoHomeScreen(),
    );
  }
}

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

  @override
  State<AdsDemoHomeScreen> createState() => _AdsDemoHomeScreenState();
}

class _AdsDemoHomeScreenState extends State<AdsDemoHomeScreen> {
  // SDK Configuration States
  bool _isSdkInitialized = false;
  String _sdkStatus = "Not Initialized";
  final TextEditingController _appIdController = TextEditingController(
    text: "4i2udfqa",
  );

  // App Open Ads State
  bool _appOpenBlocked = false;

  // Custom Toast States
  final TextEditingController _toastMsgController = TextEditingController(
    text: "Greetings from pdavenue_ads_monetize!",
  );
  bool _isToastLong = false;
  
  // Static color specifications (no dropdowns, statically assigned colors)
  final String _toastBgColor = "#FF8B5CF6";
  final String _toastTextColor = "#FFFFFFFF";

  final String _nativeAdBgColor = "#FF161824";
  final String _nativeAdTitleColor = "#FFFFFFFF";
  final String _nativeAdButtonBgColor = "#FF8B5CF6";
  final String _nativeAdButtonTextColor = "#FFFFFFFF";

  final String _loaderBgColor = "#FF0D0E15";
  final String _loaderTextColor = "#FFFFFFFF";
  final String _loaderColor = "#FF8B5CF6";

  // Logbook for tracking actions
  final List<String> _logs = [];
  final ScrollController _logScrollController = ScrollController();

  @override
  void initState() {
    super.initState();
    // Pre-apply styles on startup statically
    _applyNativeUiStyle();
    _applyLoaderUiStyle();
  }

  void _log(String message) {
    final timestamp = DateTime.now().toString().substring(11, 19);
    setState(() {
      _logs.add("[$timestamp] $message");
    });
    // Auto-scroll to bottom of console
    WidgetsBinding.instance.addPostFrameCallback((_) {
      if (_logScrollController.hasClients) {
        _logScrollController.jumpTo(
          _logScrollController.position.maxScrollExtent,
        );
      }
    });
  }

  Future<void> _checkInitStatus() async {
    try {
      final init = await AdsSdk.isAdsInitialized();
      setState(() {
        _isSdkInitialized = init;
        _sdkStatus = init ? "Initialized (Active)" : "Not Initialized";
      });
      _log("Checked SDK state. Initialized: $init");
    } catch (e) {
      _log("Error checking init status: $e");
    }
  }

  Future<void> _initializeSdk() async {
    setState(() {
      _sdkStatus = "Initializing...";
    });
    _log("Starting SDK initialization...");
    try {
      final result = await AdsSdk.adsInitialize(
        appId: _appIdController.text,
        isDebugOn: false,
      );
      setState(() {
        _isSdkInitialized = true;
        _sdkStatus = "Initialized: $result";
      });
      _log("SDK Initialize result: $result");

      _log("Pre-loading ads priority list...");
      await AdsManager.initAds(isShowAds: "5", adsPriority: "1,2,3");
      _log("Pre-load trigger sent (isShowAds: 5, priority: 1,2,3)");
    } catch (e) {
      setState(() {
        _isSdkInitialized = false;
        _sdkStatus = "Error: $e";
      });
      _log("SDK Initialization crashed: $e");
    }
  }

  void _triggerShowAd(String type, String name) {
    _log("Triggering showAds: type=$type ($name)");
    try {
      AdsManager.showAds(
        isShowAds: type,
        eventName: "DEMO_${name.toUpperCase()}_CLICK",
      );
      _log("ShowAd command dispatched for $name");
    } catch (e) {
      _log("Failed to show standard ad: $e");
    }
  }

  Future<void> _triggerVideoAd(String type, String name) async {
    _log("Triggering showVideoAds: type=$type ($name)");
    try {
      final shown = await AdsManager.showVideoAds(
        isShowAds: type,
        eventName: "DEMO_${name.toUpperCase()}_CLICK",
      );
      _log("Video ad callback completed. Ad shown state: $shown");
    } catch (e) {
      _log("Failed to show video ad: $e");
    }
  }

  Future<void> _applyNativeUiStyle() async {
    _log("Applying Native UI custom styling...");
    try {
      await AdsSdk.setNativeUI(
        NativeUI(
          nativeBackgroundColor: _nativeAdBgColor,
          nativeTitleTextColor: _nativeAdTitleColor,
          nativeButtonBackgroundColor: _nativeAdButtonBgColor,
          nativeButtonTextColor: _nativeAdButtonTextColor,
          nativeBackgroundStrokeColor: "#FFFF0000",
          nativeBackgroundStrokeWidth: 1,
          nativeBackgroundRadius: 12.0,
          nativeIconRadius: 8.0,
          nativeAdTagColor: "#FF10B981",
          nativeAdTagTextColor: "#FFFFFFFF",
          nativeBodyTextColor: "#FF9CA3AF",
          nativeButtonTextSize: 14.0,
          shimmerBackgroundColor: "#FF161824",
          shimmerDarkColor: "#FF232538",
        ),
      );
      _log("Native UI style applied successfully!");
    } catch (e) {
      _log("Failed to apply Native UI style: $e");
    }
  }

  Future<void> _applyLoaderUiStyle() async {
    _log("Applying Loader UI custom branding...");
    try {
      await AdsSdk.setLoaderUI(
        LoaderUI(
          background: _loaderBgColor,
          textColor: _loaderTextColor,
          loaderColor: _loaderColor,
          cornerRadius: 12.0,
        ),
      );
      _log("Loader UI style applied successfully!");
    } catch (e) {
      _log("Failed to apply Loader UI style: $e");
    }
  }

  void _triggerNativeToast() {
    final msg = _toastMsgController.text;
    _log("Triggering custom toast: '$msg'");

    // Parse hex colors for simulation
    Color bg = const Color(0xFF8B5CF6);
    try {
      bg = Color(int.parse(_toastBgColor.replaceAll('#', '0x')));
    } catch (_) {}

    Color txt = Colors.white;
    try {
      txt = Color(int.parse(_toastTextColor.replaceAll('#', '0x')));
    } catch (_) {}

    ScaffoldMessenger.of(context).showSnackBar(
      SnackBar(
        content: Text(
          msg,
          style: TextStyle(color: txt, fontWeight: FontWeight.bold),
        ),
        backgroundColor: bg,
        duration: _isToastLong
            ? const Duration(seconds: 4)
            : const Duration(seconds: 2),
        behavior: SnackBarBehavior.floating,
        shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
      ),
    );
    _log("Toast simulation displayed successfully (API absent in v1.0.0)");
  }

  @override
  void dispose() {
    _appIdController.dispose();
    _toastMsgController.dispose();
    _logScrollController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Row(
          children: [
            Icon(Icons.monetization_on, color: Color(0xFF10B981)),
            SizedBox(width: 10),
            Text(
              'Ads & Toast Monetize',
              style: TextStyle(fontWeight: FontWeight.bold, letterSpacing: 0.8),
            ),
          ],
        ),
        backgroundColor: const Color(0xFF161824),
        actions: [
          IconButton(
            icon: const Icon(Icons.refresh),
            onPressed: () {
              _checkInitStatus();
              _log("Status manually refreshed");
            },
            tooltip: "Refresh Status",
          ),
          IconButton(
            icon: const Icon(Icons.delete_sweep_outlined),
            onPressed: () {
              setState(() {
                _logs.clear();
              });
            },
            tooltip: "Clear Logs",
          ),
        ],
      ),
      body: SingleChildScrollView(
        physics: const BouncingScrollPhysics(),
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            // SDK Configuration Card
            _buildSdkConfigCard(),
            const SizedBox(height: 16),

            // Ad Controls Card
            _buildAdsControlCard(),
            const SizedBox(height: 16),

            // App Open Ad Controls Card
            _buildAppOpenCard(),
            const SizedBox(height: 16),

            // Custom Toast Message Card
            _buildToastCard(),
            const SizedBox(height: 16),

            // Log Console Card
            _buildConsoleCard(),
            const SizedBox(height: 16),

            // Embedded Native Ad Widget Demo
            _buildEmbeddedNativeAdCard(),
            const SizedBox(height: 16),

            // Embedded Banner Ad Widget Demo
            _buildEmbeddedBannerAdCard(),
            const SizedBox(height: 80),
            // extra padding for bottom banner anchor
          ],
        ),
      ),
      bottomSheet: _buildBottomBannerWidget(),
    );
  }

  Widget _buildSdkConfigCard() {
    return Card(
      child: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                const Text(
                  "SDK Config",
                  style: TextStyle(
                    fontSize: 18,
                    fontWeight: FontWeight.bold,
                    color: Colors.white70,
                  ),
                ),
                Container(
                  padding: const EdgeInsets.symmetric(
                    horizontal: 10,
                    vertical: 4,
                  ),
                  decoration: BoxDecoration(
                    color: _isSdkInitialized
                        ? const Color(0xFF10B981).withOpacity(0.15)
                        : const Color(0xFFF59E0B).withOpacity(0.15),
                    borderRadius: BorderRadius.circular(20),
                    border: Border.all(
                      color: _isSdkInitialized
                          ? const Color(0xFF10B981)
                          : const Color(0xFFF59E0B),
                      width: 1,
                    ),
                  ),
                  child: Row(
                    mainAxisSize: MainAxisSize.min,
                    children: [
                      Icon(
                        _isSdkInitialized
                            ? Icons.check_circle
                            : Icons.warning_rounded,
                        color: _isSdkInitialized
                            ? const Color(0xFF10B981)
                            : const Color(0xFFF59E0B),
                        size: 14,
                      ),
                      const SizedBox(width: 5),
                      Text(
                        _isSdkInitialized ? "Online" : "Offline",
                        style: TextStyle(
                          color: _isSdkInitialized
                              ? const Color(0xFF10B981)
                              : const Color(0xFFF59E0B),
                          fontWeight: FontWeight.bold,
                          fontSize: 12,
                        ),
                      ),
                    ],
                  ),
                ),
              ],
            ),
            const Divider(color: Color(0xFF282B3E), height: 24),
            TextField(
              controller: _appIdController,
              decoration: const InputDecoration(
                labelText: 'Google AdMob App ID',
                labelStyle: TextStyle(color: Colors.white60),
                border: OutlineInputBorder(),
                prefixIcon: Icon(Icons.vpn_key_outlined),
                focusedBorder: OutlineInputBorder(
                  borderSide: BorderSide(color: Color(0xFF8B5CF6), width: 2),
                ),
              ),
            ),
            const SizedBox(height: 12),
            Row(
              children: [
                Expanded(
                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      const Text(
                        "Status Message",
                        style: TextStyle(color: Colors.white38, fontSize: 12),
                      ),
                      const SizedBox(height: 2),
                      Text(
                        _sdkStatus,
                        style: TextStyle(
                          fontWeight: FontWeight.bold,
                          color: _isSdkInitialized
                              ? const Color(0xFF10B981)
                              : const Color(0xFFEF4444),
                        ),
                        maxLines: 1,
                        overflow: TextOverflow.ellipsis,
                      ),
                    ],
                  ),
                ),
                const SizedBox(width: 12),
                ElevatedButton.icon(
                  onPressed: _initializeSdk,
                  icon: const Icon(Icons.rocket_launch, size: 18),
                  label: const Text("Initialize"),
                  style: ElevatedButton.styleFrom(
                    backgroundColor: const Color(0xFF8B5CF6),
                    foregroundColor: Colors.white,
                    padding: const EdgeInsets.symmetric(
                      horizontal: 16,
                      vertical: 12,
                    ),
                    shape: RoundedRectangleBorder(
                      borderRadius: BorderRadius.circular(10),
                    ),
                  ),
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }

  Widget _buildAdsControlCard() {
    return Card(
      child: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            const Text(
              "Trigger Ad Unit formats",
              style: TextStyle(
                fontSize: 18,
                fontWeight: FontWeight.bold,
                color: Colors.white70,
              ),
            ),
            const Divider(color: Color(0xFF282B3E), height: 24),
            const Text(
              "Standard Ads (AdsManager.showAds)",
              style: TextStyle(
                fontWeight: FontWeight.w600,
                color: Colors.white54,
                fontSize: 13,
              ),
            ),
            const SizedBox(height: 8),
            GridView.count(
              shrinkWrap: true,
              physics: const NeverScrollableScrollPhysics(),
              crossAxisCount: 2,
              crossAxisSpacing: 10,
              mainAxisSpacing: 10,
              childAspectRatio: 2.8,
              children: [
                _buildAdButton(
                  "Interstitial (1)",
                  () => _triggerShowAd("1", "Interstitial"),
                ),
                _buildAdButton(
                  "Rewarded (2)",
                  () => _triggerShowAd("2", "Rewarded"),
                ),
                _buildAdButton(
                  "Redirect (3)",
                  () => _triggerShowAd("3", "Redirect"),
                ),
                _buildAdButton(
                  "Full Native (4)",
                  () => _triggerShowAd("4", "Full Native"),
                ),
              ],
            ),
            const SizedBox(height: 16),
            const Text(
              "Video Ads (AdsManager.showVideoAds)",
              style: TextStyle(
                fontWeight: FontWeight.w600,
                color: Colors.white54,
                fontSize: 13,
              ),
            ),
            const SizedBox(height: 8),
            Row(
              children: [
                Expanded(
                  child: _buildAdButton(
                    "Video Inter (1)",
                    () => _triggerVideoAd("1", "Video Inter"),
                    icon: Icons.video_collection_outlined,
                  ),
                ),
                const SizedBox(width: 10),
                Expanded(
                  child: _buildAdButton(
                    "Video Reward (2)",
                    () => _triggerVideoAd("2", "Video Reward"),
                    icon: Icons.video_library_outlined,
                  ),
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }

  Widget _buildAdButton(
    String label,
    VoidCallback onPressed, {
    IconData icon = Icons.ads_click,
  }) {
    return ElevatedButton.icon(
      onPressed: _isSdkInitialized ? onPressed : null,
      icon: Icon(icon, size: 16),
      label: Text(
        label,
        style: const TextStyle(fontSize: 12, fontWeight: FontWeight.bold),
      ),
      style: ElevatedButton.styleFrom(
        backgroundColor: const Color(0xFF232538),
        foregroundColor: Colors.white,
        disabledBackgroundColor: const Color(0xFF161824).withOpacity(0.5),
        disabledForegroundColor: Colors.white30,
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(10),
          side: BorderSide(
            color: _isSdkInitialized
                ? const Color(0xFF3B3E5B)
                : Colors.transparent,
            width: 1,
          ),
        ),
        padding: const EdgeInsets.symmetric(horizontal: 12),
      ),
    );
  }

  Widget _buildAppOpenCard() {
    return Card(
      child: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            const Text(
              "App Open Ads Control",
              style: TextStyle(
                fontSize: 18,
                fontWeight: FontWeight.bold,
                color: Colors.white70,
              ),
            ),
            const Divider(color: Color(0xFF282B3E), height: 24),
            SwitchListTile(
              contentPadding: EdgeInsets.zero,
              title: const Text('Block App Open Ads'),
              subtitle: const Text(
                'Blocks the automatic overlay when app is resumed',
              ),
              value: _appOpenBlocked,
              activeColor: const Color(0xFF8B5CF6),
              onChanged: _isSdkInitialized
                  ? (bool value) {
                      setState(() {
                        _appOpenBlocked = value;
                      });
                      if (value) {
                        AdsManager.blockAppOpen();
                        _log("App Open block requested (blockAppOpen)");
                      } else {
                        AdsManager.allowAppOpen();
                        _log("App Open block released (allowAppOpen)");
                      }
                    }
                  : null,
            ),
            const SizedBox(height: 12),
            Center(
              child: SizedBox(
                width: double.infinity,
                child: ElevatedButton.icon(
                  onPressed: _isSdkInitialized
                      ? () {
                          _log("Forcing manual App Open display...");
                          AdsManager.showAppOpen();
                        }
                      : null,
                  icon: const Icon(Icons.flip_to_front_outlined),
                  label: const Text("Force Display App Open"),
                  style: ElevatedButton.styleFrom(
                    backgroundColor: const Color(0xFF2E1C59),
                    foregroundColor: Colors.white,
                    disabledBackgroundColor: const Color(
                      0xFF161824,
                    ).withOpacity(0.5),
                    disabledForegroundColor: Colors.white30,
                    shape: RoundedRectangleBorder(
                      borderRadius: BorderRadius.circular(10),
                      side: BorderSide(
                        color: _isSdkInitialized
                            ? const Color(0xFF5D3EBB)
                            : Colors.transparent,
                      ),
                    ),
                    padding: const EdgeInsets.symmetric(vertical: 12),
                  ),
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }

  Widget _buildToastCard() {
    return Card(
      child: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            const Text(
              "Native Toast Customizer",
              style: TextStyle(
                fontSize: 18,
                fontWeight: FontWeight.bold,
                color: Colors.white70,
              ),
            ),
            const Divider(color: Color(0xFF282B3E), height: 24),
            TextField(
              controller: _toastMsgController,
              decoration: const InputDecoration(
                labelText: 'Toast Message',
                labelStyle: TextStyle(color: Colors.white60),
                border: OutlineInputBorder(),
                prefixIcon: Icon(Icons.short_text_outlined),
                focusedBorder: OutlineInputBorder(
                  borderSide: BorderSide(color: Color(0xFF8B5CF6), width: 2),
                ),
              ),
            ),
            const SizedBox(height: 12),
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                Row(
                  children: [
                    const Text("Long Duration:"),
                    Switch(
                      value: _isToastLong,
                      activeColor: const Color(0xFF8B5CF6),
                      onChanged: (val) {
                        setState(() {
                          _isToastLong = val;
                        });
                      },
                    ),
                  ],
                ),
                ElevatedButton.icon(
                  onPressed: _triggerNativeToast,
                  icon: const Icon(Icons.chat_bubble_outline),
                  label: const Text("Show Toast"),
                  style: ElevatedButton.styleFrom(
                    backgroundColor: const Color(0xFF10B981),
                    foregroundColor: Colors.white,
                    padding: const EdgeInsets.symmetric(
                      horizontal: 16,
                      vertical: 12,
                    ),
                    shape: RoundedRectangleBorder(
                      borderRadius: BorderRadius.circular(10),
                    ),
                  ),
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }

  Widget _buildConsoleCard() {
    return Card(
      child: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            const Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                Text(
                  "Event Log Console",
                  style: TextStyle(
                    fontSize: 16,
                    fontWeight: FontWeight.bold,
                    color: Colors.white70,
                  ),
                ),
                Icon(Icons.terminal_outlined, color: Colors.white30, size: 18),
              ],
            ),
            const SizedBox(height: 10),
            Container(
              height: 140,
              width: double.infinity,
              padding: const EdgeInsets.all(10),
              decoration: BoxDecoration(
                color: const Color(0xFF090A10),
                borderRadius: BorderRadius.circular(8),
                border: Border.all(color: const Color(0xFF282B3E)),
              ),
              child: _logs.isEmpty
                  ? const Center(
                      child: Text(
                        "Console empty. Trigger actions to see callback logs.",
                        style: TextStyle(color: Colors.white24, fontSize: 12),
                      ),
                    )
                  : ListView.builder(
                      controller: _logScrollController,
                      itemCount: _logs.length,
                      physics: const ClampingScrollPhysics(),
                      itemBuilder: (context, idx) {
                        return Padding(
                          padding: const EdgeInsets.only(bottom: 4.0),
                          child: Text(
                            _logs[idx],
                            style: TextStyle(
                              fontFamily: 'Courier',
                              fontSize: 11,
                              color:
                                  _logs[idx].contains("crashed") ||
                                      _logs[idx].contains("Error")
                                  ? Colors.redAccent
                                  : _logs[idx].contains("successfully") ||
                                        _logs[idx].contains("Online")
                                  ? Colors.greenAccent
                                  : Colors.white70,
                            ),
                          ),
                        );
                      },
                    ),
            ),
          ],
        ),
      ),
    );
  }

  Widget _buildEmbeddedNativeAdCard() {
    return Card(
      child: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            const Text(
              "Embedded Native Ad (Big Type)",
              style: TextStyle(
                fontSize: 16,
                fontWeight: FontWeight.bold,
                color: Colors.white70,
              ),
            ),
            const Divider(color: Color(0xFF282B3E), height: 24),
            if (!_isSdkInitialized)
              const Center(
                child: Padding(
                  padding: EdgeInsets.symmetric(vertical: 24.0),
                  child: Text(
                    "SDK not initialized. Initialize the SDK to load embedded Native ad.",
                    style: TextStyle(
                      color: Colors.white24,
                      fontStyle: FontStyle.italic,
                      fontSize: 13,
                    ),
                    textAlign: TextAlign.center,
                  ),
                ),
              )
            else
              Container(
                height: 320,
                decoration: BoxDecoration(
                  color: const Color(0xFF0F101A),
                  borderRadius: BorderRadius.circular(12),
                  border: Border.all(color: const Color(0xFF1E2235)),
                ),
                child: const ClipRRect(
                  borderRadius: BorderRadius.all(Radius.circular(12)),
                  child: MonetizeNativeAd(
                    eventName: "DEMO_DASHBOARD_NATIVE",
                    type: NativeAdsType.BIG,
                  ),
                ),
              ),
          ],
        ),
      ),
    );
  }

  Widget _buildEmbeddedBannerAdCard() {
    return Card(
      child: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            const Text(
              "Embedded Banner Ad (Adaptive Type)",
              style: TextStyle(
                fontSize: 16,
                fontWeight: FontWeight.bold,
                color: Colors.white70,
              ),
            ),
            const Divider(color: Color(0xFF282B3E), height: 24),
            if (!_isSdkInitialized)
              const Center(
                child: Padding(
                  padding: EdgeInsets.symmetric(vertical: 16.0),
                  child: Text(
                    "SDK not initialized. Initialize the SDK to load banner ad.",
                    style: TextStyle(
                      color: Colors.white24,
                      fontStyle: FontStyle.italic,
                      fontSize: 13,
                      ),
                    textAlign: TextAlign.center,
                  ),
                ),
              )
            else
              Container(
                height: 60,
                decoration: BoxDecoration(
                  color: const Color(0xFF0F101A),
                  borderRadius: BorderRadius.circular(8),
                  border: Border.all(color: const Color(0xFF1E2235)),
                ),
                child: const Center(
                  child: MonetizeBannerAd(
                    eventName: "DEMO_DASHBOARD_BANNER",
                    bannerType: BannerType.ADAPTIVE,
                  ),
                ),
              ),
          ],
        ),
      ),
    );
  }

  Widget? _buildBottomBannerWidget() {
    if (!_isSdkInitialized) return null;
    return Container(
      color: const Color(0xFF161824),
      height: 60,
      width: double.infinity,
      alignment: Alignment.center,
      child: const MonetizeBannerAd(
        eventName: "DEMO_ANCHORED_BANNER",
        bannerType: BannerType.ADAPTIVE,
      ),
    );
  }
}
0
likes
150
points
264
downloads

Documentation

API reference

Publisher

verified publisherads.pdavenue.com

Weekly Downloads

A Flutter plugin bridging the native Android Ads Monetize SDK to display standard (interstitial/rewarded), video, app open, native, and banner ads.

Homepage

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on pdavenue_ads_monetize

Packages that implement pdavenue_ads_monetize