2

我有一个需要发送给不同人的消息列表。在预览页面中,列表是有序的。但是当我按下发送时,它会一一进入WhatsApp聊天以随机发送消息。如何按预览消息中显示的顺序制作?有人可以帮我弄这个吗?我在这里调用预览页面:

 if (messages.isNotEmpty) {
          Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (BuildContext context) => PreviewPage(messages)));
        }

这是预览页面

import 'package:android_intent/android_intent.dart';
import 'package:flutter/material.dart';

class PreviewPage extends StatelessWidget {
  final List<Map> msgList;
  final String baseURL = "https://api.whatsapp.com/send?phone=";
  PreviewPage(this.msgList);

  @override

    widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Preview Message"),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () async {
          //msgList = SortedMap(Ordering.byValue());
          // print(msgList["phone"]);
          for (var msg in msgList) {
            print('printing message');
            print(msg["phone"]);
            if (msg["phone"] != null) {
              var url = "${baseURL}91${msg['phone']}&text=${msg['messages']}";
              print(url);
              AndroidIntent intent = AndroidIntent(
                  action: 'action_view',
                  data: Uri.encodeFull(url),
                  // flags: <int>[Flag.FLAG_ACTIVITY_CLEAR_TOP],
                  package: "com.whatsapp.w4b");
              await intent.launch();
            }
          }
        },
        child: Icon(Icons.send),
      ),
4

1 回答 1

2

尝试参考android-intent 包OnPressed更改为async和使用await intent.launch();

onPressed: () async {
            //msgList = SortedMap(Ordering.byValue());
            // print(msgList["phone"]);
            for (var msg in msgList) {
              print('printing message');
              print(msg["phone"]);
              if (msg["phone"] != null) {
                var url = "${baseURL}91${msg['phone']}&text=${msg['messages']}";
                print(url);
                AndroidIntent intent = AndroidIntent(
                    action: 'action_view',
                    data: Uri.encodeFull(url),
                    // flags: <int>[Flag.FLAG_ACTIVITY_CLEAR_TOP],
                    package: "com.whatsapp.w4b");
                await intent.launch();
              }
            }
          },

下面给出的代码用于排序。创建了一个类来组织消息详细信息,例如联系电话、联系人姓名、消息内容。这有助于sort以后根据联系人姓名应用功能。如果需要sort根据其他属性进行修改。

List.sort的参考

class MessageHolder {
  int contactNumber;
  String messageContent;
  String contactName;
  MessageHolder({this.contactName, this.contactNumber, this.messageContent});
  
  @override
  String toString(){
    return '$contactName, $contactNumber, $messageContent';
  }
}

void main() {
  List<MessageHolder> messages = [
    MessageHolder(
        contactName: 'DEF', contactNumber: 2345678901, messageContent: 'Two'),
    MessageHolder(
        contactName: 'ABC', contactNumber: 1234567890, messageContent: 'One'),
    
    MessageHolder(
        contactName: 'GHI', contactNumber: 3456789012, messageContent: 'Three'),
    MessageHolder(
        contactName: 'XYZ', contactNumber: 3456789012, messageContent: 'Four'),
  ];
  
  List<MessageHolder> sortedMessages = messages..sort((a, b) => a.contactName.compareTo(b.contactName));
  
  for(MessageHolder message in sortedMessages){
    print(message);
  }
}

输出:

ABC, 1234567890, One
DEF, 2345678901, Two
GHI, 3456789012, Three
XYZ, 3456789012, Four
于 2020-07-06T12:22:13.783 回答