'Future '在尝试访问Flutter中的Future SmsMessage变量的主体时,没有实例getter'body'错误

问题描述 投票:0回答:2

这是单独文件中的类

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'没有实例获取器'body'。接收方:“未来”的实例尝试调用:正文

android android-studio flutter asynchronous dart
2个回答
0
投票

检查是否有效:

import 'package:sms/sms.dart';

class SmsReader {
  SmsMessage sms;
  Future<dynamic> messageRead() async {
    SmsReceiver receiver = await SmsReceiver();
    receiver.onSmsReceived.listen((SmsMessage msg) {
      sms = msg;
    });
    return sms;
  }
}
class _HomePageState extends State<HomePage> {

  SmsReader smsReader = SmsReader();
  dynamic sms;

  @override
  void initState() {
    sms = smsReader.messageRead().then((data) => ...);
    super.initState();
  }

0
投票

进行更改

  Future<dynamic> messageRead() async {
    SmsReceiver receiver = SmsReceiver();
      receiver.onSmsReceived.listen((SmsMessage msg) {
        sms = msg;
      });
    return sms;
  }

smsReader.messageRead().then((value) => print(value.toString()));

让我知道它是否有效。

© www.soinside.com 2019 - 2024. All rights reserved.