Flutter:类型'Future<bool>'不是类型'bool'在类型转换中的子类型

2 人关注

我试图根据返回的值显示一个小部件。但得到以下错误。

type 'Future<bool>' is not a subtype of type 'bool' in type cast

以下是导致错误的源代码。

  Future<bool> fetchCourses() async {
    List courses = [];
    final loggedInUser = FirebaseAuth.instance.currentUser;
    if (loggedInUser != null) {
      final userCollection = await FirebaseFirestore.instance.collection('users').doc(loggedInUser.uid).get();
      courses = userCollection.get('coursesEnrolled');
    if (courses.length == 0) {
      return false;
    } else {
      return true;
bool hasCourses = fetchCourses() as bool;
hasCourses ? ListAllUserEnrolledCourses() : Container(),
    
android
flutter
dart
dart-async
xpetta
xpetta
发布于 2021-08-10
2 个回答
Huthaifa Muayyad
Huthaifa Muayyad
发布于 2021-08-10
已采纳
0 人赞同
bool hasCourses = await fetchCourses();

你需要等待它完成,但不需要铸造它。

Tirth Patel
Tirth Patel
发布于 2021-08-10
0 人赞同

fetchCourses() returns a Future<bool> , use FutureBuilder to resolve the Future .

FutureBuilder<bool>(
  future: fetchCourses(),
  builder: (_, snapshot) {
    if (snapshot.hasData) {
      return snapshot.data ? ListAllUserEnrolledCourses() : Container();