FutureBuilder не возвращает данных, кроме экземпляра объекта

В настоящее время я работаю над приложением, которое в основном работает как база данных. Я хочу, чтобы он извлекал данные из моей базы данных 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 дает правильный результат. Я бы хотел чаевых! Заранее спасибо!


person daZeus    schedule 21.04.2020    source источник


Ответы (1)


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

person Haroon Ashraf Awan    schedule 21.04.2020