首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Flutter:“Future<dynamic>”不是bool类型的子类型

Flutter:“Future<dynamic>”不是bool类型的子类型
EN

Stack Overflow用户
提问于 2019-07-27 21:01:40
回答 4查看 15.8K关注 0票数 8

我正在尝试实现一个简单的登录/注销功能。我的场景是这样的:

我有两个页面(登录页面和主页),在main.dart中,我使用SharedPreferences检查用户是否已经登录,如果用户已经登录,我在单击按钮时将布尔值设置为true。

我的问题是,我有一个routeLogin函数,我创建的选择之间的主页和登陆页。我得到了这个错误:

代码语言:javascript
复制
I/flutter ( 9026): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter ( 9026): The following assertion was thrown building MyApp(dirty):
I/flutter ( 9026): type 'Future<dynamic>' is not a subtype of type 'bool'
I/flutter ( 9026):
I/flutter ( 9026): Either the assertion indicates an error in the framework itself, or we should provide substantially
I/flutter ( 9026): more information in this error message to help you determine and fix the underlying cause.
I/flutter ( 9026): In either case, please report this assertion by filing a bug on GitHub:
I/flutter ( 9026):   https://github.com/flutter/flutter/issues/new?template=BUG.md

这是我的代码:

代码语言:javascript
复制
import 'package:credit/src/pages/landing.dart';
import 'package:flutter/material.dart';
import 'package:credit/src/pages/credit/home.dart';
import 'package:shared_preferences/shared_preferences.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.

 bool checkValue;
 checkLoginValue () async{
   SharedPreferences loginCheck = await SharedPreferences.getInstance();
   checkValue = loginCheck.getBool("login");
   }
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Test App',
       debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: routeLogin());
      //home: LandingPage());      
  }

  routeLogin()
  {
    print("Check value");
    if (checkValue == null){
      return LandingPage();
    }
    else{
      return HomePage();
    }
    
  }
}

请让我知道我哪里出错了,我是新来的。

EN

Stack Overflow用户

发布于 2019-07-27 21:29:35

checkValue的值为Future,而不是bool

代码语言:javascript
复制
Future checkValue;

因此,您可以检查它是否返回了值或错误。

代码语言:javascript
复制
routeLogin() {
  print("Check value");
  checkValue.then((res) {
    return LandingPage();
  }).catchError(
    (e) {
      return HomePage();
    },
  );
}
票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57232397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档