Flutter广告展示插件yodosdk的使用

Flutter广告展示插件yodosdk的使用

在本示例中,我们将详细介绍如何使用yodosdk插件来展示不同的广告类型。这些广告类型包括插屏广告(Interstitial Ads)、激励视频广告(Rewarded Ads)、原生广告(Native Ads)和横幅广告(Banner Ads)。我们将通过一个完整的示例代码来展示如何初始化SDK并展示不同类型的广告。

安装

首先,在你的pubspec.yaml文件中添加yodosdk依赖:

dependencies:
  yodosdk: ^版本号

然后,导入插件:

import 'package:yodosdk/yodosdk.dart';

初始化SDK

在应用启动时,需要调用initSdk方法来初始化SDK。这一步骤非常重要,因为只有初始化成功后才能加载和展示广告。

await Yodosdk.initSdk(
  appId: "Your Yodo app key", // 你的应用ID
  preLoadAds: true, // 预加载广告以提高缓冲速度
  showPrivacyDialog: true, // 显示隐私对话框
  initAdCallback: InitAdCallback(
    onSuccess: () {
      // 初始化成功回调
      print("初始化成功");
    },
    onError: (error) {
      // 初始化失败回调
      print("初始化失败: $error");
    },
  ),
);

展示插屏广告

插屏广告通常在用户进行特定操作或等待一段时间后展示。以下是展示插屏广告的代码:

Yodosdk.loadAndShowInter(
  fullScreenAdCallbacks: FullScreenAdCallbacks(
    onLoad: (adId) {
      // 广告加载成功回调
      print("插屏广告加载成功");
    },
    onAdLoadFail: (adId) {
      // 广告加载失败回调
      print("插屏广告加载失败");
    },
    onAdOpen: (adId) {
      // 广告打开回调
      print("插屏广告打开");
    },
    onAdOpenFail: (adId) {
      // 广告打开失败回调
      print("插屏广告打开失败");
    },
    onClose: (adId) {
      // 广告关闭回调
      print("插屏广告关闭");
    },
  ),
);

展示激励视频广告

激励视频广告通常在用户完成某个任务后展示,并且用户可以选择观看广告来获得奖励。以下是展示激励视频广告的代码:

Yodosdk.loadAndShowReward(
  rewardAdCallbacks: RewardAdCallbacks(
    onRewardEarned: (adId) {
      // 用户获得奖励回调
      print("用户获得奖励");
    },
    onLoad: (adId) {
      // 广告加载成功回调
      print("激励视频广告加载成功");
    },
    onAdLoadFail: (adId) {
      // 广告加载失败回调
      print("激励视频广告加载失败");
    },
    onAdOpen: (adId) {
      // 广告打开回调
      print("激励视频广告打开");
    },
    onAdOpenFail: (adId) {
      // 广告打开失败回调
      print("激励视频广告打开失败");
    },
    onClose: (adId) {
      // 广告关闭回调
      print("激励视频广告关闭");
    },
  ),
);

展示激励插屏广告

激励插屏广告与激励视频广告类似,但它们是在特定界面打开时展示的插屏广告。以下是展示激励插屏广告的代码:

Yodosdk.loadAndShowRewardInter(
  rewardAdCallbacks: RewardAdCallbacks(
    onRewardEarned: (adId) {
      // 用户获得奖励回调
      print("用户获得奖励");
    },
    onLoad: (adId) {
      // 广告加载成功回调
      print("激励插屏广告加载成功");
    },
    onAdLoadFail: (adId) {
      // 广告加载失败回调
      print("激励插屏广告加载失败");
    },
    onAdOpen: (adId) {
      // 广告打开回调
      print("激励插屏广告打开");
    },
    onAdOpenFail: (adId) {
      // 广告打开失败回调
      print("激励插屏广告打开失败");
    },
    onClose: (adId) {
      // 广告关闭回调
      print("激励插屏广告关闭");
    },
  ),
);

展示开屏广告

开屏广告通常在应用启动时展示。以下是展示开屏广告的代码:

Yodosdk.loadAndShowAppOpen(
  fullScreenAdCallbacks: FullScreenAdCallbacks(
    onLoad: (adId) {
      // 广告加载成功回调
      print("开屏广告加载成功");
    },
    onAdLoadFail: (adId) {
      // 广告加载失败回调
      print("开屏广告加载失败");
    },
    onAdOpen: (adId) {
      // 广告打开回调
      print("开屏广告打开");
    },
    onAdOpenFail: (adId) {
      // 广告打开失败回调
      print("开屏广告打开失败");
    },
    onClose: (adId) {
      // 广告关闭回调
      print("开屏广告关闭");
    },
  ),
);

