Skip to content

value of type 'Future<Database>' can't be assigned to a variable of type 'FutureOr<Database>' #35714

Open
@Hixie

Description

@Hixie

I don't understand this error. Analyzer says everything is fine.

E/flutter (27033): [ERROR:flutter/shell/common/shell.cc(178)] Dart Error: Unhandled exception:
E/flutter (27033): 'package:cruisemonkey/src/logic/disk_store.dart': error: lib/src/logic/disk_store.dart:16:12: Error: A value of type 'Future<Database>' can't be assigned to a variable of type 'FutureOr<Database>'.
E/flutter (27033):  - 'Future' is from 'dart:async'.
E/flutter (27033):  - 'Database' is from 'package:sqflite/sqflite.dart' ('file:///home/ianh/.pub-cache/hosted/pub.dartlang.org/sqflite-0.13.0+1/lib/sqflite.dart').
E/flutter (27033):  - 'FutureOr' is from 'dart:async'.
E/flutter (27033): Try changing the type of the left hand side, or casting the right hand side to 'FutureOr<Database>'.
E/flutter (27033):     return await openDatabase(
E/flutter (27033):            ^
E/flutter (27033): #0      _AsyncAwaitCompleter.start (dart:async/runtime/libasync_patch.dart:49:6)
E/flutter (27033): #1      DiskDataStore._init (package:cruisemonkey/src/logic/disk_store.dart:15:32)
E/flutter (27033): #2      new DiskDataStore (package:cruisemonkey/src/logic/disk_store.dart:11:33)
E/flutter (27033): #3      main (package:cruisemonkey/main.dart:26:12)
E/flutter (27033): #4      _startIsolate.<anonymous closure> (dart:isolate/runtime/libisolate_patch.dart:289:19)
E/flutter (27033): #5      _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:171:12)

The code in question is:

  static Future<Database> _init() async {
    return await openDatabase( // line 16
      '${await getDatabasesPath()}/config.db',
      version: 2,
      onUpgrade: (Database database, int oldVersion, int newVersion) async {
        final Batch batch = database.batch();
        if (oldVersion < 1) {
          batch.execute('CREATE TABLE credentials (username STRING, password STRING, key STRING, loginTimestamp INTEGER)');
          batch.execute('INSERT INTO credentials DEFAULT VALUES');
        }
        if (oldVersion < 2) {
          batch.execute('CREATE TABLE settings (id INTEGER PRIMARY KEY, value BLOB)');
        }
        await batch.commit(noResult: true);
      },
    );
  }

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-vmUse area-vm for VM related issues, including code coverage, and the AOT and JIT backends.legacy-area-front-endLegacy: Use area-dart-model instead.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions