PythonIDE Docs
中文
简体中文

AppUI API 地图

按任务选择入口、状态、布局、控件、导航、媒体和图表 API。

这页按任务组织 AppUI API。还没确定页面结构时,先看 AppUI UI 模式

#最小正确组合

python
import appui

state = appui.State(name="MiniApp", enabled=True, saved=False)


def set_name(value):
    state.batch_update(name=value, saved=False)


def set_enabled(value):
    state.batch_update(enabled=value, saved=False)


def save():
    state.saved = bool(state.name.strip())


def body():
    footer = "Saved" if state.saved else "Edit values and tap Save"
    form = appui.Form([
        appui.Section("Controls", [
            appui.TextField("Name", text=state.name, on_change=set_name),
            appui.Toggle("Enabled", is_on=state.enabled, on_change=set_enabled),
        ]),
        appui.Section("Output", [
            appui.LabeledContent("Name", value=state.name or "Missing"),
            appui.LabeledContent("Enabled", value=str(state.enabled)),
        ], footer=footer),
    ]).navigation_title("API 地图")

    return appui.NavigationStack(
        form.toolbar([
            appui.ToolbarItem(
                placement="navigation_bar_trailing",
                content=appui.Button("Save", action=save)
                .button_style("bordered_prominent"),
            )
        ])
    )


appui.run(body, state=state)

预期效果:页面显示输入、开关、输出和导航栏保存按钮;修改后点击 Save 会更新保存状态。

#按任务查 API

任务首选 API继续阅读
启动 MiniAppappui.run函数参考
控制呈现方式appui.run(..., presentation=...)函数参考
程序化弹层presentation_present / presentation_dismiss呈现 API
保存普通界面状态State状态管理
多字段一起更新state.batch_update(...)状态管理
高频局部刷新ReactiveState性能与实时界面
派生数据computed状态管理
状态变化后的副作用effect状态管理
双向绑定bind函数参考
输入设置项Form + Section布局系统
动态列表List + ForEach布局系统
列表进详情NavigationStack + NavigationLink导航与页面结构
程序化跳转NavigationPath + destinations导航与页面结构
多主分区TabView + Tab导航与页面结构
底部状态条展开面板.tab_view_bottom_accessory + .sheet导航参考
导航栏按钮ToolbarItem导航参考
临时弹层.sheet / .popover呈现 API
确认和错误提示.alert / .confirmation_dialog呈现 API
搜索和刷新.searchable / .refreshable交互与回调
空状态ContentUnavailableView数据展示
加载状态ProgressView数据展示
输入控件TextFieldSecureFieldTextEditor控件 API
选择控件TogglePickerSliderStepper控件 API
媒体和文件PhotoPickerCameraPickerFileImporter媒体 API
地图、网页、视频MapViewWebViewVideoPlayer媒体 API
图表和绘制ChartCanvasDrawingContextPath图表 API

#行为契约

API保证注意
appui.run(...)启动当前 MiniApp 页面。一个脚本只保留一个最终入口。
State字段变化后页面重建。多字段同时更新用 batch_update(...)
Button(action=...)点击后执行命名回调。不要写 action=save()
TextField(on_change=...)输入变化时把新值交给回调。回调要写回 State
ForEach(..., key=...)维护动态行身份。key 必须来自稳定业务 id。
NavigationLink打开目标详情页。目标页用函数返回 View,避免把复杂逻辑塞进行内。
.tab_view_bottom_accessory(...) + .sheet(...)底部常驻 compact 视图点击后打开原生 sheet。适合播放、下载、录音、导航等持续任务;紧凑条负责常驻状态,完整面板交给系统 sheet 处理下拉关闭、圆角和拖拽手感。
.sheet(...) / .alert(...)展示临时页面或提示。is_presented 要由状态控制。
PhotoPicker / FileImporter触发系统选择流程。处理用户取消、权限拒绝和空结果。

#选择顺序

  1. 先选容器:NavigationStackTabViewListFormScrollView
  2. 再选数据流:StateReactiveStatebindcomputedTimer
  3. 再选控件:输入、选择、按钮、工具栏、弹层。
  4. 再选状态反馈:空状态、加载、错误、保存成功、权限拒绝。
  5. 最后选视觉:字体、颜色、边距、背景、图表或媒体。

#失败路径

  • API 名不确定:先按任务查本页,再进入对应 appui-ref-*
  • 按钮没反应:确认 Button(action=...) 传入命名函数。
  • 输入不更新:确认 on_change 写回 State
  • 列表错乱:确认 ForEach 使用稳定 key
  • 页面空白:确认 body() 返回 View,appui.run(...) 在脚本末尾调用。

#相关文档

文档用途
快速上手跑通第一个 MiniApp。
运行时选择判断是否应该使用 AppUI。
AppUI UI 模式选择页面结构。
MiniApp 开发排错排查入口、状态、布局和系统能力。