这是一个单独文件中的类
import 'package:sms/sms.dart';
class SmsReader {
SmsMessage sms;
dynamic messageRead() async {
SmsReceiver receiver = SmsReceiver();
receiver.onSmsReceived.listen((SmsMessage msg) {
sms = msg;
});
return sms;
}
}
该文件是创建对象并调用func的位置
class _HomePageState extends State<HomePage> {
SmsReader smsReader = SmsReader();
dynamic sms;
@override
void initState() {
sms = smsReader.messageRead();
super.initState();
}
现在,当我尝试
print(sms.body)
,出现此错误类“Future”没有实例 getter “body”。
接收方:“ future ”的实例
尝试致电: body
最佳答案
您正在将messageRead
定义为:
dynamic messageRead() async {
所有
async
函数都应返回一个Future
,您正在返回的dynamic
定义了“这里的每种类型都可以”。稍后,您不使用
messageRead
调用await
,因此它仅返回Future
。您需要将代码更改为await
messageRead
:Future<SmsMessage> messageRead() async {
...
SmsMessage sms;
...
smsReader.messageRead().then((newSms) => sms = newSms);
您需要使用
then
而不是await
,因为您无法在await
函数中使用initState
。