展示原生广告

原生广告允许开发者自定义广告样式,使其更符合应用的整体设计。以下是展示原生广告的代码:

Yodosdk.getNative(
  size: NativeSize.nativeLarge, // 原生广告容器大小
  nativeAdCallback: NativeAdCallback(
    onLoad: () {
      // 广告加载成功回调
      print("原生广告加载成功");
    },
    onClosed: () {
      // 广告关闭回调
      print("原生广告关闭");
    },
    onLoadFailed: (errorMessage) {
      // 广告加载失败回调
      print("原生广告加载失败: $errorMessage");
    },
  ),
);

展示横幅广告

横幅广告通常固定在屏幕底部或顶部。以下是展示横幅广告的代码:

Yodosdk.getBanner(
  size: BannerSize.adaptiveBanner, // 横幅广告尺寸
  bannerAdCallback: BannerAdCallback(
    onLoad: () {
      // 广告加载成功回调
      print("横幅广告加载成功");
    },
    onClosed: () {
      // 广告关闭回调
      print("横幅广告关闭");
    },
    onLoadFailed: (errorMessage) {
      // 广告加载失败回调
      print("横幅广告加载失败: $errorMessage");
    },
    onOpen: () {
      // 广告打开回调
      print("横幅广告打开");
    },
    onOpenFail: (String error) {
      // 广告打开失败回调
      print("横幅广告打开失败: $error");
    },
  ),
);

完整示例代码

以下是一个完整的示例代码,展示了如何初始化SDK并展示不同类型广告。

