Dialog 对话框
运行时的这一部分提供对原生对话框的调用,例如文件选择器和消息框。
JS 运行时当前不支持对话框。
OpenDirectoryDialog 打开选择目录对话框
打开一个对话框,提示用户选择目录。 可以使用 打开选择文件对话框参数选项 进行自定义。
Go: OpenDirectoryDialog(ctx context.Context, dialogOptions OpenDialogOptions) (string, error)
返回值: 所选目录(如果用户取消则为空白)或错误
OpenFileDialog 打开选择文件对话框
打开一个对话框,提示用户选择文件。 可以使用 打开选择文件对话框参数选项 进行自定义。
Go: OpenFileDialog(ctx context.Context, dialogOptions OpenDialogOptions) (string, error)
返回值: 所选文件(如果用户取消则为空白)或错误
OpenMultipleFilesDialog 打开选择多文件对话框
打开一个对话框,提示用户选择多个文件。 可以使用 打开选择文件对话框参数选项 进行自定义。
Go: OpenMultipleFilesDialog(ctx context.Context, dialogOptions OpenDialogOptions) ([]string, error)
返回值: 选定的文件(如果用户取消则为 nil)或错误
SaveFileDialog 保存文件对话框
打开一个对话框,提示用户选择文件名以进行保存。 可以使用 保存文件对话框参数选项 自定义。
Go: SaveFileDialog(ctx context.Context, dialogOptions SaveDialogOptions) (string, error)
返回值: 所选文件(如果用户取消则为空白)或错误
MessageDialog 消息对话框
使用消息对话框显示消息。 可以使用 消息对话框参数选项 进行自定义。
Go: MessageDialog(ctx context.Context, dialogOptions MessageDialogOptions) (string, error)
返回值: 所选按钮的文本或错误
参数选项
打开选择文件对话框参数选项
type OpenDialogOptions struct {
    DefaultDirectory           string
    DefaultFilename            string
    Title                      string
    Filters                    []FileFilter
    ShowHiddenFiles            bool
    CanCreateDirectories       bool
    ResolvesAliases            bool
    TreatPackagesAsDirectories bool
}
| 字段 | 描述 | Win | Mac | Lin | 
|---|---|---|---|---|
| DefaultDirectory | 对话框打开时显示的目录 | ✅ | ✅ | ✅ | 
| DefaultFilename | 默认文件名 | ✅ | ✅ | ✅ | 
| Title | 对话框的标题 | ✅ | ✅ | ✅ | 
| Filters | 文件过滤器列表 | ✅ | ✅ | ✅ | 
| ShowHiddenFiles | 显示系统隐藏的文件 | ✅ | ✅ | |
| CanCreateDirectories | 允许用户创建目录 | ✅ | ||
| ResolvesAliases | 如果为 true,则返回文件而不是别名 | ✅ | ||
| TreatPackagesAsDirectories | 允许导航到包 | ✅ | 
保存文件对话框参数选项
type SaveDialogOptions struct {
    DefaultDirectory           string
    DefaultFilename            string
    Title                      string
    Filters                    []FileFilter
    ShowHiddenFiles            bool
    CanCreateDirectories       bool
    TreatPackagesAsDirectories bool
}
| 字段 | 描述 | Win | Mac | Lin | 
|---|---|---|---|---|
| DefaultDirectory | 对话框打开时显示的目录 | ✅ | ✅ | ✅ | 
| DefaultFilename | 默认文件名 | ✅ | ✅ | ✅ | 
| Title | 对话框的标题 | ✅ | ✅ | ✅ | 
| Filters | 文件过滤器列表 | ✅ | ✅ | ✅ | 
| ShowHiddenFiles | 显示系统隐藏的文件 | ✅ | ✅ | |
| CanCreateDirectories | 允许用户创建目录 | ✅ | ||
| TreatPackagesAsDirectories | 允许导航到包 | ✅ | 
消息对话框参数选项
type MessageDialogOptions struct {
    Type          DialogType
    Title         string
    Message       string
    Buttons       []string
    DefaultButton string
    CancelButton  string
}
| 字段 | 描述 | Win | Mac | Lin | 
|---|---|---|---|---|
| 类型 | 消息对话框的类型,例如问题、信息... | ✅ | ✅ | ✅ | 
| Title | 对话框的标题 | ✅ | ✅ | ✅ | 
| Message | 向用户显示的消息 | ✅ | ✅ | ✅ | 
| Buttons | 按钮标题列表 | ✅ | ||
| DefaultButton | 带有此文本的按钮应被视为默认按钮。 必定 return。 | ✅* | ✅ | |
| CancelButton | 带有此文本的按钮应被视为取消。 必定 escape | ✅ | 
Windows
Windows 具有标准对话框类型,其中的按钮不可自定义。 返回的值将是以下之一:"Ok"、"Cancel"、"Abort"、"Retry"、"Ignore"、"Yes"、"No"、"Try Again"或"Continue"。
对于问题对话框,默认按钮是 “是”,取消按钮是 “否”。 可以通过将 默认按钮 值设置为 "否" 来改变这一点。
示例:
    result, err := runtime.MessageDialog(a.ctx, runtime.MessageDialogOptions{
        Type:          runtime.QuestionDialog,
        Title:         "Question",
        Message:       "Do you want to continue?",
        DefaultButton: "No",
    })
