微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter 在函数返回 true 时构建不同的小部件

如何解决Flutter 在函数返回 true 时构建不同的小部件

我有一个视图,用户可以在其中创建事件,如果用户创建事件,则通过共享首选项保存一个值,该值确定用户是否为管理员。如果用户现在转到视图,构建小部件应该构建不同的小部件,无论用户管理员还是访客。我有一个功能可以检查用户管理员还是访客。但是整个过程还不能正常工作,并且没有构建正确的小部件。 也许我犯了一个愚蠢的错误,或者这不是最好的做法,我会很感激每一点帮助!

这是我的构建方法

@override
  Widget build(BuildContext context) {
    return checkifadmin() != null ? buildGuestView() : buildAdminView();
  }

这是我的函数,用于检查它是否是管理员

Future<bool> checkifadmin() async {
    final prefs = await SharedPreferences.getInstance();
    final myevent = prefs.getString('event');
    if (myevent == widget.eventName) {
      print('Your are admin');
      return true;
    } else {
      print('you are a guest');
      return false;
    }
  }

功能完美运行,始终被正确识别。问题很可能出在构建方法

BuildGuestView 始终构建,当我将其更改为:

 return checkifadmin() != null ? buildAdminView() : buildGuestView(); 

buildadminview 总是构建。

解决方法

 return await checkifadmin() ? buildAdminView() : buildGuestView();
,

你应该使用FutureBuilder

FutureBuilder<bool>(
  future: checkIfAdmin(),builder: (_,snapshot) {
    final hasData = snapshot.data ?? false;
    return hasData ? buildAdminView() : buildGuestView();
  },)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。