import 'package:flutter/material.dart';
import 'dart:async';
import 'package:yodosdk/Banner/BannerAdCallback.dart';
import 'package:yodosdk/Banner/Yodo_BannerAd.dart';
import 'package:yodosdk/Init/InitAdCallback.dart';
import 'package:yodosdk/Inter/FullScreenAdCallbacks.dart';
import 'package:yodosdk/Native/NativeAdCallback.dart';
import 'package:yodosdk/Native/YodoNativeAd.dart';
import 'package:yodosdk/Reward/RewardAdCallbacks.dart';
import 'package:yodosdk/yodosdk.dart';

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

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String interStatus = "No Status";
  String rewardStatus = "No Status";
  String initStatus = "Not Init";
  String rewardInterStatus = "No Status";
  String nativeStatus = "No Status";
  String bannerStatus = "No Status";
  String appOpenStatus = "No Status";
  bool adLoader = false;

  [@override](/user/override)
  void initState() {
    super.initState();
  }

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> initPlugin() async {
    await Yodosdk.initSdk(
      appId: "viMNv8OKOh",
      preLoadAds: true,
      showPrivacyDialog: true,
      initAdCallback: InitAdCallback(
        onSuccess: () {
          setInitStatus("Success");
          print("Success Init ===========>");
        },
        onError: (error) {
          setInitStatus(error.toString());
          print("Error Init ======> $error");
        },
      ),
    );
  }

  setInitStatus(String status) {
    if (mounted) {
      setState(() {
        initStatus = status;
      });
    }
  }

  setNativeStatus(String status) {
    if (mounted) {
      setState(() {
        nativeStatus = status;
      });
    }
  }

  setBannerStatus(String status) {
    if (mounted) {
      setState(() {
        bannerStatus = status;
      });
    }
  }

  onLoader() {
    if (mounted) {
      setState(() {
        adLoader = true;
      });
    }
  }

  offLoader() {
    if (mounted) {
      setState(() {
        adLoader = false;
      });
    }
  }

  setInterStatus(String status) {
    if (mounted) {
      setState(() {
        interStatus = status;
      });
    }
  }

  setRewardStatus(String status) {
    if (mounted) {
      setState(() {
        rewardStatus = status;
      });
    }
  }

  setRewardInterStatus(String status) {
    if (mounted) {
      setState(() {
        rewardInterStatus = status;
      });
    }
  }

  setAppOpenStatus(String status) {
    if (mounted) {
      setState(() {
        appOpenStatus = status;
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          backgroundColor: const Color(0xFFE5873C),
          elevation: 0,
          title: const Text('Yodo1 Plugin Demo'),
        ),
        body: ListView(
          children: [
            const SizedBox(
              height: 10,
            ),
            Container(
              margin: const EdgeInsets.symmetric(horizontal: 10),
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                mainAxisAlignment: MainAxisAlignment.start,
                children: [
                  Row(
                    children: [
                      const Text(
                        "Sdk Init Status:  ",
                        style: TextStyle(fontWeight: FontWeight.bold),
                      ),
                      Expanded(
                          child: Text(
                        initStatus,
                        style: const TextStyle(fontWeight: FontWeight.w500),
                      )),
                    ],
                  ),
                  const Divider(),
                  Row(
                    children: [
                      const Text(
                        "Inter Status:  ",
                        style: TextStyle(fontWeight: FontWeight.bold),
                      ),
                      Expanded(
                          child: Text(
                        interStatus,
                        style: const TextStyle(fontWeight: FontWeight.w500),
                      )),
                    ],
                  ),
                  const Divider(),
                  Row(
                    children: [
                      const Text(
                        "Reward Status:  ",
                        style: TextStyle(fontWeight: FontWeight.bold),
                      ),
                      Expanded(
                          child: Text(
                        rewardStatus,
                        style: const TextStyle(fontWeight: FontWeight.w500),
                      )),
                    ],
                  ),
                  const Divider(),
                  Row(
                    children: [
                      const Text(
                        "Reward Inter Status:  ",
                        style: TextStyle(fontWeight: FontWeight.bold),
                      ),
                      Expanded(
                          child: Text(
                        rewardInterStatus,
                        style: const TextStyle(fontWeight: FontWeight.w500),
                      )),
                    ],
                  ),
                  const Divider(),
                  Row(
                    children: [
                      const Text(
                        "Native Status:  ",
                        style: TextStyle(fontWeight: FontWeight.bold),
                      ),
                      Expanded(
                          child: Text(
                        nativeStatus,
                        style: const TextStyle(fontWeight: FontWeight.w500),
                      )),
                    ],
                  ),
                  const Divider(),
                  Row(
                    children: [
                      const Text(
                        "Banner Status:  ",
                        style: TextStyle(fontWeight: FontWeight.bold),
                      ),
                      Expanded(
                        child: Text(
                          bannerStatus,
                          style: const TextStyle(fontWeight: FontWeight.w500),
                        ),
                      ),
                    ],
                  ),
                  const Divider(),
                  Row(
                    children: [
                      const Text(
                        "Appopen Status:  ",
                        style: TextStyle(fontWeight: FontWeight.bold),
                      ),
                      Expanded(
                        child: Text(
                          appOpenStatus,
                          style: const TextStyle(fontWeight: FontWeight.w500),
                        ),
                      ),
                    ],
                  ),
                ],
              ),
            ),
            const SizedBox(
              height: 10,
            ),
            adLoader
                ? const Center(child: CircularProgressIndicator())
                : Column(
                    children: [
                      Row(
                        children: [
                          Expanded(
                            child: Container(
                              margin:
                                  const EdgeInsets.symmetric(horizontal: 10),
                              child: MaterialButton(
                                color: const Color(0xFFE5873C),
                                elevation: 0,
                                onPressed: () {
                                  initPlugin();
                                },
                                child: const Row(
                                  crossAxisAlignment: CrossAxisAlignment.center,
                                  mainAxisAlignment: MainAxisAlignment.center,
                                  children: [
                                    Icon(Icons.start, color: Colors.white),
                                    SizedBox(
                                      width: 10,
                                    ),
                                    Expanded(
                                      child: Text(
                                        "Init Plugin",
                                        style: TextStyle(color: Colors.white),
                                      ),
                                    )
                                  ],
                                ),
                              ),
                            ),
                          ),
                          Expanded(
                            child: Container(
                              margin:
                                  const EdgeInsets.symmetric(horizontal: 10),
                              child: MaterialButton(
                                color: const Color(0xFFE5873C),
                                elevation: 0,
                                onPressed: () {
                                  onLoader();
                                  Yodosdk.loadAndShowInter(
                                    fullScreenAdCallbacks:
                                        FullScreenAdCallbacks(
                                      onLoad: (adId) {
                                        offLoader();
                                        setInterStatus("Loaded");
                                      },
                                      onAdLoadFail: (adId) {
                                        offLoader();
                                        setInterStatus("Fail to Load ");
                                      },
                                      onAdOpen: (adId) {
                                        setInterStatus("Ad Open");
                                      },
                                      onAdOpenFail: (adId) {
                                        offLoader();
                                        setInterStatus("Failed to Open");
                                      },
                                      onClose: (adId) {
                                        offLoader();
                                        setInterStatus("Closed");
                                      },
                                    ),
                                  );
                                },
                                child: const Row(
                                  crossAxisAlignment: CrossAxisAlignment.center,
                                  mainAxisAlignment: MainAxisAlignment.center,
                                  children: [
                                    Icon(Icons.fullscreen, color: Colors.white),
                                    SizedBox(
                                      width: 10,
                                    ),
                                    Text(
                                      "Inter Demo",
                                      style: TextStyle(color: Colors.white),
                                    )
                                  ],
                                ),
                              ),
                            ),
                          ),
                        ],
                      ),
                      Row(
                        children: [
                          Expanded(
                            child: Container(
                              margin:
                                  const EdgeInsets.symmetric(horizontal: 10),
                              child: MaterialButton(
                                color: const Color(0xFFE5873C),
                                elevation: 0,
                                onPressed: () {
                                  onLoader();
                                  Yodosdk.loadAndShowReward(
                                    rewardAdCallbacks: RewardAdCallbacks(
                                      onRewardEarned: (adId) {
                                        offLoader();
                                        setRewardStatus("Earned");
                                      },
                                      onLoad: (adId) {
                                        offLoader();
                                        setRewardStatus("Loaded");
                                      },
                                      onAdLoadFail: (error) {
                                        offLoader();
                                        setRewardStatus("Fail to Load $error");
                                      },
                                      onAdOpen: (adId) {
                                        offLoader();
                                        setRewardStatus("Ad Open");
                                      },
                                      onAdOpenFail: (error) {
                                        offLoader();
                                        setRewardStatus("Failed to Open");
                                      },
                                      onClose: (adId) {
                                        offLoader();
                                        setRewardStatus("Closed");
                                      },
                                    ),
                                  );
                                },
                                child: const Row(
                                  crossAxisAlignment: CrossAxisAlignment.center,
                                  mainAxisAlignment: MainAxisAlignment.center,
                                  children: [
                                    Icon(Icons.payments, color: Colors.white),
                                    SizedBox(
                                      width: 10,
                                    ),
                                    Expanded(
                                      child: Text(
                                        "Reward Demo",
                                        style: TextStyle(color: Colors.white),
                                      ),
                                    )
                                  ],
                                ),
                              ),
                            ),
                          ),
                          Expanded(
                            child: Container(
                              margin:
                                  const EdgeInsets.symmetric(horizontal: 10),
                              child: MaterialButton(
                                color: const Color(0xFFE5873C),
                                elevation: 0,
                                onPressed: () {
                                  onLoader();
                                  Yodosdk.loadAndShowRewardInter(
                                    rewardAdCallbacks: RewardAdCallbacks(
                                      onRewardEarned: (adId) {
                                        offLoader();
                                        setRewardInterStatus("Earned");
                                      },
                                      onLoad: (adId) {
                                        offLoader();
                                        setRewardInterStatus("Loaded");
                                      },
                                      onAdLoadFail: (error) {
                                        offLoader();
                                        setRewardInterStatus(
                                            "Fail to Load $error");
                                      },
                                      onAdOpen: (adId) {
                                        offLoader();
                                        setRewardInterStatus("Ad Open");
                                      },
                                      onAdOpenFail: (error) {
                                        offLoader();
                                        setRewardInterStatus("Failed to Open");
                                      },
                                      onClose: (adId) {
                                        offLoader();
                                        setRewardInterStatus("Closed");
                                      },
                                    ),
                                  );
                                },
                                child: const Row(
                                  crossAxisAlignment: CrossAxisAlignment.center,
                                  mainAxisAlignment: MainAxisAlignment.center,
                                  children: [
                                    Icon(Icons.paypal, color: Colors.white),
                                    SizedBox(
                                      width: 10,
                                    ),
                                    Expanded(
                                      child: Text(
                                        "Reward Inter Demo",
                                        style: TextStyle(color: Colors.white),
                                      ),
                                    )
                                  ],
                                ),
                              ),
                            ),
                          ),
                        ],
                      ),
                      Container(
                        margin: const EdgeInsets.symmetric(horizontal: 10),
                        child: MaterialButton(
                          color: const Color(0xFFE5873C),
                          elevation: 0,
                          onPressed: () {
                            onLoader();
                            Yodosdk.loadAndShowAppOpen(
                              fullScreenAdCallbacks: FullScreenAdCallbacks(
                                onLoad: (adId) {
                                  offLoader();
                                  setAppOpenStatus("Loaded");
                                },
                                onAdLoadFail: (error) {
                                  offLoader();
                                  setAppOpenStatus("Fail to Load $error");
                                },
                                onAdOpen: (adId) {
                                  offLoader();
                                  setAppOpenStatus("Ad Open");
                                },
                                onAdOpenFail: (error) {
                                  offLoader();
                                  setAppOpenStatus("Failed to Open");
                                },
                                onClose: (adId) {
                                  offLoader();
                                  setAppOpenStatus("Closed");
                                },
                              ),
                            );
                          },
                          child: const Row(
                            crossAxisAlignment: CrossAxisAlignment.center,
                            mainAxisAlignment: MainAxisAlignment.center,
                            children: [
                              Icon(Icons.payments, color: Colors.white),
                              SizedBox(
                                width: 10,
                              ),
                              Expanded(
                                child: Text(
                                  "App Open Demo",
                                  style: TextStyle(color: Colors.white),
                                ),
                              )
                            ],
                          ),
                        ),
                      ),
                    ],
                  ),
            const SizedBox(
              height: 10,
            ),
            Container(
              margin: const EdgeInsets.only(left: 10),
              child: const Text(
                "Native Demo",
                style: TextStyle(
                  fontWeight: FontWeight.bold,
                ),
              ),
            ),
            const SizedBox(
              height: 10,
            ),
            Yodosdk.getNative(
              size: NativeSize.nativeLarge,
              nativeAdCallback: NativeAdCallback(
                onLoad: () {
                  setNativeStatus("OnLoaded");
                },
                onClosed: () {
                  setNativeStatus("onClose");
                },
                onLoadFailed: (errorMessage) {
                  setNativeStatus("On Error $errorMessage");
                },
              ),
            ),
            const SizedBox(
              height: 10,
            ),
            Container(
              margin: const EdgeInsets.only(left: 10),
              child: const Text(
                "Banner Demo",
                style: TextStyle(
                  fontWeight: FontWeight.bold,
                ),
              ),
            ),
            Yodosdk.getBanner(
              size: BannerSize.adaptiveBanner,
              bannerAdCallback: BannerAdCallback(
                onLoad: () {
                  setBannerStatus("OnLoaded");
                },
                onClosed: () {
                  setBannerStatus("onClose");
                },
                onLoadFailed: (errorMessage) {
                  setBannerStatus("On Error $errorMessage");
                },
                onOpen: () {
                  setBannerStatus("On Banner Open");
                },
                onOpenFail: (String error) {
                  setBannerStatus("On Error $error");
                },
              ),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter广告展示插件yodosdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter广告展示插件yodosdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


针对您提到的Flutter未知功能插件 yodosdk,由于这是一个非标准或较少被公开的插件,我无法直接提供关于其特定功能或API调用的详细信息。然而,我可以向您展示如何集成和使用一个典型的Flutter插件(假设 yodosdk 遵循标准的Flutter插件结构),以及如何通过Dart代码与原生平台(iOS和Android)进行交互。

请注意,以下代码是一个假设性的示例,旨在展示如何集成和使用Flutter插件,而不是针对 yodosdk 的具体实现。您需要根据 yodosdk 的实际文档和API进行调整。

1. 插件集成步骤

首先,假设您已经有一个Flutter项目,并且您想要集成一个名为 yodosdk 的插件。您需要按照以下步骤操作:

1.1 在 pubspec.yaml 中添加依赖

dependencies:
  flutter:
    sdk: flutter
  yodosdk:
    git:
      url: https://github.com/your-repo/yodosdk.git  # 假设yodosdk托管在GitHub上
      ref: some-branch  # 指向具体的分支或标签

1.2 获取插件

在项目的根目录下运行 flutter pub get 来获取插件。

1.3 原生平台配置

根据 yodosdk 的文档,您可能需要在 ios/android/ 文件夹中进行额外的配置。这些配置通常包括在 Info.plistAndroidManifest.xml 或其他原生配置文件中添加权限或设置。

2. 使用插件

假设 yodosdk 提供了一个名为 YodoSdk 的类,并且该类具有一些方法,比如 initialize()performAction()。以下是如何在Flutter Dart代码中调用这些方法的示例:

import 'package:flutter/material.dart';
import 'package:yodosdk/yodosdk.dart';  // 假设yodosdk插件提供了一个Dart入口文件

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('YodoSdk Demo'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text('Initializing YodoSdk...'),
              ElevatedButton(
                onPressed: () async {
                  try {
                    // 初始化插件
                    await YodoSdk.initialize();
                    
                    // 执行某个动作
                    String result = await YodoSdk.performAction("some_action");
                    
                    // 显示结果
                    ScaffoldMessenger.of(context).showSnackBar(
                      SnackBar(content: Text("Action Result: $result")),
                    );
                  } catch (e) {
                    // 处理错误
                    ScaffoldMessenger.of(context).showSnackBar(
                      SnackBar(content: Text("Error: ${e.toString()}")),
                    );
                  }
                },
                child: Text('Perform Action'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

3. 原生平台实现(假设)

由于 yodosdk 是一个假设的插件,以下是如何在原生平台上实现这个插件的简要说明:

3.1 iOS(Swift)

ios/Classes/YodoSdkPlugin.swift 中:

import Flutter
import UIKit

public class YodoSdkPlugin: NSObject, FlutterPlugin {
  public static func register(with registrar: FlutterPluginRegistrar) {
    let channel = FlutterMethodChannel(name: "yodosdk", binaryMessenger: registrar.messenger())
    let instance = YodoSdkPlugin()
    channel.setMethodCallHandler(onMethodCall: instance.handle(_:result:))
  }

  public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
    switch call.method {
    case "initialize":
      YodoSdk.shared.initialize()
      result(nil)
    case "performAction":
      if let action = call.arguments as? String {
        let result = YodoSdk.shared.perform(action: action)
        result(result)
      } else {
        result(FlutterError(code: "INVALID_ARGUMENT", message: "Invalid argument", details: nil))
      }
    default:
      result(FlutterMethodNotImplemented)
    }
  }
}

// 假设YodoSdk是一个iOS原生库
class YodoSdk: NSObject {
  static let shared = YodoSdk()

  func initialize() {
    // 初始化代码
  }

  func perform(action: String) -> String {
    // 执行动作并返回结果
    return "Action Result"
  }
}

3.2 Android(Kotlin)

android/src/main/kotlin/com/example/yodosdk/YodoSdkPlugin.kt 中:

package com.example.yodosdk

import android.content.Context
import androidx.annotation.NonNull
import io.flutter.embedding.engine.plugins.FlutterPlugin
import io.flutter.embedding.engine.plugins.activity.ActivityAware
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
import io.flutter.plugin.common.MethodChannel.Result

class YodoSdkPlugin: FlutterPlugin, MethodCallHandler, ActivityAware {
  private lateinit var channel: MethodChannel
  private var context: Context? = null

  override fun onAttachedToEngine(@NonNull flutterEngine: FlutterEngine, @NonNull context: Context) {
    channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "yodosdk")
    channel.setMethodCallHandler(this)
    this.context = context
  }

  override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) {
    if (call.method == "initialize") {
      YodoSdk.initialize(context)
      result.success(null)
    } else if (call.method == "performAction") {
      val action = call.argument<String>("action") ?: ""
      val result = YodoSdk.performAction(action)
      result.success(result)
    } else {
      result.notImplemented()
    }
  }

  override fun onDetachedFromEngine(@NonNull flutterEngine: FlutterEngine) {
    channel.setMethodCallHandler(null)
  }

  override fun onAttachedToActivity(binding: ActivityPluginBinding) {
    // No-op
  }

  override fun onDetachedFromActivityForConfigChanges() {
    // No-op
  }

  override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) {
    // No-op
  }

  override fun onDetachedFromActivity() {
    // No-op
  }
}

// 假设YodoSdk是一个Android原生库
object YodoSdk {
  fun initialize(context: Context) {
    // 初始化代码
  }

  fun performAction(action: String): String {
    // 执行动作并返回结果
    return "Action Result"
  }
}

总结

以上代码展示了如何集成和使用一个假设的Flutter插件 yodosdk。然而,由于 yodosdk 是一个未知功能的插件,您需要参考其官方文档或源代码来了解其具体的API和用法。在实际开发中,请务必遵循 yodosdk 的官方指南和最佳实践。

回到顶部