主题
BaseAd 继承自: ft.BaseControl
所有广告控件的基类。
该类为具体的广告控件/服务定义了共享的广告请求与生命周期事件属性。
抛出异常: FletUnsupportedPlatformException:在 Web 和/或非移动平台上使用此控件时抛出。
属性
| 名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
unit_id | str | required | Ad unit ID for this ad. |
request | AdRequest | AdRequest(() | Targeting information used to fetch an Ad. |
data | Any | skip_ | 任意类型的自定义数据。 |
key | Optional['KeyValue'] | None | 用于在更新之间保持控件身份稳定的 key。 |
只读属性
| 名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
parent | Optional['BaseControl'] | — | The direct ancestor(parent) of this control. It defaults to None and will only have a value when this control is mounted (added to the page tree). Page 控件(树的根)为例外 —— 它始终 parent=None。 |
page | 'Page' | — | 此控件所属的页面。 |
事件
| 名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
on_load | Optional[ft.ControlEventHandler['BaseAd']] | None | Called when this ad is loaded successfully. |
on_error | Optional[ft.ControlEventHandler['BaseAd']] | None | Called when an ad request failed. Event handler argument data property contains information about the error. |
on_open | Optional[ft.ControlEventHandler['BaseAd']] | None | Called when this ad opens up. A full screen view/overlay is presented in response to the user clicking on an ad. You may want to pause animations and time sensitive interactions. |
on_close | Optional[ft.ControlEventHandler['BaseAd']] | None | Called when the full screen view has been closed. You should restart anything paused while handling on_open. |
on_impression | Optional[ft.ControlEventHandler['BaseAd']] | None | Called when an impression occurs on this ad. |
on_click | Optional[ft.ControlEventHandler['BaseAd']] | None | Called when this ad is clicked. |
方法
| 名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
before_update | — | — | — |
is_isolated | — | — | Return whether this control is marked as isolated. 被隔离的控件不会参与父级驱动的更新遍历,需要自行管理更新边界。 |
init | — | — | Called after control instance initialization and before the first build / update cycle. 可重写此钩子执行依赖于已初始化字段的轻量设置。 不要在这里调用 update()。 |
build | — | — | 在控件初始化期间调用一次,用于定义其子控件。 page 属性在此方法中可用。 |
before_event | — | — | 在事件处理器执行前拦截事件。 返回 False 取消分发,返回 True 或 None 则继续正常的事件处理。 |
did_mount | — | — | 在控件挂载到页面树之后调用。 可重写以启动需要已挂载页面的资源,例如订阅、定时器或服务监听。 |
will_unmount | — | — | 在控件从页面树移除之前调用。 可重写以释放 did_mount() 中创建的资源,例如订阅、定时器或外部句柄。 |
get_data_channel | — | — | Resolve the [DataChannel] allocated on the Dart side for this widget. Pattern: on_data_channel_open: Optional[ft.EventHandler[DataChannelOpenEvent]] = None def init(self): self.on_data_channel_open = self._on_open def _on_open(self, e): self._channel = self.get_data_channel(e.channel_id) Idempotent — the underlying Connection caches DataChannels by id, so repeated calls return the same instance. No error path: the id always comes from a framework-fired event, so by the time this runs the channel exists on both sides. |
update | None | — | 请求更新该控件的 UI。 在修改控件状态或属性后调用。 控件必须已挂载到页面,并且未被冻结。 |