Экземпляр «Будущее <Dynamic>» - PullRequest
0 голосов
/ 21 сентября 2019

Я вызываю BuildContext в виджете, используя таблицу в sqflite, один столбец содержит идентификаторы категорий, а заголовки находятся в другой таблице:

class HomeApp extends StatefulWidget {
  @override
  _HomeAppState createState() => _HomeAppState();
}

class _HomeAppState extends State<HomeApp> {
  ///Database
  DatabaseHelper helper = DatabaseHelper();
  List<Categoria> categorias = List();
  List<Registro> registros = List();

  @override
  void initState() {
    super.initState();

    helper.getAllCategorias().then((list) {
      setState(() {
        categorias = list;
      });
    });

    helper.getAllRegistros().then((list) {
      setState(() {
        registros = list;
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return ListView.builder(
      padding: EdgeInsets.only(top: 60.0),
      itemCount: registros.length,
      itemBuilder: (context, index) {
        return _faturamentoCard(context, index);
      },
    );
  }

  Widget _faturamentoCard(BuildContext context, int index) {
    return GestureDetector(
      onTap: () async {},
      child: Container(
        height: 70.0,
        margin: EdgeInsets.only(top: 20.0, left: 20.0, right: 20.0),
        decoration: BoxDecoration(
            color: registros[index].categoriaId == 1
                ? Colors.lightGreen
                : Colors.red,
            borderRadius: BorderRadius.circular(50.0),
            boxShadow: [
              BoxShadow(
                color: registros[index].categoriaId == 1
                    ? Colors.lightGreen[200]
                    : Colors.red[200],
                blurRadius: 10.0,
                spreadRadius: 5.0,
                offset: Offset(0, 5),
              )
            ]),
        child: Row(
          children: <Widget>[
            Align(
              alignment: Alignment.centerLeft,
              child: Padding(
                padding: EdgeInsets.only(left: 20.0),
                child: Icon(
                  Icons.monetization_on,
                  color: Colors.white,
                  size: 40.0,
                ),
              ),
            ),
            Padding(
              padding: EdgeInsets.only(left: 10.0),
              child: Text.rich(
                TextSpan(

Здесь я вызываю функцию:

                  text: _showCategoria(registros[index].id).toString(),
                  style: TextStyle(
                      color: Colors.white70,
                      fontWeight: FontWeight.bold,
                      fontSize: 10.0), // default text style
                  children: <TextSpan>[
                    TextSpan(
                        text: '\n${registros[index].titulo}',
                        style: TextStyle(
                            color: Colors.white,
                            fontWeight: FontWeight.bold,
                            fontSize: 25.0)),
                  ],
                ),
              ),
            ),
            Align(
              alignment: Alignment.centerRight,
              child: Padding(
                  padding: EdgeInsets.only(left: 80.0),
                  child: Text.rich(
                    TextSpan(
                      text: 'R\$',
                      style: TextStyle(
                          color: Colors.white70,
                          fontWeight: FontWeight.bold,
                          fontSize: 10.0), // default text style
                      children: <TextSpan>[
                        TextSpan(
                            text: registros[index].valor.toString(),
                            style: TextStyle(
                                color: Colors.white,
                                fontWeight: FontWeight.bold,
                                fontSize: 25.0)),
                      ],
                    ),
                  )),
            ),
          ],
        ),
      ),
    );
  }

Вот моя функция:

  Future<Categoria> _showCategoria(_id) async {
    helper.getCategoria(_id).then((list) {
      return list.titulo;
    });
  }
}

Когда я пытаюсь напечатать заголовки категорий, назначенные текстам на экране, появляется текст (Экземпляр «Будущее»).

Вот скриншот ошибки.Screen Shot

...