我一开始学得很不好。
如果写入一个函数,用于保存在编辑中写入的字节,则菜单名为“另存为”。
我还设置了一个过滤器,以确保我只能保存文件结束。md.so我单击SaveAs按钮,输入名称为1.txt,当我单击按钮时,将出现错误窗口,但程序也在我的文件路径中创建了1.txt
func (app *config) saveAsFunc(win fyne.Window) func() {
return func() {
saveDialog := dialog.NewFileSave(func(write fyne.URIWriteCloser, err error) {
if err != nil {
dialog.ShowError(err, win)
return
}
if write == nil {
return
}
if !strings.HasSuffix(strings.ToLower(write.URI().String()), ".md") {
dialog.ShowInformation("Error", "Please name your file end with .md", win)
return
}
//保存文件
write.Write([]byte(app.EditWidget.Text))
app.CurrentFile = write.URI()
defer write.Close()
win.SetTitle(win.Title() + " - " + write.URI().Name())
app.SaveMenuItem.Disabled = false
}, win)
saveDialog.SetFileName("untitled.md")
saveDialog.SetFilter(filter)
saveDialog.Show()
}
}
enter image description here
就像这样,我的错误窗口可以出现,但也创建了错误的文件
我试着dubug,但是当我运行到这个函数的时候,goland就会崩溃。我从我学的视频中学到了这个代码。可能是fyne版本的更新导致了这个问题
我发现问题是在fyne的文件浏览器,它有一个默认的btn名为保存,当我写了一个错误的文件名,然后我点击这个保存btn,它会保存一个文件使用错误的名称,然后我的过滤器将停止保存和返回,所以文件只有名称,但没有任何内容。
所以现在的问题是如何在保存btn工作之前停止保存,我应该改变fyne代码吗?
1条答案
按热度按时间wwtsj6pe1#
当您从文件保存对话框中调用回调时,用户指定的文件已经创建,您可以将数据写入其中。
如果你想反向操作,你需要
write.Close()
并调用storage.Delete(write.URI())
。这将删除用户要求创建的文件。您可能正在寻找此建议的增强功能:https://github.com/fyne-io/fyne/issues/1044