首页 > 解决方案 > 参数类型'Future' 不能分配给参数类型 'FutureOr'颤振与飞镖

问题描述

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

调用代码:

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

这是 getCard 方法:

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

这是卡片类:

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

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

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

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

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

标签: flutterdart

解决方案


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

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

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

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


推荐阅读