From: Kevin Worth Date: Mon, 4 May 2020 00:21:31 +0000 (-0400) Subject: Add initState to start the async call to fetch player X-Git-Url: https://git.cworth.org/git?p=lmno.games;a=commitdiff_plain;h=6382d12f524932ff1d26957e86428047714b128c Add initState to start the async call to fetch player initState is a good place to do asynchronous calls that we just need to happen one time at the beginning. So, in initStart we fetch the player and put it in a Future, and then when (each and every time) build gets called, it uses what has been fetched or shows the spinner if the fetch hasn't completed successfully yet. --- diff --git a/flutterempires/lib/main.dart b/flutterempires/lib/main.dart index 7bb1c7d..816b13e 100644 --- a/flutterempires/lib/main.dart +++ b/flutterempires/lib/main.dart @@ -53,6 +53,14 @@ class MyHomePage extends StatefulWidget { class _MyHomePageState extends State { int _counter = 0; + Future futurePlayer; + + @override + void initState() { + super.initState(); + futurePlayer = Player.fetchPlayer(); + } + void _incrementCounter() { setState(() { // This call to setState tells the Flutter framework that something has @@ -107,7 +115,13 @@ class _MyHomePageState extends State { ), Spacer(flex: 1), FutureBuilder( + future: futurePlayer, builder: (context, snapshot) { + if (snapshot.hasData) { + return Text(snapshot.data.name); + } else if (snapshot.hasError) { + return Text("${snapshot.error}"); + } // By default, show a loading spinner. return CircularProgressIndicator(); },