将条件的“Future”更改为静态类型“bool”

2024-02-06

这个问题真的非常相似this one https://stackoverflow.com/questions/54691370/flutter-returning-a-bool-type-from-a-futurebool-method。我已遵循已接受的答案,但没有发生任何事情。

我尝试修改我的第一个登陆页面main.dart无论是HomePage() or OnBoardingPage()。我从共享首选项获取数据 (bool) 并首先进行检查。

如您所见,OnBoardingPage()只是一个一次性事件屏幕。

这里是代码:

class MyApp extends StatelessWidget {
  SharedPrefs prefs = SharedPrefs();

  Future<bool> _initBro() async {
    var redirect = await prefs.read("onboard") ?? false;
    print("main => $redirect");
    return redirect;
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        fontFamily: 'CM Sans Serif',
        platform: TargetPlatform.android,
      ),
      home: (_initBro().then(val => val == true)) ? HomePage() : OnBoardingPage(),
      // home: HomePage(),
      debugShowCheckedModeBanner: false,
    );
  }
}

问题出在home: line.

我不太明白为什么它仍然给我这样的错误。 我已经用等待更改了代码,但是,它似乎给我带来了更多麻烦。我也做了一些修改,如下所示:

home: _initBro().then((val) {
  return (val) ? HomePage() : OnBoardingPage();
}),

但还是没有希望。

我对 Flutter 很陌生,对 Dart 也很陌生。任何帮助将非常感激。

非常感谢大家的关注。


您可以使用FutureBuilder

class MyApp extends StatelessWidget {
  SharedPrefs prefs = SharedPrefs();

  Future<bool> _initBro() async {
    var redirect = await prefs.read("onboard") ?? false;
    print("main => $redirect");
    return redirect;
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        fontFamily: 'CM Sans Serif',
        platform: TargetPlatform.android,
      ),
      home: FutureBuilder(builder: (context, AsyncSnapshot<bool> snapshot) {
        if (snapshot.hasData)
          return snapshot.data ? HomePage() : OnBoardingPage();
        else
          return Container();
      },
      future: _initBro(),);
    }
      debugShowCheckedModeBanner: false,
    );
  }
}

它同步返回小部件。如果还没有数据 - 则返回空Container, 什么时候_initBro()返回值 - 此方法将返回所需的小部件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将条件的“Future”更改为静态类型“bool” 的相关文章

