【问题标题】:The argument type 'Future<xxx>' can't be assigned to the parameter type 'FutureOr<xxx>' Flutter & Dart参数类型 'Future<xxx>' 不能分配给参数类型 'FutureOr<xxx>' Flutter & Dart
【发布时间】:2021-01-29 11:23:15
【问题描述】:

如果我使用 String 作为类型,则此代码有效,但如果我使用类,则无效。

调用代码:

Future<Card> getCard() {
    return Future.value(currPack.getCard());
  }

这里是getCard方法:

  Future<Card> getCard() async {
    return Card("a", "b");
  }

这是 Card 类:

class Card  {
  String question = "";
  String answer = "";

  Card(String question, String answer) {
    this.question = question;
    this.answer = answer;
  }
}

当我使用 Card 类时,我收到一条警告消息:

参数类型“Future”不能分配给参数类型“FutureOr

如果我将返回类型从 Card 更改为 String 并将方法设置为返回字符串,它可以正常工作。

【问题讨论】:

  • Future&lt;Card&gt; 应该可以分配给FutureOr&lt;Card&gt;。请发布一个可重现的示例。你确定你没有单独的Card 类吗?也就是说,return Future.value(currPack.getCard()) 是多余的,可以只是 return currPack.getCard()

标签: flutter dart


【解决方案1】:

原来在材料设计中有一个类叫做 Card: 'package:flutter/src/material/card.dart'。

第一段代码是导入 material.dart 的屏幕的一部分(import 'package:flutter/material.dart')。

其他代码来自一个独立类,它不导入 material.dart,但引用本地卡片类(import 'package:flashcards/modules/Card.dart';)。

所以总结一下:错误是由于引用了两个同名的类而没有区分两者。

【讨论】:

    猜你喜欢
    • 2019-12-06
    • 2021-07-06
    • 1970-01-01
    • 2021-11-24
    • 2021-01-05
    • 2021-12-30
    • 1970-01-01
    • 2021-10-16
    • 2021-10-10
    相关资源
    最近更新 更多