【问题标题】:how to get mobile messages using flutter如何使用颤振获取移动消息
【发布时间】:2021-06-18 20:06:37
【问题描述】:

我必须从手机接收消息,所以我使用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");
        },
      ),
    );
  }
}

【问题讨论】:

  • 您是否请求读取短信权限?
  • 您是否计划仅支持 Android。在 iOS 上你不能这样做。在继续之前请确保。

标签: flutter dart flutter-layout flutter-dependencies dart-pub


【解决方案1】:

您描述的行为实际上是正常的。消息将作为 SmsMessage 类的实例返回。

当您尝试打印一个对象时,它会被转换为一个字符串。默认情况下,toString 方法将显示Instance of "Class name";在你的情况下,这就是为什么你有那个输出,你试图打印一个对象列表。

如果您想为每条消息显示正文,此代码 sn-p 应该可以帮助您:

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); });
}

【讨论】:

  • 感谢兄弟,它运行良好。实际上我在没有循环的情况下尝试了messages.body,我认为它会打印这些列表中的所有消息。非常感谢你
【解决方案2】:

这与 SMS 消息无关,只是不能以这种方式打印自定义对象列表。

循环遍历列表并打印要打印的每条消息的属性。就像您必须处理任何其他复杂对象一样。

【讨论】:

  • 实际上我打印它是因为知道消息列表的可用属性。不幸的是我没有得到。无论如何,谢谢。
  • 嗯,通常你在documentation中查找。
猜你喜欢
  • 2021-05-16
  • 2021-12-23
  • 2020-05-12
  • 2021-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-12
  • 2020-11-29
相关资源
最近更新 更多