随机推荐

  • 在 Windows 10 分配的访问权限中运行 Chrome kiosk 模式

    好消息是Windows 10分配访问支持运行桌面应用程序 Win 8 1仅支持运行通用应用程序 我想在命令行中使用 kiosk 运行 Chrome 的 kiosk 模式 本文底部有教程 https technet microsoft com
  • 处理单例实例 (C#)

    如果单例实现了 IDisposable 那么处置和重新创建实例的正确方法是什么 一种方法是保留 dispose 标志并在 Instance 属性中检查它 但我不确定这是执行此操作的正确方法 一个简单的例子 public sealed cla
  • 盲目地用代替可以吗?

    Note I know b 是展示性的并且 span style font weight none span b
  • 在 Mac OSX 下检测连接的 USB 设备

    首先声明 对于 Mac 编程 我是一个新手 然而 我有一项任务需要与设备进行 USB 通信 所以我想我将从基本的东西开始 我从here https developer apple com library mac samplecode USB
  • 如何在 moment.js 中获取月份的简称?

    我已成功找到月份的全名 但我想要月份的简称 谁能帮我 我正在使用 Moment js 我已成功找到月份 但我想要简短的形式这是我的代码 var date var Month moment date YYY MM DD format DD M
  • 在 magento 前端显示缺货状态

    我需要在产品页面 前端 上显示当前商品仅用于延期交货 并且没有库存 目前 我的库存显示了可用数量 而缺货的产品则没有显示任何内容 有谁知道我可以在 view phtml 文件中放入一个代码 该代码只会在那些设置为缺货的产品上显示一条消息 T
  • 我应该使用 Java 中的哪个线程池?

    有大量的任务 每个任务都属于一个组 要求是每组任务应该像在单线程中执行一样串行执行 并且在多核 或多CPU 环境中吞吐量应该最大化 注意 组的数量也与任务数量成正比 最简单的解决方案是使用 ThreadPoolExecutor 并同步 或锁
  • sklearn:关闭警告

    当我适合的时候sklearn s LogisticRegression使用 1 列 pythonpandas DataFrame not a Series对象 我收到此警告 Library Python 2 7 site packages
  • 设置一个二维数组,稍后更改大小 - C

    是否可以在 C 中声明一个二维数组 然后再设置其大小 我知道在 C 中你必须处理内存等问题 但尽管我进行了所有搜索 但我找不到这个问题的答案 我当前的例子是 int boardsize linewin char array 1 1 boar
  • .xib 中的 UITableView 没有内容属性

    XCode 4 2 iOS 5 为了重用表格视图 带有导航栏和编辑 添加按钮 我创建了一个UITableViewController拥有自己的子类 xib 但是 当我添加一个UITableView to my xib的主视图内容属性 我想将
  • 如何为单个 If 语句执行多个条件

    我试图在 vbscript 中的单个 If 语句上执行两个条件 应该很简单 但它不起作用 就像是 If Not fileName testFileName fileName lt gt Then Else 我用两个 if 语句来让它工作 但
  • 使CPU的缓存失效

    当我的程序执行具有获取语义的加载操作 具有释放语义的存储操作或可能是完整栅栏时 它会使 CPU 的缓存无效 我的问题是 缓存的哪一部分实际上失效了 只有保存我使用的获取 释放变量的缓存行 或者整个缓存都失效了 L1 L2 L3 等等 当我使
  • 将 Office365 REST 日历 ID 映射到 EWS 日历项目 ID

    使用交换推送通知 https msdn microsoft com en us library aa566188 v exchg 80 aspx我一直在创建一项同步 Office365 用户的日历数据的服务 我一直在使用以下组合Office
  • 如何在 MYSQL 中获取主管姓名而不是 UserID + INNER JOIN

    这是我的表格 从用户中选择 USERID NAME STATUS 1 AAA Member 2 BBB Member 3 CCC Supervisor 4 DDD Member 5 EEE Member 从出席中选择 NO DATE SUP
  • 在自定义行为上绑定依赖属性时出错

    我正在探索 Silverlight 附加行为机制 以便在我的 Silverlight 应用程序中使用模型 视图 视图模型模式 首先 我试图让一个简单的 Hello World 工作 但我完全陷入了一个错误 无法找到解决方案 我现在拥有的是一
  • 如何计算图像是横向还是纵向

    我正在使用 jquery 创建一个图片库 有没有可能使用jquery计算图像是横向还是纵向 感谢您的支持 您可以简单地比较图像的宽度和高度 var someImg someId if someImg width gt someImg hei
  • 将类的序列化放入DLL中

    我正在寻找一个 工作 示例 用于在 DLL 中外部序列化类结构 目前我找不到任何例子 Boost 文档只是说明一些宏 论坛和新闻组只是讨论具体问题及其解决方案 所以我要求提供一个 外部 序列化类结构的示例 如下所示 除了类代码之外 我还添加
  • OSX 安装 Rsymphony - 链接标头和库

    symphony 已在终端中正确安装和测试 当尝试从源代码安装 Rsymphony 时 R 抱怨缺少标头和库 非常感谢任何指点 谢谢你 symphony安装目录 Users timo Applications symphony R安装命令
  • 使用 php str_getcsv 函数将 csv 文件数据转换为数组

    我有类似使用创建的字符串fputcsv http php net manual en function fputcsv php Date Name Hours 2013 01 02 Test User 7 59 2013 01 03 Tes
  • 将条件的“Future”更改为静态类型“bool”

    这个问题真的非常相似this one https stackoverflow com questions 54691370 flutter returning a bool type from a futurebool method 我已遵
Powered by Hwhale