Search code examples
flutterfutureflutter-futurebuilder

Flutter: get bool value from snapshot


I am trying to show an on-boarding screen so to do so I call an async function where I get a Future<bool> weather this is the first time the user launched the app. Since its a Future value I have decided to use FutureBuilder.

Here is part of the code of what I am trying to do:

@override
Widget build(BuildContext context) {
return GetMaterialApp(
  home: FutureBuilder(
    future: firstLaunch, //Future<bool> value
    builder: (context, snapshot) {
      if (snapshot.hasData) {
        // What I would like to do is use either one of these lines
        // return _firstLaunch ? const OnboardingScreen() : const WelcomePage();
        // return snapshot.data ? const OnboardingScreen() : const WelcomePage();
      } else {
        return const WelcomePage();
      }
    },
  ),
);
}

The issue is that I am unable to use _firstLaunch within the FutureBuilder since its still considered a future value and snapshot.data does give me the correct value when I print it but the type is AsyncSnapshot<Object?> so I also cant seem to use it.

Does anyone have suggestions on how to solve this or possibly know of a better way to show the on-boarding screen?


Solution

  • Prefer documentation:

    https://api.flutter.dev/flutter/widgets/FutureBuilder-class.html

    Try this:

    @override
    Widget build(BuildContext context) {
    return GetMaterialApp(
      home: FutureBuilder<bool>(
        future: firstLaunch, //Future<bool> value
        builder: (BuildContext context, AsyncSnapshot<bool> snapshot) {
          if (snapshot.hasData) {
            return snapshot.data ? const OnboardingScreen() : const WelcomePage();
          } else {
            return const WelcomePage();
          }
        },
      ),
    );
    }