如何使用flutter获取手机消息
how to get mobile messages using flutter
我必须从手机接收消息,所以我使用 this plugin。它正在工作,但我没有收到任何消息,只是在控制台中打印结果 Instance of 'SmsMessage'
,但我完成了文档示例中指定的所有操作。我做错了吗?
源代码
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:sms/sms.dart';
class MessagesScreen extends StatefulWidget {
MessagesScreen({Key key}) : super(key: key);
@override
_MessagesScreenState createState() => _MessagesScreenState();
}
class _MessagesScreenState extends State<MessagesScreen> {
List _allMessages;
@override
void initState() {
super.initState();
getAllMessages();
}
Future getAllMessages() async {
SmsQuery query = new SmsQuery();
List<SmsMessage> messages = await query.getAllSms;
debugPrint("Total Messages : " + messages.length.toString());
print(messages);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Messages"),
),
body: ListView.builder(
itemCount: 1,
itemBuilder: (BuildContext context, int index) {
return Text("Test");
},
),
);
}
}
您描述的行为实际上是正常的。消息将作为 SmsMessage class.
的实例返回
当您尝试打印对象时,它被转换为字符串。默认情况下,toString 方法将显示 Instance of "Class name"
;在您的情况下,这就是您获得该输出的原因,您正在尝试打印对象列表。
如果对于每条消息,您都希望显示正文,此代码段应该可以帮助您:
Future getAllMessages() async {
SmsQuery query = new SmsQuery();
List<SmsMessage> messages = await query.getAllSms;
debugPrint("Total Messages : " + messages.length.toString());
messages.forEach((element) { print(element.body); });
}
这与 SMS 消息无关,您只是无法以这种方式打印自定义对象列表。
循环遍历列表并打印要打印的每条消息的 属性。就像您必须处理任何其他复杂对象一样。
我必须从手机接收消息,所以我使用 this plugin。它正在工作,但我没有收到任何消息,只是在控制台中打印结果 Instance of 'SmsMessage'
,但我完成了文档示例中指定的所有操作。我做错了吗?
源代码
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:sms/sms.dart';
class MessagesScreen extends StatefulWidget {
MessagesScreen({Key key}) : super(key: key);
@override
_MessagesScreenState createState() => _MessagesScreenState();
}
class _MessagesScreenState extends State<MessagesScreen> {
List _allMessages;
@override
void initState() {
super.initState();
getAllMessages();
}
Future getAllMessages() async {
SmsQuery query = new SmsQuery();
List<SmsMessage> messages = await query.getAllSms;
debugPrint("Total Messages : " + messages.length.toString());
print(messages);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Messages"),
),
body: ListView.builder(
itemCount: 1,
itemBuilder: (BuildContext context, int index) {
return Text("Test");
},
),
);
}
}
您描述的行为实际上是正常的。消息将作为 SmsMessage class.
的实例返回当您尝试打印对象时,它被转换为字符串。默认情况下,toString 方法将显示 Instance of "Class name"
;在您的情况下,这就是您获得该输出的原因,您正在尝试打印对象列表。
如果对于每条消息,您都希望显示正文,此代码段应该可以帮助您:
Future getAllMessages() async {
SmsQuery query = new SmsQuery();
List<SmsMessage> messages = await query.getAllSms;
debugPrint("Total Messages : " + messages.length.toString());
messages.forEach((element) { print(element.body); });
}
这与 SMS 消息无关,您只是无法以这种方式打印自定义对象列表。
循环遍历列表并打印要打印的每条消息的 属性。就像您必须处理任何其他复杂对象一样。