簡體   English   中英

如何修復 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);
  }

 }

昨天遇到了這個問題。 嘗試了一些修復此錯誤的建議,今天它通過執行以下操作起作用:

  1. 將 pubspec.yaml 中的 SDK 版本更新為至少 2.7.0(在此之前我的 sdk 版本是 2.2.0,我認為這會導致錯誤。至少 2.7.0 對我有用)。

     environment: sdk: ">=2.7.0 <3.0.0"
  2. 運行 flutter clean

  3. 轉到文件 -> 使緩存無效/重新啟動並選擇“使緩存無效並重新啟動”

如果您運行的是 macOS,請打開 Activity Monitor 並終止 Dart(非常確定它占用了大約 90% 的 CPU)。 這將禁用 dart:async 庫並使風扇運行得異常響亮

如果您最近升級了 flutter,可能會導致問題。

升級后我也遇到過一次,但是一個簡單的 IDE 重新啟動為我解決了這個問題。 也許你可以試試。

你可以看看我在這里找到的這個線程。

如果它解決了問題,請告訴我。

我上周看到了這個問題。 這是您可以執行的操作,如果不固定,請按該順序移動:

  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”

就我而言,我缺少一個函數名,它在許多文件的許多位置出錯。 例如,而不是:

Future<bool> myFunction (int parm1)

不小心刪除了函數名,結果是:

Future<bool> (int parm1)

這給項目的許多文件帶來了問題,給出了“未來不是一種類型”的錯誤。 在錯誤列表中,也有缺少函數名稱的錯誤,因此糾正一個所有其他錯誤都消失了。

我以前多次遇到過這個問題。 對於我的情況...

轉到文件 -> 使緩存無效/重新啟動... -> 無效並重新啟動

我通過使用 vs 代碼遇到了這個問題。 我通過關閉並重新打開 vs 代碼解決了這個問題。

很多時候它是由於代碼中的一些其他編譯錯誤而發生的,與期貨無關。

只需嘗試解決其他編譯問題,錯誤可能會消失 go。

關閉ide並重新打開它,它起作用了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM