Не получается вывести цветной список(widget.NewList) в Fyne
Всем здравствуйте!
Я хочу вывести список с чередованием цветов красный-синий и вроде даже выводит, но есть какая-то проблема: если поиграться с окном(увеличивать/уменьшать) то отображаться начинает не верно(перемешиваются или вообще все становится одним цветом). Что я делаю не так или может так вообще не правильно и надо по другому?
package main
import (
"fmt"
"image/color"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/canvas"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
)
var myList = []string{"One", "Two", "Three", "Four", "Five", "Six"}
func main() {
app := app.New()
win := app.NewWindow("Example")
win.CenterOnScreen()
win.Resize(fyne.NewSize(320, 250))
var (
newTask *fyne.Container
mainScreen *fyne.Container
)
colorList := widget.NewList(
func() int {
return len(myList)
},
func() fyne.CanvasObject {
canvas := container.New(
layout.NewMaxLayout(),
canvas.NewRectangle(color.RGBA{R: 0, G: 50, B: 245, A: 0}),
widget.NewLabel(""),
)
return canvas
},
func(lii widget.ListItemID, co fyne.CanvasObject) {
if lii%2 == 0 {
co.(*fyne.Container).Objects[0].(*canvas.Rectangle).FillColor = color.RGBA{R: 255, G: 0, B: 0, A: 0}
}
co.(*fyne.Container).Objects[1].(*widget.Label).SetText(fmt.Sprintf("%d", lii))
},
)
colorList.UnselectAll()
// заглушка при на жатии на плюс
dummy := container.NewVBox(
container.NewHBox(
widget.NewLabel("Empty"),
layout.NewSpacer(),
widget.NewButtonWithIcon("", theme.NavigateBackIcon(), func() {
colorList.UnselectAll()
colorList.Refresh()
win.SetContent(mainScreen)
}),
),
container.NewCenter(
widget.NewLabel("Nothing here"),
),
)
newTask = container.NewHBox(
widget.NewLabel("Add"),
layout.NewSpacer(),
widget.NewButtonWithIcon("", theme.ContentAddIcon(), func() {
win.SetContent(dummy)
}),
)
mainScreen = container.NewBorder(
newTask,
nil,
nil,
nil,
colorList,
)
win.SetContent(mainScreen)
win.ShowAndRun()
}
Источник: Stack Overflow на русском