Linux
Linux 有标准的对话框类型,其中的按钮是不可定制的。 返回的值将是以下之一:“Ok”、“Cancel”、“Yes”、“No”
Mac
Mac 上的消息对话框最多可以指定 4 个按钮。 如果没有 DefaultButton 或 CancelButton 给出,第一个按钮被认为是默认的并绑定到 return 键。
对于以下代码:
selection, err := runtime.MessageDialog(b.ctx, runtime.MessageDialogOptions{
    Title:        "It's your turn!",
    Message:      "Select a number",
    Buttons:      []string{"one", "two", "three", "four"},
})
第一个按钮显示为默认值:

如果我们指定 DefaultButton 为“two”:
selection, err := runtime.MessageDialog(b.ctx, runtime.MessageDialogOptions{
    Title:         "It's your turn!",
    Message:       "Select a number",
    Buttons:       []string{"one", "two", "three", "four"},
    DefaultButton: "two",
})
第二个按钮显示为默认值。 当 return 被按下时,则返回数值“two”。

如果我们现在指定CancelButton为“three”:
selection, err := runtime.MessageDialog(b.ctx, runtime.MessageDialogOptions{
    Title:         "It's your turn!",
    Message:       "Select a number",
    Buttons:       []string{"one", "two", "three", "four"},
    DefaultButton: "two",
    CancelButton:  "three",
})
带有“three”的按钮显示在对话框的底部。 当 escape 被按下时,则返回值“three”:

对话框类型
const (
        InfoDialog     DialogType = "info"
        WarningDialog  DialogType = "warning"
        ErrorDialog    DialogType = "error"
        QuestionDialog DialogType = "question"
     )
文件过滤
type FileFilter struct {
    DisplayName string // Filter information EG: "Image Files (*.jpg, *.png)"
    Pattern     string // semi-colon separated list of extensions, EG: "*.jpg;*.png"
}
Windows
Windows 允许您在对话框中使用多个文件过滤器。 每个 FileFilter 将在对话框中显示为一个单独的条目:

Linux
Linux 允许您在对话框中使用多个文件过滤器。 每个 FileFilter 将在对话框中显示为一个单独的条目:

Mac
Mac 对话框只有一组模式来过滤文件的概念。 如果提供了多个 FileFilters,Wails 将使用所有定义的模式。
示例:
    selection, err := runtime.OpenFileDialog(b.ctx, runtime.OpenDialogOptions{
        Title: "Select File",
        Filters: []runtime.FileFilter{
            {
                DisplayName: "Images (*.png;*.jpg)",
                Pattern:     "*.png;*.jpg",
            }, {
                DisplayName: "Videos (*.mov;*.mp4)",
                Pattern:     "*.mov;*.mp4",
            },
        },
    })
这将导致使用 *.png,*.jpg,*.mov,*.mp4 作为过滤器打开文件对话框。