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
1
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

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

Homepage

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