DEMO CRUD App – Fyne Golang GUI Tutorial 56
Fyne CRUD app – Fyne Golang GUI Tutorial 56
Want to create full crud app in Fyne & golang watch this tutorial.
Source Code
package main import ( "encoding/json" "fmt" "io/ioutil" "os" "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/widget" ) func main() { // reading data from file res, _ := ioutil.ReadFile("myfilename.txt") // creating struct for my data type Student struct { Name string Phone string } // slice/array to store all data var mydata []Student // parse json data json.Unmarshal(res, &mydata) a := app.New() w := a.NewWindow("Student Record List") w.Resize(fyne.NewSize(400, 400)) list := widget.NewList( func() int { return len(mydata) }, func() fyne.CanvasObject { return widget.NewLabel("My list item widget") }, func(lii widget.ListItemID, co fyne.CanvasObject) { co.(*widget.Label).SetText(mydata[lii].Name) }, ) label1 := widget.NewLabel("...") label2 := widget.NewLabel("...") list.OnSelected = func(id widget.ListItemID) { label1.Text = mydata[id].Name label1.TextStyle = fyne.TextStyle{Bold: true} label2.Text = mydata[id].Phone // label2.TextStyle = fyne.TextStyle{Bold: true} label1.Refresh() label2.Refresh() } e_name := widget.NewEntry() e_name.SetPlaceHolder("Enter name ...") e_phone := widget.NewEntry() e_phone.SetPlaceHolder("Enter phone ...") e_submit := widget.NewButton("Submit", func() { if e_name.Text != "" && e_phone.Text != "" { obj1 := &Student{ Name: e_name.Text, Phone: e_phone.Text, } mydata = append(mydata, *obj1) b, _ := json.MarshalIndent(mydata, "", " ") os.WriteFile("myfilename.txt", b, 0644) e_name.Text = "" e_phone.Text = "" e_name.Refresh() e_phone.Refresh() } else { label1.Text = "Incorrect data" label2.Text = "" label2.Refresh() label1.Refresh() } list.Refresh() }) e_del := widget.NewButton("DELETE", func() { var mydata2 []Student for _, a := range mydata { if a.Name != label1.Text { mydata2 = append(mydata2, a) fmt.Println(a) } } mydata = mydata2 b, _ := json.MarshalIndent(mydata2, "", " ") os.WriteFile("myfilename.txt", b, 0644) e_name.Text = "" e_phone.Text = "" e_name.Refresh() e_phone.Refresh() list.Refresh() }) e_update := widget.NewButton("Update", func() { if e_name.Text != "" && e_phone.Text != "" { var mydata2 []Student for _, a := range mydata { if a.Name != label1.Text { mydata2 = append(mydata2, a) fmt.Println(a) } else { obj1 := &Student{ Name: e_name.Text, Phone: e_phone.Text, } mydata2 = append(mydata2, *obj1) fmt.Println(a) } } mydata = mydata2 b, _ := json.MarshalIndent(mydata2, "", " ") os.WriteFile("myfilename.txt", b, 0644) e_name.Text = "" e_phone.Text = "" e_name.Refresh() e_phone.Refresh() list.Refresh() } else { label1.Text = "Incorrect data" label2.Text = "" label2.Refresh() label1.Refresh() } list.Refresh() }) c := container.NewVBox(label1, label2, e_name, e_phone, e_submit, e_del, e_update) w.SetContent(container.NewHSplit( list, c, )) w.ShowAndRun() fmt.Println(mydata) }
[easy_media_download url=”http://blogvali.com/wp-content/uploads/fyne-golang-downloads/main56.go” text=”Download Code” color=”red_darker”]
Fyne Golang GUI Course