Designing cross-platform GUI apps with Fyne

Storing Data

You now have a fully functional app to track your to-do items, but the app will forget the items when you exit. To remedy this, you can connect to a database or store data in a file. However, Fyne lets you store your data in Preferences, a simple key-value store used to easily keep track of user interface state and small data storage without worrying about file storage or connection handling. You can access this feature using the Preferences() method on the App type created earlier.

Loading To-Do Items

You need to ensure that any existing to-do items are loaded when the app starts. To do this, you can simply set up the todos variable to be the result of a load call. Immediately before calling loadUI, you need to call

list = loadTODOs(a.Preferences())

This call will pass your application preferences to a new loadTODOs function that will return a slice of all stored to-dos.

Saving the Data

Before you have data to parse, you need to save it! To do this, you will use another new method, saveTODOs, which will take the current slice to save and a reference to the preferences you will be using:

saveTODOs(todos, p)

Be sure to call this method inside deleteTODO and addTODO after updating the data.

The methods that actually do the work in this example are really simple – you just concatenate all the items to a single string using a joiner constant and then split the items out on load, as shown in Listing 11.

Listing 11

storage.go

01 package main
02
03 import "fyne.io/fyne/v2"
04
05 const joiner = "|"
06
07 func loadTODOs(p fyne.Preferences) []string {
08   all := p.String("items")
09   if all == "" {
10     return []string{}
11   }
12   return strings.Split(all, joiner)
13 }
14
15 func saveTODOs(items []string, p fyne.Preferences) {
16   allItems := strings.Join(items, joiner)
17   p.SetString("items", allItems)
18 }

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Wheat and Chaff

    If you want to keep only the good photos from your digital collection, you have to find and delete the fails. Mike Schilli writes a graphical application with Go and the Fyne framework to help you cull your photo library.

  • Treasure Hunt

    A geolocation guessing game based on the popular Wordle evaluates a player's guesses based on the distance from and direction to the target location. Mike Schilli turns this concept into a desktop game in Go using the photos from his private collection.

  • Chip Shot

    We all know that the Fyne framework for Go can be used to create GUIs for the desktop, but you can also write games with it. Mike Schilli takes on a classic from the soccer field.

  • Programming Snapshot – Go Racing Game

    The fastest way through a curve on a racetrack is along the racing line. Instead of heading for Indianapolis, Mike Schilli trains his reflexes with a desktop application written in Go, just to be on the safe side.

  • Magic Cargo

    To be able to power up and shut down his NAS and check the current status without getting out of his chair, Mike Schilli programs a graphical interface that sends a Magic Packet in this month's column.

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More

News