大家好,我是程序员小鬼。等待。继续我们的Gio行动。01目标经过前几节的学习,我们慢慢地从一个空白的界面添加元素,但是将所有代码放在一个文件的main()中使得难以理解并且更难添加更多功能。所以我们要稍微重构一下这个程序,简单地将它分解成更小的部分。本节不增加新特性,主要讨论如何重构之前的代码。02代码步骤1:main()太长main太长并且做了太多事情。最好main()只负责启动和控制程序。简单重构如下:funcmain(){gofunc(){//新建一个窗口w:=app.NewWindow(app.Title("EggTimer"),app.Size(unit.Dp(400),unit.dp(600)),)iferr:=draw(w);err!=nil{log.Fatal(err)}os.Exit(0)}()app.Main()}现在,在main()这里,我们像以前一样创建一个窗口w,并立即将其交给一个特殊的函数draw()。我们可以检查draw()的结果以查看是否发生错误,并在必要时处理错误。通常情况下,draw函数不会返回。如果用户正常关闭,通过os.Exit(0)退出程序;否则通过log.Fatal(err)输出错误信息后退出程序。Step2:Constraints和Dimensions——方便的捷径上一篇文章已经详细介绍了Constraints和Dimensions,因为经常用到,这里给Dimensions和Context取一个简称:typeC=layout.ContexttypeD=layout.DimensionsStep3:No3-draw()函数以下是draw函数的简化版本:funcdraw(w*app.Window)error{//...//listenforeventsinthewindow.fore:=rangew.Events(){//detectwhattypeofeventswitche:=e.(type){//thisissentwhentheapplicationshouldre-render.casesystem.FrameEvent://...//thisissentwhentheapplicationisclosed.casesystem.DestroyEvent:returne.Err}}returnil}和之前一样,我们通过w.Events()检测它们的类型。system.FramEvent像以前一样处理我们的system.DestroyEvent并添加一个新案例,该案例返回nil以正常关闭窗口;否则返回Err03满足未来的需求至关重要。本文转载自微信公众号“你鬼”,可通过以下二维码关注。转载本文请联系有鬼公众号。
