【问题标题】:willpopscope, The return type 'Future<dynamic>' isn't a 'Future<bool>'willpopscope,返回类型 'Future<dynamic>' 不是 'Future<bool>'
【发布时间】:2021-06-15 03:14:43
【问题描述】:

我正在尝试制作 willpopscope,但我不知道这里发生了什么

> @override
>     Widget build(BuildContext context) {
>       return WillPopScope(
>         onWillPop: () async {
>           return Navigator.pushReplacement(context,
>               MaterialPageRoute(builder: (context) {
>             return SelectKoas();
>           }));
>         },
>         child: new Scaffold(
>         
>         ),
>       );
>     }

这是错误 错误:根据闭包上下文的要求,返回类型“Future”不是“Future”。 (return_of_invalid_type_from_closure at [gigimu_koas] lib\LoginKoas.dart:52)

我该如何解决这个问题?

【问题讨论】:

  • 不是 100% 确定,但请尝试添加布尔类型参数 MaterialPageRoute&lt;bool&gt;(...)
  • 你能展示一下 SelectKoas() 是什么吗?

标签: android flutter dart


【解决方案1】:

异步函数必须返回 Future。下面是一个如何做到这一点的示例。

首先创建数据类型为 Future 的 redirectTo() 函数并编写导航器代码:

Future<bool> redirectTo() async {
    Navigator.push(context
        MaterialPageRoute(builder: (context) {
         return SecondPage();
       }));
    return true;
}

创建函数后调用它。

return WillPopScope(
       onWillPop: redirectTo,
      ),

【讨论】:

    【解决方案2】:

    因为错误表明onWillPop 采用Future&lt;bool&gt; 函数。所以在你的班级水平上:

    Future<bool> _onWillPop {
        Navigator.pushReplacement(context
            MaterialPageRoute(builder: (context) {
             return SelectKoas();
           }));
        return true;
    }
    

    然后

    return WillPopScope(
           onWillPop: _onWillPop,
          ),
    

    【讨论】:

      【解决方案3】:
          @override
             Widget build(BuildContext context) {
               return WillPopScope(
                 onWillPop: () async {
                   return Navigator.pushReplacement(context,
                       MaterialPageRoute(builder: (context) {
                     return SelectKoas();
                   }));
                  return Future.value(true); //this line will help
                 },
                 child: new Scaffold(
                 
                 ),
               );
         }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-11
        • 1970-01-01
        • 2020-01-01
        • 2019-12-05
        • 1970-01-01
        • 2020-10-13
        • 2020-09-24
        • 2020-09-11
        相关资源
        最近更新 更多