How to update the contents of a TextView in a Flex with tview

Viewed 307

I'm using tview to make my TUI application.

The app uses TextView in Flex, but I can't change the contents of that TextView.

The specific code is as follows.

package main

import (
    "fmt"
    "github.com/rivo/tview"
)

func main() {
    app := tview.NewApplication()
    textView := tview.NewTextView().
        SetRegions(true).SetDynamicColors(true).SetWordWrap(true).SetChangedFunc(func() { app.Draw() })
    flex := tview.NewFlex().
        AddItem(textView.SetBorder(true).SetTitle("title1"), 0, 1, false).
        AddItem(tview.NewFlex().SetDirection(tview.FlexRow).
            AddItem(tview.NewBox().SetBorder(true).SetTitle("title2"), 0, 1, false).
            AddItem(tview.NewBox().SetBorder(true).SetTitle("title3"), 0, 10, false), 0, 2, false)

    fmt.Fprintf(textView, "%s ", "foo")
    fmt.Fprintf(textView, "%s ", "bar")

    if err := app.SetRoot(flex, true).EnableMouse(true).Run(); err != nil {
        panic(err)
    }

}

I'm expecting TextView to show "foo bar", but I don't see it.

If you use TextView as the root as shown below, "foo bar" will be displayed as expected.

package main

import (
    "fmt"
    "github.com/rivo/tview"
)

func main() {
    app := tview.NewApplication()
    textView := tview.NewTextView().
        SetRegions(true).SetDynamicColors(true).SetWordWrap(true).SetChangedFunc(func() { app.Draw() })
    _ = tview.NewFlex().
        AddItem(textView.SetBorder(true).SetTitle("title1"), 0, 1, false).
        AddItem(tview.NewFlex().SetDirection(tview.FlexRow).
            AddItem(tview.NewBox().SetBorder(true).SetTitle("title2"), 0, 1, false).
            AddItem(tview.NewBox().SetBorder(true).SetTitle("title3"), 0, 10, false), 0, 2, false)

    fmt.Fprintf(textView, "%s ", "foo")
    fmt.Fprintf(textView, "%s ", "bar")

    if err := app.SetRoot(textView, true).EnableMouse(true).Run(); err != nil {
        panic(err)
    }

}

How can I display "foo bar" in the TextView used in Flex?

Please let me know if you know.

0 Answers
Related