Как я могу исправить Future не ошибка типа при флаттере?

Я пытаюсь сохранить данные моего приложения flutter в базе данных, но компилятор продолжает показывать, что Future не является типом для async func, и подчеркивается красным. Я также пробовал удалить .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);
  }

 }

РЕДАКТИРОВАТЬ: [РАЗРЕШЕНО]


person Ayush Nanglia    schedule 20.10.2020    source источник
comment
попробуйте импортировать dart: async   -  person LOfG    schedule 20.10.2020
comment
@LOfG не имеет значения   -  person Ayush Nanglia    schedule 20.10.2020
comment
В какой строке появляется ошибка?   -  person Miguel Ruivo    schedule 20.10.2020
comment
@MiguelRuivo все слова Future подчеркнуты красным цветом, вероятно, IDE не может его распознать   -  person Ayush Nanglia    schedule 20.10.2020
comment
Что, если вы import dart:async;?   -  person Miguel Ruivo    schedule 20.10.2020
comment
@MiguelRuivo Я уже пробовал, не сработало   -  person Ayush Nanglia    schedule 20.10.2020


Ответы (8)


Я видел эту проблему на прошлой неделе. Вот что вы можете сделать, двигаясь в указанном порядке, если не исправлены:

  1. Убедитесь, что у вас есть импорт dart: async

  2. Убедитесь, что sdk уровня вашего проекта установлен правильно

Файл - ›Структура проекта В Project выберите действительный Project SDK. В разделе «Модули» - ›myapp_android -› Зависимости »выберите допустимый SDK модуля.

  1. Обновите версию SDK в своем pubspec.yaml

  2. Очистите кеш и перезапустите Android Studio.

Файл - ›Invalidate Caches / Restart и выберите Invalidate Caches and Restart

person rasulfahad    schedule 22.06.2021

Столкнулся с этой проблемой вчера. Попробовал несколько предложений по исправлению этой ошибки, и сегодня он сработал, выполнив следующие действия:

  1. Обновите версию SDK в pubspec.yaml как минимум до 2.7.0 (до этого моя версия sdk была 2.2.0, и я думаю, что это вызывало ошибку. Как минимум 2.7.0 у меня сработало).

    environment:
      sdk: ">=2.7.0 <3.0.0"
    
  2. Запустите флаттер в чистоте

  3. Перейдите в раздел «Файл» ›« Недействительные кеши / перезапуск »и выберите« Недействительные кеши и перезапуск ».

person niggels    schedule 22.10.2020
comment
Моя версия SDK была такой же, но выполнение flutter clean и flutter pub get решает эту проблему! - person Mamrezo; 12.06.2021

Если вы недавно обновили флаттер, возможно, это вызывает проблему.

Я тоже столкнулся с этим один раз после обновления, однако простой перезапуск IDE решил проблему для меня. Может, ты попробуешь это.

Вы можете посмотреть эту ветку, которую я нашел здесь.

Сообщите мне, решит ли это проблему.

person Ayush Surana    schedule 20.10.2020
comment
Я пытался перезапустить среду IDE пару раз, но это не сработало, и, согласно связанному вами потоку, повторная установка может решить проблему, но это последнее, что нужно сделать, поэтому я стараюсь не повторять установить. - person Ayush Nanglia; 20.10.2020

Если вы используете macOS, откройте Activity Monitor и завершите работу Dart (совершенно уверен, что он занимает ~ 90% ЦП). Это отключает библиотеку dart: async и заставляет вентилятор работать чертовски громко.

person Phil Nguyen    schedule 03.01.2021

В моем случае мне не хватало имени функции, и это давало ошибку во многих позициях во многих файлах. Например, вместо:

Future<bool> myFunction (int parm1)

случайно удалил имя функции, поэтому результат был:

Future<bool> (int parm1)

Это дало проблему во многих файлах проекта, давая ошибку Future не тип. В списке ошибок также была ошибка отсутствующего имени функции, поэтому исправив это, все остальные ошибки исчезли.

person Fabio Pagano    schedule 10.02.2021

Я сталкивался с этой проблемой несколько раз раньше. В моем случае ...

Перейти к файлу - ›Недействительные кеши / перезапуск ... -› Недействительность и перезапуск

person Saiful Islam    schedule 20.10.2020
comment
Я пробовал это пару раз, у меня не получилось: / - person Ayush Nanglia; 20.10.2020
comment
Я фактически начал все это сейчас ???? Я дам вам знать, когда снова столкнусь с той же проблемой. Спасибо за вашу заботу - person Ayush Nanglia; 21.10.2020

Я столкнулся с этой проблемой, используя код vs. Я исправил проблему, закрыв и снова открыв код vs.

person Nayemuzzaman    schedule 01.07.2021

Закройте ide и снова откройте его, это сработало

person Uppu Abhinav    schedule 15.04.2021