如何打印实例?

时间:2019-10-21 18:41:17

标签: flutter dart

我正在尝试打印短信,但我只是在打印“ ...的实例”

这是一个可在显示屏上显示智能手机中所有短信的应用程序

我正在使用短信插件

class _HomeState extends State<Home> {


  Future<List> getSMS() async {


  SmsQuery query = new SmsQuery();
  List<SmsMessage> messages = await query.getAllSms;



  return messages;
}

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




@override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: FutureBuilder<List>(
      future: getSMS(),
      builder: (context, snapshot) {
       switch(snapshot.connectionState){
        case ConnectionState.none:
        case ConnectionState.waiting:

        default:
            if(snapshot.hasError){
              return new Center(
                  child: Text("Erro ao Carregar Dados :(",
                    style: TextStyle(
                        color: Colors.black,
                        fontSize: 25.0),
                    textAlign: TextAlign.center,)
              );
            } else {
            debugPrint(snapshot.data[0].toString());
          }
      }
        return new Center(
          child: Text(snapshot.data[0].toString(),
          style: TextStyle(
            color: Colors.black,
            fontSize: 25.0),
             textAlign: TextAlign.center,)
          );
       },
     ),
   );
 }
}

我所需要的只是在显示屏上打印短信,但我不知道如何在dart中打印对象实例

2 个答案:

答案 0 :(得分:1)

您只能打印字符串(因为这是打印控制台的功能)。如果一个类没有内置toString()方法,则需要弄清楚字符串在哪里。在该软件包上,看来SmsMessage具有一个body参数,它是一个字符串。由于您有SmsMessages列表,因此需要像forLoop这样遍历它们并打印其后续body参数。要打印第一条消息,您可以执行print(messages.first.body)

答案 1 :(得分:0)

如果要在控制台中打印所有消息:

print(snapshot.data.map((message) => message.body));

如果要在控制台中打印第一条消息:

print(snapshot.data.first.body);

如果您想在Text小部件中显示所有消息:

Text('${snapshot.data.map((message) => message.body)}')

如果您想在Text小部件中显示第一条消息:

Text('${snapshot.data.first.body}')

如果要显示包含所有消息的Text小部件的列表,请执行以下操作:

Column(
  children: snapshot.data.map((message) => Text('${message.body}')).toList(),
)