share
系统分享面板与 AppUI ShareLink。
系统分享面板:把文本、链接或文件路径交给 iOS 分享表单(AirDrop、备忘录、邮件等)。
边界:无独立import sharePython 模块;通过 AppUI 的ShareLink唤起系统ShareLink/ 分享表单。item需是有意义的字符串(URL、文件路径或分享正文)。复杂导出流水线可结合 file_picker 先拿到路径再分享。
#模块概览
| 项 | 说明 |
|---|---|
| 导入 | import appui |
| 适合做什么 | 分享笔记、导出 CSV/文本、转发链接 |
| 调用时机 | 用户点击 ShareLink;内容先在 State 或函数里准备好 |
| 推荐顺序 | 生成内容 → 写入 State → ShareLink(item=...) |
| 空内容 | item 为空时分享面板无有效载荷 |
#快速开始
下面脚本构建一段可分享文本,并用 ShareLink 展示分享按钮:
已复制
import appui
state = appui.State(note="来自 PythonIDE 的分享示例")
def body():
return appui.VStack([
appui.TextEditor(text=state.note),
appui.ShareLink(
item=state.note,
subject="我的笔记",
message="请查看附件内容",
),
], spacing=12).padding()
appui.run(body, state=state)
#AppUI 示例
先编辑内容,再点分享;item 随 State 更新。
已复制
import appui
state = appui.State(
title="周报摘要",
body="本周完成:文档重写、健康模块示例、网络请求演示。",
status="编辑后点分享",
)
def body():
share_text = f"{state.title}\n\n{state.body}"
return appui.NavigationStack(
appui.Form([
appui.Section("内容", [
appui.TextField("标题", text=state.title),
appui.TextEditor(text=state.body)
.frame(min_height=120),
]),
appui.Section("分享", [
appui.ShareLink(
item=share_text,
subject=state.title,
message="分享自 PythonIDE",
),
appui.Text(state.status).foreground_color("secondaryLabel"),
], footer="也可把 item 设为 https:// 链接或沙盒内文件路径。"),
]).navigation_title("分享")
)
appui.run(body, state=state)
#API 参考
#速查
| 参数 | 作用 |
|---|---|
item | 分享主体:文本、URL 或文件路径 |
subject | 可选主题(部分目标 App 使用) |
message | 可选附言 |
#ShareLink {#share-link}
ShareLink(item='', subject=None, message=None)
已复制
appui.ShareLink(
item="https://www.python.org",
subject="Python",
message="官方站点",
)
分享本地文件时,item 传绝对路径字符串(通常来自 FileImporter 或你自己写入沙盒的文件):
已复制
appui.ShareLink(item="/var/mobile/Containers/Data/.../export.csv")
#与 Link 的区别
| 组件 | 行为 |
|---|---|
Link | 直接在 Safari 打开 URL |
ShareLink | 弹出系统分享面板,可选多种目标 App |
#动态内容
item 在每次 body() 求值时读取当前 State;编辑后再次点击分享即可获得最新文本。
#常见错误
| 错误写法 | 后果 | 修正 |
|---|---|---|
item="" | 分享面板空内容 | 生成后再展示 ShareLink |
| 分享未复制进沙盒的外部路径 | 目标 App 读不到文件 | 先 FileImporter(copy=True) 或自行复制 |
| 在回调里手动弹分享 | 无对应 Python API | 用 ShareLink 组件 |
把敏感 token 写进 item | 泄露到第三方 App | 只分享用户确认过的内容 |
#相关文档
| 文档 | 用途 |
|---|---|
| file_picker | 导入待分享文件 |
| clipboard | 复制到剪贴板(不弹分享面板) |
| 结构化邮件发送 | |
| AppUI 数据参考 | ShareLink / Link 签名 |
| WebView 分享示例 | 完整导出页面样板 |
#预期效果
运行示例后,界面应出现文档描述的目标结果;若与预期不符,先看「失败路径」并按返回值或日志排查。