FutureBuilder не возвращает никаких данных, кроме «Экземпляра объекта» - PullRequest
0 голосов
/ 22 апреля 2020

Я сейчас работаю над приложением, которое в основном работает как база данных. Я хочу, чтобы он извлекал данные из моей базы данных sqflite и использовал ее как текст. По какой-то причине я получаю только «Индекс объекта» вместо правильного значения в виде текста. Это мой код в database_helper.dart:

  Future<Obj> getName(int id) async {
    final db = await database;
    var res = await  db.query(table, columns: [objName], where: "objId= ?", whereArgs: [id]);
    await print(res);         //returns right value
    return await res.isNotEmpty ? Fish.fromMap(res.first) : Null ;
  }
}

, а это мой FutureBuilder

FutureBuilder(
            future: dbHelper.getName(1),
            builder: (BuildContext context, AsyncSnapshot snapshot) {
              if (snapshot.hasData) {
                return ListTile(
                    leading: Icon(Icons.message),
                    title: Text('${snapshot.data}'),
                    subtitle: Text(""),
                    onTap: () {
                      Navigator.push(
                        context,
                        MaterialPageRoute(builder: (context) => NextPage()),
                      );
                    }
                    );
            }
              return Container();
            },
          ),

Я чувствую, что перепробовал все. Печать res напрямую из database_helper.dart дает правильный результат. Я хотел бы немного чаевых! Заранее спасибо!

1 Ответ

0 голосов
/ 22 апреля 2020

FutureBuilder работает нормально и возвращает данные. У вас есть один объект Fi sh, возвращенный из вашего будущего getName. snapshot.data вернул один объект Fi sh. Для отображения любого свойства можно использовать snapshot.data.propertyName для Fi sh Model.

...