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

Viewed 10518

I'm trying to store app data of my flutter application in the database, but the complier keeps showing "Future isn't a type" for async func and underlines in red. I've tried removing .analysis-driver as well, but that doesn't help. How can I fix it ?

Code:

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);
  }

 }
9 Answers

Faced this problem yesterday. Tried a couple of suggestions for fixing this error and today it worked by doing the following:

  1. Update your SDK version in your pubspec.yaml to at least 2.7.0 (Before that my sdk version was 2.2.0 and I think that caused the error. At least 2.7.0 worked for me).

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

  3. Go to File -> Invalidate Caches/Restart and select "Invalidate Caches and Restart"

In my case I was missing a function name, and it gave error in many positions in many files. For example, instead of:

Future<bool> myFunction (int parm1)

accidentally deleted the function name, so the result was:

Future<bool> (int parm1)

This gave problem in many files of the project, giving the error "Future isn't a type". In the errors list, there was also the error of the missing function name, so correcting that one all other errors disappeared.

I saw this problem last week. Here is what you can do, moving in that order if not fixed:

  1. Make sure you have the dart:async import

  2. Make sure your project level sdk is set correctly

File -> Project Structure In Project, select valid Project SDK. In Modules -> myapp_android -> Dependencies, select a valid Module SDK.

  1. Update the SDK version in your pubspec.yaml

  2. Flush your cache and restart Android Studio.

File -> Invalidate Caches/Restart and select "Invalidate Caches and Restart"

If you have recently upgraded flutter maybe that is causing an issue.

I too faced it once after an upgrade, however a simple IDE restart solved the issue for me. Maybe you can try that.

You can have a look at this thread that I found here.

Do let me know if it solves the issue.

If you are running macOS, open Activity Monitor and terminate Dart (quite sure that it take up ~90% CPU). This disables the dart:async library and makes the fan run freaking loud

I faced this problem several time before. For my case...

Go to File -> Invalidate Caches / Restart... -> Invalidate and Restart

I faced this problem by using vs code. I fixed the problem by closing and reopening the vs code .

A lot of times it happens because of some other compilation error in the code, unrelated to futures.

Just try to solve other compilation problems and the error may go away.

Close the ide and reopen it, It worked

Related