这是一个单独文件中的类

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

08-06 10:15