dialog

用于打开和保存文件的本地系统对话框。

tauri.conf.json 中的 build.withGlobalTauri 设置为 true 时,也可以通过 window.__TAURI__.dialog 访问此软件包。

API 必须添加到 tauri.conf.json 中的 tauri.allowlist.dialog 中:


{
  "tauri": {
    "allowlist": {
      "dialog": {
        "all": true, // 启用所有对话框API
        "ask": true, // 启用询问对话框API
        "confirm": true, // 启用确认对话框API
        "message": true, // 启用信息对话框API
        "open": true, // 启用文件打开对话框API
        "save": true // 启用文件保存对话框API
      }
    }
  }
}

建议只允许列出您使用的 API,以优化程序包的大小和安全性。

接口

ConfirmDialogOptions(确认对话框选项)

属性

cancelLabel

Optional cancelLabel: string

取消按钮标签。

定义在: dialog.ts:112

okLabel

Optional okLabel: string

确认按钮标签。

定义在: dialog.ts:110

title

Optional title: string

对话框的标题。默认为应用程序名称。

定义在: dialog.ts:106

type

Optional type: "info" | "warning" | "error"

对话框的类型。默认为info

定义在: dialog.ts:108

DialogFilter(对话框过滤器)

文件对话框的扩展过滤器。

自1.0.0版本起

属性

extensions

extensions: string[]

过滤扩展名,不带 .前缀。

示例


extensions: ['svg', 'png']

定义在: dialog.ts:48

name

name: string

过滤名称

定义在: dialog.ts:40

MessageDialogOptions(信息对话框选项)

自1.0.0版本起

属性

okLabel

Optional okLabel: string

确认按钮标签。

定义在: dialog.ts:101

title

Optional title: string

对话框的标题。默认为应用程序名称。

定义在: dialog.ts:97

type

Optional type: "info" | "warning" | "error"

对话框的类型。默认为info

定义在: dialog.ts:99

OpenDialogOptions(打开对话框选项)

打开对话框的选项。

自1.0.0版本起

属性

defaultPath

Optional defaultPath: string

初始目录或文件路径。

定义在: dialog.ts:62

directory

Optional directory: boolean

对话框是否选择目录。

定义在: dialog.ts:66

filters

Optional filters: DialogFilter[]

对话框的过滤器。

定义在: dialog.ts:60

multiple

Optional multiple: boolean

对话框是否允许多选。

Defined in: dialog.ts:64

recursive

Optional recursive: boolean

如果directory为 true,表示以后将递归读取。定义是否允许在作用域中使用子目录。

定义在: dialog.ts:71

title

Optional title: string

对话窗口的标题。

定义在: dialog.ts:58

SaveDialogOptions(保存对话框选项)

保存对话框选项

自1.0.0版本起

属性

defaultPath

Optional defaultPath: string

初始目录或文件路径。如果是目录路径,对话框界面将更改为该文件夹。如果不是现有目录,文件名将设置为对话框的文件名输入,对话框将设置为父文件夹。

定义在: dialog.ts:89

filters

Optional filters: DialogFilter[]

对话框的过滤器。

定义在: dialog.ts:83

title

Optional title: string

对话窗口的标题。

定义在: dialog.ts:81

方法

ask

ask(message: string, options?: string | ConfirmDialogOptions): Promise<boolean>

显示带有YesNo按钮的问题对话框。

示例


import { ask } from '@tauri-apps/api/dialog';
const yes = await ask('Are you sure?', 'Tauri');
const yes2 = await ask('This action cannot be reverted. Are you sure?', { title: 'Tauri', type: 'warning' });

自1.0.0版本起

参数

名称 类型 描述
message string 要显示的信息。
options? string | ConfirmDialogOptions 对话框的选项。如果是字符串,则表示对话框标题。

返回值: Promise<boolean>

一个返回布尔值的promise,表示是否点击了Yes

confirm

confirm(message: string, options?: string | ConfirmDialogOptions): Promise<boolean>

显示带 "确定 "和 "取消 "按钮的问题对话框。

示例


import { confirm } from '@tauri-apps/api/dialog';
const confirmed = await confirm('Are you sure?', 'Tauri');
const confirmed2 = await confirm('This action cannot be reverted. Are you sure?', { title: 'Tauri', type: 'warning' });

自1.0.0版本起

参数

名称 类型 描述
message string 要显示的信息。
options? string | ConfirmDialogOptions 对话框的选项。如果是字符串,则表示对话框标题。

返回值: Promise<boolean>

一个返回布尔值的promise,表示是否点击了"确认"

message

message(message: string, options?: string | MessageDialogOptions): Promise<void>

显示带 "确定 "按钮的信息对话框。

示例


import { message } from '@tauri-apps/api/dialog';
await message('Tauri is awesome', 'Tauri');
await message('File not found', { title: 'Tauri', type: 'error' });

自1.0.0版本起

参数

名称 类型 描述
message string 要显示的信息。
options? string | MessageDialogOptions 对话框的选项。如果是字符串,则表示对话框标题。

返回值: Promise<void>

表示操作成功或失败的promise。

open

open(options?: OpenDialogOptions): Promise<null | string | string[]>

打开文件/目录选择对话框。

所选路径会添加到文件系统和资产协议允许列表范围中。当安全性比该 API 的易用性更重要时,最好编写专用命令。

请注意,allowlist 范围的更改不会被持久化,因此在重新启动应用程序时,值会被清除。你可以使用 tauri-plugin-persisted-scope 将其保存到文件系统中。

示例


import { open } from '@tauri-apps/api/dialog';
// 打开图片文件选择对话框
const selected = await open({
  multiple: true,
  filters: [{
    name: 'Image',
    extensions: ['png', 'jpeg']
  }]
});
if (Array.isArray(selected)) {
  // 用户选择了多个文件
} else if (selected === null) {
  // 用户取消了选择
} else {
  // 用户选择了一个文件
}

示例


import { open } from '@tauri-apps/api/dialog';
import { appDir } from '@tauri-apps/api/path';
// 打开目录选择对话框
const selected = await open({
  directory: true,
  multiple: true,
  defaultPath: await appDir(),
});
if (Array.isArray(selected)) {
  // 用户选择了多个目录
} else if (selected === null) {
  // 用户取消了选择
} else {
  // 用户选择了一个目录
}

自1.0.0版本起

参数

名称 类型
options OpenDialogOptions

返回值: Promise<null | string | string[]>

Promise返回的是所选路径

save

save(options?: SaveDialogOptions): Promise<string | null>

打开文件/目录保存对话框。

所选路径会添加到文件系统和资源协议允许列表范围中。当安全性比该 API 的易用性更重要时,请编写专用命令。

请注意,allowlist 范围的更改不会被持久化,因此在重新启动应用程序时,值会被清除。你可以使用 tauri-plugin-persisted-scope 将其保存到文件系统中。

示例


import { save } from '@tauri-apps/api/dialog';
const filePath = await save({
  filters: [{
    name: 'Image',
    extensions: ['png', 'jpeg']
  }]
});

自1.0.0版本起

参数

名称 类型
options SaveDialogOptions

返回值: Promise<string | null>

promise返回的是所选路径