adwhale_sdk_flutter 2.7.2+7 copy "adwhale_sdk_flutter: ^2.7.2+7" to clipboard
adwhale_sdk_flutter: ^2.7.2+7 copied to clipboard

Adwhale SDK Flutter plugin for integrating Adwhale advertising mediation SDK into Flutter applications.

example/lib/main.dart

import 'dart:io' show Platform;

import 'package:flutter/material.dart';
import 'package:adwhale_sdk_flutter/adwhale_sdk_flutter.dart';

import 'android/guide_sample_android.dart';
import 'guide_sample_ios.dart';
import 'guide_sample_integration.dart';
import 'integration/mediation_ads_test_page.dart';
import 'android/advanced_appopenad.dart';
import 'android/advanced_banner.dart';
import 'android/advanced_nativead.dart';
import 'android/foreground_test_page.dart';
import 'android/native_test_page.dart';
import 'android/preload_banner.dart';
import 'android/styled_template_native.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  final result = await AdWhaleMediationAds.instance.initialize();
  debugPrint('AdWhale SDK 초기화 결과: $result');
  
  if (result.isSuccess) {
    runApp(const MyApp());
  } else {
    // 초기화 실패 시 에러 화면 표시
    runApp(MaterialApp(
      home: Scaffold(
        body: Center(
          child: Text(
            'SDK 초기화 실패\nstatusCode: ${result.statusCode}\nmessage: ${result.message}',
            textAlign: TextAlign.center,
          ),
        ),
      ),
    ));
  }
}

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

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: MainMenuPage(),
    );
  }
}

/// QA 샘플앱(`activity_main.xml`)의 메인 화면과 동일한 구성을 가진 Flutter 메인 메뉴.
class MainMenuPage extends StatelessWidget {
  const MainMenuPage({super.key});

  @override
  Widget build(BuildContext context) {
    final isAndroid = Platform.isAndroid;
    return Scaffold(
      backgroundColor: Colors.white,
      body: Center(
        child: SingleChildScrollView(
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: isAndroid ? _buildAndroidMenu(context) : _buildIosMenu(context),
          ),
        ),
      ),
    );
  }

  /// Android 실행 시 표시: guide_sample, guide_sample_integration + lib/android 샘플.
  List<Widget> _buildAndroidMenu(BuildContext context) {
    return [
      _buildCenterButton(
        context,
        text: 'AdWhaleMediationAds API 단위 테스트',
        onPressed: () {
          Navigator.of(context).push(
            MaterialPageRoute(
                builder: (_) => const MediationAdsTestPage()),
          );
        },
      ),
      const SizedBox(height: 12),
      _buildCenterButton(
        context,
        text: '기본 배너, 전면, 보상형, 네이티브, 앱오프닝 테스트',
        onPressed: () {
          Navigator.of(context).push(
            MaterialPageRoute(builder: (_) => const GuideSampleAndroidPage()),
          );
        },
      ),
      const SizedBox(height: 12),
      _buildCenterButton(
        context,
        text: 'Android / iOS 통합 배너 샘플',
        onPressed: () {
          Navigator.of(context).push(
            MaterialPageRoute(
                builder: (_) => const GuideSampleIntegrationPage()),
          );
        },
      ),
      const SizedBox(height: 12),
      _buildCenterButton(
        context,
        text: '고급 앱오프닝 테스트',
        onPressed: () {
          Navigator.of(context).push(
            MaterialPageRoute(builder: (_) => const AdvancedAppOpenAdPage()),
          );
        },
      ),
      const SizedBox(height: 12),
      _buildCenterButton(
        context,
        text: '고급 배너 테스트',
        onPressed: () {
          Navigator.of(context).push(
            MaterialPageRoute(builder: (_) => const AdvancedBannerPage()),
          );
        },
      ),
      const SizedBox(height: 12),
      _buildCenterButton(
        context,
        text: '고급 네이티브광고 테스트',
        onPressed: () {
          Navigator.of(context).push(
            MaterialPageRoute(builder: (_) => const AdvancedNativeAdPage()),
          );
        },
      ),
      const SizedBox(height: 12),
      _buildCenterButton(
        context,
        text: '포그라운드 테스트',
        onPressed: () {
          Navigator.of(context).push(
            MaterialPageRoute(builder: (_) => const ForegroundTestPage()),
          );
        },
      ),
      const SizedBox(height: 12),
      _buildCenterButton(
        context,
        text: '네이티브 테스트',
        onPressed: () {
          Navigator.of(context).push(
            MaterialPageRoute(builder: (_) => const NativeTestPage()),
          );
        },
      ),
      const SizedBox(height: 12),
      _buildCenterButton(
        context,
        text: '프리로드 배너',
        onPressed: () {
          Navigator.of(context).push(
            MaterialPageRoute(builder: (_) => const PreloadBannerPage()),
          );
        },
      ),
      const SizedBox(height: 12),
      _buildCenterButton(
        context,
        text: '스타일 템플릿 네이티브',
        onPressed: () {
          Navigator.of(context).push(
            MaterialPageRoute(builder: (_) => const StyledTemplateNativePage()),
          );
        },
      ),
    ];
  }

  /// iOS 등 비안드로이드 실행 시 표시.
  List<Widget> _buildIosMenu(BuildContext context) {
    return [
      _buildCenterButton(
        context,
        text: 'AdWhaleMediationAds API 단위 테스트',
        onPressed: () {
          Navigator.of(context).push(
            MaterialPageRoute(
                builder: (_) => const MediationAdsTestPage()),
          );
        },
      ),
      const SizedBox(height: 12),
      _buildCenterButton(
        context,
        text: 'iOS 전용 배너 샘플',
        onPressed: () {
          Navigator.of(context).push(
            MaterialPageRoute(builder: (_) => const GuideSampleIosPage()),
          );
        },
      ),
      const SizedBox(height: 12),
      _buildCenterButton(
        context,
        text: 'Android / iOS 통합 배너 샘플',
        onPressed: () {
          Navigator.of(context).push(
            MaterialPageRoute(
                builder: (_) => const GuideSampleIntegrationPage()),
          );
        },
      ),
    ];
  }

  Widget _buildCenterButton(
    BuildContext context, {
    required String text,
    required VoidCallback onPressed,
  }) {
    return ElevatedButton(
      onPressed: onPressed,
      style: ElevatedButton.styleFrom(
        backgroundColor: const Color(0xFF6739F5), // 스크린샷과 비슷한 보라색
        foregroundColor: Colors.white, // 텍스트/아이콘 색상
        padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 12),
        textStyle: const TextStyle(fontSize: 13),
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(4),
        ),
      ),
      child: Text(
        text,
        textAlign: TextAlign.center,
      ),
    );
  }
}
0
likes
135
points
22
downloads

Publisher

unverified uploader

Weekly Downloads

Adwhale SDK Flutter plugin for integrating Adwhale advertising mediation SDK into Flutter applications.

Homepage

Documentation

API reference

License

MIT (license)

Dependencies

flutter, meta, plugin_platform_interface, visibility_detector

More

Packages that depend on adwhale_sdk_flutter

Packages that implement adwhale_sdk_flutter