37 lines
1.1 KiB
Dart
37 lines
1.1 KiB
Dart
import 'dart:async';
|
|
import 'package:sms_maintained/sms_maintained.dart';
|
|
import '../models/sms_message.dart';
|
|
|
|
class SmsReaderService {
|
|
Future<List<SmsMessage>> queryAllSms() async {
|
|
final messages = <SmsMessage>[];
|
|
final all = await SmsQuery().querySms(
|
|
kinds: [SmsQueryKind.Inbox, SmsQueryKind.Sent],
|
|
);
|
|
for (final s in all) {
|
|
messages.add(SmsMessage(
|
|
phoneNumber: s.address ?? '',
|
|
contactName: s.sender ?? s.address,
|
|
content: s.body ?? '',
|
|
type: s.kind == SmsQueryKind.Sent ? 'sent' : 'received',
|
|
smsDate: DateTime.fromMillisecondsSinceEpoch(s.date!).toUtc().toIso8601String(),
|
|
));
|
|
}
|
|
return messages;
|
|
}
|
|
|
|
Stream<SmsMessage> listenToIncoming() {
|
|
final controller = StreamController<SmsMessage>.broadcast();
|
|
SmsReceiver().onSmsReceived!.listen((SmsMessage sms) {
|
|
controller.add(SmsMessage(
|
|
phoneNumber: sms.address ?? '',
|
|
contactName: sms.sender ?? sms.address,
|
|
content: sms.body ?? '',
|
|
type: 'received',
|
|
smsDate: DateTime.now().toUtc().toIso8601String(),
|
|
));
|
|
});
|
|
return controller.stream;
|
|
}
|
|
}
|