Flutter 工程接入环境设置和初始化 mPaaS 请参考 Flutter 工程接入操作指南。
使用智能投放
在原生 Android 中注册智能投放 View
继承
io.flutter.plugin.platform.PlatformView以提供对android.view.View的引用。package com.example.mpaas_demo import android.content.Context import android.view.View import com.mpaas.cdp.CdpAdvertisementView import io.flutter.plugin.platform.PlatformView /** * 智能投放view */ internal class NativeMcdpView(context: Context, id: Int, creationParams: Map<String?, Any?>?) : PlatformView { private val cdpView: CdpAdvertisementView override fun getView(): View { return cdpView } override fun dispose() {} init { cdpView = CdpAdvertisementView(context) if (creationParams != null) { cdpView.updateSpaceCode(creationParams["cdpCode"].toString()) } } }创建一个用来创建
NativeView的实例的工厂类。package com.example.mpaas_demo import android.content.Context import io.flutter.plugin.common.StandardMessageCodec import io.flutter.plugin.platform.PlatformView import io.flutter.plugin.platform.PlatformViewFactory class NativeMcdpViewFactory (activity: MainActivity) : PlatformViewFactory(StandardMessageCodec.INSTANCE) { private val mContext = activity override fun create(context: Context, viewId: Int, args: Any?): PlatformView { val creationParams = args as Map<String?, Any?>? return NativeMcdpView(mContext, viewId, creationParams) } }
在应用中注册平台视图
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
flutterEngine
.platformViewsController
.registry
.registerViewFactory("<mcdp-platform-view-type>", NativeMcdpViewFactory(this))
}在 Flutter 中使用智能投放
创建智能投放
Widget。import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; class McdpView extends StatelessWidget { final String cdpCode; McdpView({Key? key, required this.cdpCode}) : super(key: key); String viewType = '<mcdp-platform-view-type>'; @override Widget build(BuildContext context) { const StandardMessageCodec _decoder = StandardMessageCodec(); if (defaultTargetPlatform == TargetPlatform.android) { return Expanded( child: AndroidView( viewType: viewType, creationParams: {"cdpCode": cdpCode}, creationParamsCodec: _decoder, ), ); } else { return Container(); } } }使用智能投放 Widget。
McdpView( cdpCode: 'slideshow1'),