无法将 Future<Class> 类型的值分配给 Class 类型的实体

A value of type Future<Class> cannot be assigned to an entity of type Class

我希望能够 return 一个 Class 在我的例子中 class 名字是 Car。我想 return 它从我的供应商到我的屏幕。在我的提供者中,我有这个方法应该 return class Car provider.dart

的一个对象
Future<Car> fetchCarById(int carId) async {
  final url =
      'demourl';
  try {
    final response = await http.get(url);
    final extractedCar = json.decode(response.body);
    if (extractedCar == null) {
      return null;
    }
    final Car selectedCar = Car(
        id: extractedCar['ID'],
        brand: extractedCar['Brand'],
        model: extractedCar['Model'],
    final List<Car> loadedProducts = [];
    loadedProducts.add(selectedCar);
    _items = loadedProducts;
    notifyListeners();
    return selectedCar;
  } catch (error) {
    throw error;
  }
}

但是我收到了这个错误

A value of type Future cannot be assigned to an entity of type Car

当我尝试从我的屏幕上获取 Car 对象时 screen.dart

final Car car = Cars(auth.token).fetchCarById(carId);

我看到可以用 FutureBuilder 来完成,但是有没有更简单的方法来做到这一点?我不想修改 screen.dart 文件中的代码。有可能吗?

您的方法被标记为 async,因此不是 return Car,而是 Future<Car>。在您的分配中,您已将类型设置为 Car 并且出现错误,因为变量类型与被调用方法的 returned 值之间存在类型不匹配。

returned Future 表示该值正确未准备好,您需要等待该值。这可以通过使用 await 关键字在异步方法中完成:

Future<void> method() async {
  final Car car = await Cars(auth.token).fetchCarById(carId);
}

或者您可以添加一个回调方法,当值准备好时调用:

void method() {
  final Car car =
      Cars(auth.token).fetchCarById(carId).then((car) => print(car));
}

我建议你阅读有关 Dart 中异步编程的文档:https://dart.dev/codelabs/async-await