如何修复 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。
如果问题解决了请告诉我。
这个问题我遇到过好几次了。对于我的情况...
转到文件 -> 使缓存无效/重新启动... -> 无效并重新启动
昨天遇到这个问题。尝试了一些修复此错误的建议,今天通过执行以下操作成功了:
将 pubspec.yaml 中的 SDK 版本至少更新到 2.7.0
(在此之前,我的 sdk 版本是 2.2.0,我认为这导致了
错误。至少 2.7.0 对我有用)。
environment:
sdk: ">=2.7.0 <3.0.0"
运行扑干净
转到文件 -> 使 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 并重新打开它,成功了
我上周看到了这个问题。这是您可以执行的操作,如果未固定则按此顺序移动:
确保你有 dart:async import
确保您的项目级 sdk 设置正确
文件 -> Project 中的项目结构,select 有效的 Project SDK。
在模块 -> myapp_android -> 依赖项中,select 一个有效的模块 SDK。
更新 pubspec.yaml
中的 SDK 版本
刷新缓存并重新启动 Android Studio。
文件 -> 使 Caches/Restart 和 select“使缓存无效并重新启动”
我在使用 vs code 时遇到了这个问题。我通过关闭并重新打开 vs 代码解决了这个问题。
很多时候它是由于代码中的一些其他编译错误而发生的,与期货无关。
尝试解决其他编译问题,错误可能会消失。
我正在尝试将我的 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。
如果问题解决了请告诉我。
这个问题我遇到过好几次了。对于我的情况...
转到文件 -> 使缓存无效/重新启动... -> 无效并重新启动
昨天遇到这个问题。尝试了一些修复此错误的建议,今天通过执行以下操作成功了:
将 pubspec.yaml 中的 SDK 版本至少更新到 2.7.0 (在此之前,我的 sdk 版本是 2.2.0,我认为这导致了 错误。至少 2.7.0 对我有用)。
environment: sdk: ">=2.7.0 <3.0.0"
运行扑干净
转到文件 -> 使 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 并重新打开它,成功了
我上周看到了这个问题。这是您可以执行的操作,如果未固定则按此顺序移动:
确保你有 dart:async import
确保您的项目级 sdk 设置正确
文件 -> Project 中的项目结构,select 有效的 Project SDK。 在模块 -> myapp_android -> 依赖项中,select 一个有效的模块 SDK。
更新 pubspec.yaml
中的 SDK 版本刷新缓存并重新启动 Android Studio。
文件 -> 使 Caches/Restart 和 select“使缓存无效并重新启动”
我在使用 vs code 时遇到了这个问题。我通过关闭并重新打开 vs 代码解决了这个问题。
很多时候它是由于代码中的一些其他编译错误而发生的,与期货无关。
尝试解决其他编译问题,错误可能会消失。