build method Null safety

  1. @override
dynamic build(
  1. dynamic context
)

Implementation

@override
Widget build(BuildContext context) {
  final AppLocalizations appLocalizations = AppLocalizations.of(context);
  final UserManagementProvider userManagementProvider =
      context.watch<UserManagementProvider>();
  return Center(
    child: Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        const Icon(
          Icons.grade,
          color: Colors.amber,
          size: 100,
        ),
        Padding(
          padding: const EdgeInsets.symmetric(vertical: MEDIUM_SPACE),
          child: Text(
            appLocalizations.thanks_for_contributing,
            style: Theme.of(context).textTheme.bodyText1,
          ),
        ),
        FutureBuilder<bool>(
            future: userManagementProvider.credentialsInStorage(),
            builder: (BuildContext context, AsyncSnapshot<bool> snapshot) {
              if (snapshot.hasData) {
                final bool isUserLoggedIn = snapshot.data!;
                if (isUserLoggedIn) {
                  // TODO(jasmeet): Show leaderboard button.
                  return EMPTY_WIDGET;
                }
                return Column(
                  children: <Widget>[
                    SmoothActionButton(
                      text: appLocalizations.sign_in,
                      onPressed: () async {
                        Navigator.maybePop<Widget>(context);
                        await Navigator.push<Widget>(
                          context,
                          MaterialPageRoute<Widget>(
                            builder: (_) => const LoginPage(),
                          ),
                        );
                      },
                    ),
                    Padding(
                      padding:
                          const EdgeInsets.symmetric(vertical: MEDIUM_SPACE),
                      child: Text(
                        appLocalizations.question_sign_in_text,
                        style: Theme.of(context).textTheme.bodyText2,
                        textAlign: TextAlign.center,
                      ),
                    ),
                  ],
                );
              } else {
                return EMPTY_WIDGET;
              }
            }),
        TextButton(
          child: Text(appLocalizations.close),
          onPressed: () => Navigator.maybePop<Widget>(context),
        ),
      ],
    ),
  );
}