флаттер: тип возврата вставки sqflite

#sql #sqlite #flutter #sqflite

Вопрос:

Как и при любой операции с базой данных в sqflite , операция вставки также будет асинхронной функцией, и она вернет будущее типа int, так как метод вставки вернет идентификатор вставленной записи, но в моем случае он не возвращает идентификатор записи, он возвращает что-то вроде этого (Instance of 'Future<int>') . Я хочу напечатать фактическое числовое значение идентификатора моей записи.

Это мой код для вставки данных:

 Future<int> insert_into_Account(Account account) async {


    int id = await db.insert(
      'account',
      account.toMapAccount(),
      conflictAlgorithm: ConflictAlgorithm.replace,
    );
    return id;
  }

  // print data
Future testDb() async {
    db = await openDb();


    var id = insert_into_Account(Account(
      name: 'maliha',
      adress: 'eeee',
      balance: 123,
      issueDate: '333',
      telphone: 'ddd',
      type: 'eee',
    ));
    List lists = await db.rawQuery('select * from account');

    print(lists[0].toString());
    print(id.toString());
  }
 

и результат таков:

 I/flutter (11306): {accountNumber: 5, name: maliha, telphone: ddd, address: eeee, issueDate: 333, balance: 123, image: null, type: eee}
I/flutter (11306): Instance of 'Future<int>'
 

Ответ №1:

insert_into_Account Возврат Future<int> . Чтобы получить идентификатор, добавьте await спереди:

  var id = await insert_into_Account(Account(
      name: 'maliha',
      adress: 'eeee',
      balance: 123,
      issueDate: '333',
      telphone: 'ddd',
      type: 'eee',
    ));