Как показать строковое значение во флаттере sqflite

Я использую sqflite в flutter для локальной базы данных мобильных устройств. Я сделал тестовую таблицу и успешно распечатал значение таблицы, используя «debugprint».

Но я не могу распечатать значение на экране устройства. Может потому что асинхронный? (Я точно не знаю)

Я хочу напечатать значение на экране.

Это мой исходный код.

Это тело эшафота

  body: Center(
    child: Column(
      children: <Widget>[
        new Text( getFirst().toString() ),
      ],
    ),
  ),

А это функция. Значение debugPrint - это то, что я хотел.

Future<String> getFirst() async {

  final List<Map<String, dynamic>> maps = await _databaseHelper.db.rawQuery(
      " SELECT attr1 FROM Test_t");

  debugPrint(maps.toString());

  return maps.toString();
}

person Jun    schedule 25.03.2020    source источник


Ответы (1)


Вы не можете распечатать значение, так как оно асинхронное. getFirst () - возвращает будущее, чтобы получить значение, которое вам нужно дождаться.

Есть несколько способов сделать это:

FutureBuilder https://flutterigniter.com/build-widget-with-async-method-call/

https://flutter.dev/docs/development/ui/widgets/async

Также можно использовать состояния для этого ...

person Nuts    schedule 25.03.2020