【问题标题】:Argument type 'Future<bool?> Function()' can't be assigned to the parameter type 'Future<bool>'参数类型“Future<bool?> Function()”不能分配给参数类型“Future<bool>”
【发布时间】:2021-10-16 20:08:13
【问题描述】:

我将bool 值存储在共享首选项中,并使用future&lt;bool&gt; 文件中的future&lt;bool&gt; 方法获取bool 数据。

我需要使用未来的构建器来处理这个功能,这就是我遇到错误的地方:

Argument type 'Future<bool?> Function()' can't be assigned to the parameter type 'Future<bool>'

这是我的代码:

Authenticate extends StatelessWidget {
  @override 
  Widget build(BuildContext context) {
    return Scaffold
      body: FutureBuilder<bool> (
        future: getBoolValuesSF,
        builder: (BuildContext context, AsyncSnapshot<bool?> snapshot) {
          if (snapshot.data == false) {
            return SignInPage();
          } else {
            return _handleAuth();
          }
        },
      ), // FutureBuilder
    ); // Scaffold
  }

  Widget _handleAuth() {
    return StreamBuilder<User?>(
      stream: FirebaseAuth.instance.authStateChanges(),
      builder: (BuildContext context, snapshot) {
        return (!snapshot.hasData) ? SignInPage() : FirstNavigation();
      },
    ); // StreamBuilder
  }

  Future<bool?> getBoolValues SF() async {
    SharedPreferences loginCheck = await SharedPreferences.getInstance(); 
    return loginCheck.getBool("state");
  }
}

【问题讨论】:

标签: flutter dart


【解决方案1】:

尝试调用该函数。

future: getBoolValuesSF()

您可能还需要更改此函数的返回类型,因为您无法将Future&lt;bool?&gt; 分配给Future&lt;bool&gt;。换句话说,确保你的函数总是返回一个布尔值(而不是null)并相应地改变返回类型。

【讨论】:

  • 谢谢!它对我有用。我还将正文:FutureBuilder 更改为正文:FutureBuilder
猜你喜欢
  • 2021-10-10
  • 2021-11-24
  • 2020-08-23
  • 2021-04-07
  • 2021-07-06
  • 1970-01-01
  • 2022-01-17
  • 2021-08-11
  • 1970-01-01
相关资源
最近更新 更多