我正在尝试打印短信,但我只是在打印“ ...的实例”
这是一个可在显示屏上显示智能手机中所有短信的应用程序
我正在使用短信插件
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中打印对象实例
答案 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(),
)