如何修复 flutter 中的 "Future isn't a type" 错误?

How can I fix "Future isn't a type" error in flutter?

我正在尝试将我的 flutter 应用程序的应用程序数据存储在数据库中,但编译器一直显示异步函数的“Future isn't a type”和红色下划线。我也尝试删除 .analysis-driver,但这没有帮助。 我该如何解决?

代码:

import 'package:sqflite/sqflite.dart';
import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart';
import 'dart:io';

class Db_Help{

  static final _db_name="Work_tasks.db";
  static final _db_version=1;
  static final table="Work Table";

  static final task_id="ID";
  static final task="Task";
  static final bool_check="Value";

  static Database _database;

  Db_Help._private_cons();
  static final Db_Help instance=Db_Help._private_cons();

  _initDatabase() async{
    Directory docu_dir=await getApplicationDocumentsDirectory();
    String path=join(docu_dir.path,_db_name);

    return await openDatabase(path, version: _db_version, onCreate: _onCreate);
  }

  Future<Database> get database async{

    if(_database!=null)
      return _database;

    _database=await _initDatabase();
    return _database;

  }

  Future _onCreate(Database db, int version) async{
    await db.execute('''
    CREATE TABLE $table (
    $task_id INTEGER PRIMARY KEY,
    $task TEXT NOT NULL,
    $bool_check INTEGER)
    ''');
  }

  Future<int> insert(Map<String,dynamic> row) async{
    Database db= await instance.database;
    return await db.insert(table, row);
  }

 }

如果您最近升级了 flutter,这可能会导致问题。

升级后我也遇到过一次,但是简单的 IDE 重启就解决了我的问题。也许你可以试试。

你可以看看我发现的这个线程here

如果问题解决了请告诉我。

这个问题我遇到过好几次了。对于我的情况...

转到文件 -> 使缓存无效/重新启动... -> 无效并重新启动

昨天遇到这个问题。尝试了一些修复此错误的建议,今天通过执行以下操作成功了:

  1. 将 pubspec.yaml 中的 SDK 版本至少更新到 2.7.0 (在此之前,我的 sdk 版本是 2.2.0,我认为这导致了 错误。至少 2.7.0 对我有用)。

    environment:
      sdk: ">=2.7.0 <3.0.0"
    
  2. 运行扑干净

  3. 转到文件 -> 使 Caches/Restart 无效和 select“使缓存无效并重新启动”

如果你是 运行ning macOS,打开 Activity 监控并终止 Dart(很确定它占用了 ~90% CPU)。这会禁用 dart:async 库并使风扇 运行 非常响亮

在我的例子中,我遗漏了一个函数名,它在许多文件的许多位置给出了错误。例如,而不是:

Future<bool> myFunction (int parm1)

不小心删除了函数名,所以结果是:

Future<bool> (int parm1)

这给项目的许多文件带来了问题,给出了错误“Future isn't a type”。在错误列表中,还有缺少函数名称的错误,因此更正了一个所有其他错误都消失了。

关闭 ide 并重新打开它,成功了

我上周看到了这个问题。这是您可以执行的操作,如果未固定则按此顺序移动:

  1. 确保你有 dart:async import

  2. 确保您的项目级 sdk 设置正确

文件 -> Project 中的项目结构,select 有效的 Project SDK。 在模块 -> myapp_android -> 依赖项中,select 一个有效的模块 SDK。

  1. 更新 pubspec.yaml

    中的 SDK 版本
  2. 刷新缓存并重新启动 Android Studio。

文件 -> 使 Caches/Restart 和 select“使缓存无效并重新启动”

我在使用 vs code 时遇到了这个问题。我通过关闭并重新打开 vs 代码解决了这个问题。

很多时候它是由于代码中的一些其他编译错误而发生的,与期货无关。

尝试解决其他编译问题,错误可能会消失。