如何解决颤振中的“未来不是类型”错误?

时间:2020-10-20 12:46:53

标签: database flutter sqflite

我正在尝试将flutter应用程序的应用程序数据存储在数据库中,但是编译器始终显示异步函数“ Future不是一种类型”,并用红色下划线显示。我也尝试删除.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);
  }

 }

8 个答案:

答案 0 :(得分:2)

如果您运行的是 macOS,请打开 Activity Monitor 并终止 Dart(非常确定它占用了约 90% 的 CPU)。这将禁用 dart:async 库并使风扇运行得异常响亮

答案 1 :(得分:1)

就我而言,我缺少一个函数名,它在许多文件的许多位置出错。例如,而不是:

Future<bool> myFunction (int parm1)

不小心删掉了函数名,结果是:

Future<bool> (int parm1)

这给项目的许多文件带来了问题,给出了“未来不是一种类型”的错误。在错误列表中,也有缺少函数名的错误,所以更正了所有其他错误都消失了。

答案 2 :(得分:0)

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

升级后我也面对过一次,但是简单的IDE重新启动为我解决了这个问题。也许您可以尝试一下。

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

请告诉我它是否解决了问题。

答案 3 :(得分:0)

我前几次遇到这个问题。就我而言...

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

答案 4 :(得分:0)

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

  1. 将pubspec.yaml中的SDK版本更新为至少2.7.0 (在我的SDK版本为2.2.0之前,我认为这导致了 错误。至少2.7.0为我工作了。

    environment:
      sdk: ">=2.7.0 <3.0.0"
    
  2. 运行时保持干净

  3. 转到文件->使缓存无效/重新启动,然后选择“使缓存无效并重新启动”

答案 5 :(得分:0)

我上周看到了这个问题。这是您可以执行的操作,如果未修复,请按该顺序移动:

  1. 确保您有 dart:async 导入

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

File -> Project Structure 在 Project 中,选择有效的 Project SDK。 在 Modules -> myapp_android -> Dependencies 中,选择一个有效的 Module SDK。

  1. 更新 pubspec.yaml 中的 SDK 版本

  2. 刷新缓存并重启 Android Studio。

File -> Invalidate Caches/Restart 并选择“Invalidate Caches and Restart”

答案 6 :(得分:0)

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

答案 7 :(得分:-1)

关闭ide并重新打开它,它起作用了